Belajar Coding Meskipun Sibuk

Belajar Coding Meskipun Sibuk

Belajar coding bagi seorang engineer adalah aktifitas yang perlu dilakukan secara terus-menerus. Tentu saja yang kami maksud dengan ngoding bukan sekedar mempelajari sintaksis dari bahasa pemrograman tertentu. Bukan juga sekedar mempelajari fungsi-fungsi bawaan yang disediakan oleh sebuah bahasa pemrograman.

Kita bisa belajar memahami bagaimana engineer lain menyelesaikan masalah dan mempelajari pola pikir dan prinsip dalam menyelesaikan masalah tersebut. Kita juga bisa mengubah suatu hal yang dianggap magic dan menjadikannya realita yang bisa kita pahami.

Yang tidak kalah pentingnya, kita bisa terus belajar sehingga meningkatkan kualitas dampak yang bisa kita lahirkan. Hal-hal ini dapat meningkatkan kualitas dari kode yang ditulis.

💻 Mulai Belajar Pemrograman

Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.

Daftar Sekarang

Belajar coding sepatutnya bisa menjadi aktifitas yang seru, bahkan dinanti-nanti. Namun, bagaimana caranya kita bisa terus belajar coding di tengah kesibukan sehari-hari? Kami ingin berbagi beberapa cara yang kami gunakan untuk terus mengasah kemampuan ngoding.

Belajar Coding Ketika Memecahkan Masalah

Beberapa saat yang lalu, kami sedang mengeksplorasi masalah race condition pada aplikasi web. Salah satu masalahnya adalah bagaimana agar kita bisa mengirim request dalam jumlah banyak dalam waktu yang singkat? Tentu saja tanpa men-DDoS aplikasi webnya ya.

Sebagai engineer yang bahasa pemrograman sehari-harinya adalah PHP, kami bisa saja membuat alatnya menggunakan PHP dan beragam libraries yang ada di ekosistem PHP. Namun, kami melihat ini sebagai kesempatan untuk belajar Golang. Ini adalah bahasa pemrograman yang ingin kami dalami di tahun 2022.

Untuk memudahkan proses belajar ini, maka kami mencari project Golang di GitHub. Dari sekian opsi yang ada, kami memutuskan untuk mempelajari project https://github.com/TheHackerDev/race-the-web

Dari project race-the-web ini, kami mempelajari bagaimana cara mengirim HTTP request di Golang. Mulai dari beragam opsi yang disediakan Golang untuk mengonfigurasi request-nya, pengaturan HTTP Headers hingga pengaturan proxy (misalnya bila kita ingin memantau request yang dikirim dan response yang diterima). Kami juga mempelajari bagaimana race-the-web menggunakan goroutine untuk menjalankan banyak request secara bersamaan.

Ketika mempelajari kodenya, kami menemukan bahwa proses mempersiapkan request-nya digabung dengan proses mengirim request-nya. Kami bertanya-tanya, bagaimana seandainya bila dua proses ini dipisah? Harus dicoba. Ini adalah kesempatan untuk ngoding Golang.

Maka mulailah kami ngoding, meskipun dengan perasaan canggung. Maklum, ini bahasa yang jarang kami pakai. Kami harus sering-sering baca dokumentasi dan mencari tahu bagaimana sintaksis di Golang untuk mengerjakan tugas tertentu.

Namun, yang sangat memesona dari proses belajar ini adalah ketika kami harus mendalami topik value semantic dan pointer semantic di Golang. Ini adalah salah satu topik yang membuat kami sangat mengapresiasi bagaimana Golang dirancang oleh para pembuatnya.

Ketika Tidak Sesuai Rencana

Proses belajar seperti ini tidak harus lama. Perubahan yang ingin kami ubah berhasil diselesaikan kurang dari sehari. Program berjalan lancar. Tapi apakah kami berhasil menyimulasikan race condition dengan program di atas?

Tidak. Ternyata race condition dapat disimulasikan dengan lebih sederhana, tetapi lebih efektif menggunakan bash script yang terdiri atas 5 baris saja.

Merasa rugi? Jelas tidak. Inilah gunanya belajar. Apa yang kita utak-atik sekarang belum tentu akan kita pakai. Selalu terbuka terhadap opsi itu.

Ketika belajar model ini, jangan lupa untuk memasang batas waktu. Ini akan menjaga kita untuk tetap fokus dan memprioritaskan apa yang harus dipelajari.

Belajar Dengan Memahami Cara Kerja Sebuah Teknologi

Sejak lama kami penasaran dengan bagaimana internet itu bekerja. Bagaimana ketika kita mengetikkan sebuah alamat, maka beberapa saat kemudian kita bisa membaca konten dari website yang diminta.

Mulailah pengembaraan kami selama lebih dari 6 bulan ke dunia network. Kurang lebih 8 jam dalam seminggu, kami luangkan waktu mempelajari topik-topik seperti TCP/IP, apa bedanya HTTP dan HTTPS, apa itu TLS Certificate, bagaimana browser memverifikasi TLS Certificate ketika membuka halaman HTTPS, dst.

Seiring perjalanan ini, kami gatal juga ingin menerapkan apa yang dipelajari. Kebetulan, salah satu bahasa pemrograman yang sejak lama ingin kami pelajari adalah Ruby. Jadi bagaimana bila belajar network programming-nya menggunakan Ruby? Kenapa tidak.

Kami menggunakan buku Hands On Network Programming With C sebagai panduan. Setiap kode yang ada akan kami coba menggunakan Ruby. Syukurnya, API untuk socket programming di Ruby tidak jauh beda dengan API di C.

Salah satu hal seru yang kami buat selama momen belajar ini adalah aplikasi DNS client sederhana. Kami tidak hanya harus mempelajari bagaimana DNS bekerja, tapi juga meluangkan waktu mempelajari spesifikasi DNS. Pengalaman pertama membaca Request for Comments (RFC). 😀

Ketika belajar menggunakan model ini, sangat penting juga untuk menentukan apa target besar yang ingin dikuasai dan pertanyaan apa saja yang ingin dijawab. Karena bila tidak, pengembaraannya bisa tidak maksimal.

Belajar Dengan Meniru Konsep Dari Bahasa Lain

Salah satu latihan yang selalu kami gunakan ketika mempelajari bahasa pemrograman baru adalah membuat aplikasi pembuat palingram dari daftar kosakata yang ada. Palingram adalah kalimat yang bila dibaca dari depan ke belakang akan sama ketika dibaca dari belakang ke depan.

Ketika membuat aplikasi palingram menggunakan Golang, salah satu cara yang kami terapkan untuk mempercepat programnya adalah menggunakan goroutine. Ada beberapa proses yang bisa dijalankan secara paralel.

Beberapa saat kemudian, kami menemukan ada update di Swoole, salah satu project open source untuk PHP. Sederhananya, Swoole akan menyediakan coroutine dan channel bagi para engineer PHP. Kami jadi penasaran, bagaimana bila aplikasi palingram versi PHP diubah untuk menggunakan Swoole? Mungkin seperti apa yang terjadi di palingram versi Golang , aplikasi PHP-nya bisa jadi lebih cepat.

Bagi yang sudah pernah menggunakan goroutine, API yang disediakan oleh Swoole tidaklah asing lagi. Sehingga, proses mengubah aplikasi palingramnya berjalan lancar.

Namun, kami terkejut ketika aplikasinya dijalankan. Palingram versi PHP yang menggunakan coroutine dan channels berjalan lebih lambat dibandingkan versi PHP tanpa coroutine dan channels. Hal ini membuat kami sadar bahwa menggunakan coroutine tidak serta merta membuat sebuah program menjadi lebih cepat. Kita sebisa mungkin memahami karakter runtime dari platform yang digunakan.

Jadi bila ada konsep yang menarik di bahasa pemrograman lain, ini kesempatan bagus untuk ATM alias Amati, Tiru, dan Modifikasi.

Belajar Dengan Membaca Kode

Salah satu manfaat dari open source adalah kodenya terbuka untuk kita baca. Ini adalah kesempatan yang bagus untuk memahami bagaimana suatu API digunakan. Yang tidak kalah pentingnya, ini adalah kesempatan untuk mempelajari bagaimana suatu masalah dipecahkan. Kita bisa mempelajari banyak hal dari kode yang ditulis oleh engineer lainnya.

Contoh alat yang bisa kita pakai adalah Github Search. Kami menggunakan alat ini untuk mempelajari bagaimana http.Transport di Golang digunakan. Alat lain yang dapat digunakan adalah SourceGraph.

Namun, tidak bisa dipungkiri membaca kode di project open source bukanlah hal yang mudah. Apalagi ketika codebase-nya sudah menjadi besar.

Ada satu tips yang dibagikan oleh Mitchell Hashimoto, foundernya Hashicorp, untuk memudahkan hal ini. Caranya, cari salah satu merge besar yang ada di project tersebut. Dari merge tersebut, kita bisa memahami apa yang terjadi dan secara bertahap menghubungkannya ke bagian yang lebih besar dari sistem tersebut.

Belajar Coding Terus

Belajar coding sekali lagi bukanlah sekedar soal sintaksis. Salah satu aspek penting dari belajar coding adalah bagaimana kode yang ditulis memberikan dampak yang maksimal. Dalam menulis kode aja, ada banyak aspek yang terlibat. Pengetahuan akan sintaksis, pengetahuan akan masalah, pengetahuan akan pendekatan yang bagus, dst.

Jadi alangkah baiknya untuk memosisikan diri kita sebagai murid secara terus menerus. Sehingga, kita selalu terpacu untuk belajar dan mencoba, belajar, dan mencoba.

Selamat belajar.

 


Belajar Pemrograman Gratis
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.