Menjadi Software Programmer Hebat

Yoga Hanggara
JDS Engineering
Published in
4 min readMar 12, 2021

Sering saya mendapat pertanyaan, “Software Programmer yang bagus dan ideal, itu seperti apa?” Ini pertanyaan sulit, karena bicara bagus dan ideal ini tentu masing-masing punya passion, learning hingga career path yang berbeda-beda.

Apakah software programmer yang bagus adalah yang serba semua bisa? Menguasai banyak bahasa pemrograman? Menguasai teknologi kekinian? atau barangkali sering mendengar buzz-word, “Rockstar Developer”? 😀

Berikut adalah 3 tips yang saya sering sampaikan kepada tim pada saat sesi 1-on-1 atau diskusi pengembangan diri/karir tim software programmer di Jabar Digital Service.

Budaya kerja kami: belajar, berbeda pendapat, dan mencari solusi terbaik

1. Memahami Konsep Dasar Pemrograman

Yang utama, penting untuk memahami konsep-konsep utama pemrograman. Kapan dan bagaimana penggunaan fungsi increment/decrement, modulus, penggunaan conditional if-else, penggunaan looping for, foreach, do-while, apa itu rekursif, dsb. Di level berikutnya memahami konsep-konsep OOP seperti inheritance, polymorphism, abstraksi, hingga tahu konsep functional programming.

Penggunaan framework pemrograman jelas meningkatkan kecepatan dan produktivitas, namun dengan menguasai dasar-dasar cara kerja framework, memahami bagaimana sebuah request masuk hingga menghasilkan response, akan sangat membantu kita saat debugging atau mengembangkan sesuatu yang baru. Bahkan kita bisa extend fungsional yang spesifik belum disediakan framework.

Penggunaan Object-relational mapper (ORM) juga mempermudah programmer dalam mengolah data dengan mengabstraksi operasi database. Namun dengan memahami dasar-dasar SQL Query, Data Type, Indexing, dsb, akan mempermudah merancang skema dan query yang efisien dan menjaga performa tetap handal.

Beberapa waktu belakangan, saat interview kandidat software programmer, saya sering mendapati programmer yang terbiasa menggunakan framework, namun kesulitan menjelaskan cara kerja framework maupun ORM — sekedar menjelaskan apa itu Eager Loading (N+1 query problem) yang seharusnya jadi makanan sehari-hari. Belum lagi penggunaan raw query yang semakin jarang.

Dengan memahami konsep-konsep dasar pemrograman, ini akan sangat membantu kita saat perlu belajar hal baru.

Learn techniques, not tools.

2. Read Code

Seringnya saat programmer sudah di-assign di sebuah project/produk, dia hanya akan asyik di situ saja. Membaca kode orang lain mungkin hanya saat meng-copas solution answer di Stackoverflow atau code snippet yang diberikan seniornya.

Padahal salah satu cara mengakselerasi belajar adalah dengan membaca, melihat contoh, membandingkan — hingga puncaknya bisa memahami. Memahami, WHY? Kenapa suatu kode ditulis dengan code style tertentu. Kenapa suatu kode ditulis menggunakan abstraksi dan interface tertentu.

Cobalah sering main ke repository para pujangga kode, melihat bagaimana mereka menulis kode. Contohnya:

Tidak kalah penting untuk main ke repository framework/package/dependencies open-source yang populer, lihat bagaimana mereka mengembangkan sebuah kode yang “open” dan digunakan banyak orang. Pelajari bagaimana kontributor open-source menulis kode yang bisa dipahami banyak orang.

Dengan mempelajari bagaimana sebuah framework dan library ditulis, akan membantu kita memahami cara framework tersebut bekerja. Akan mempermudah kita melakukan debugging.

Membaca kode yang ditulis orang lain juga memaksa kita untuk mempraktekan skill to unlearn. Kita harus me-reset pemahaman kita, terutama kebiasaan kita, agar bisa menerima ilmu baru. Seperti halnya analogi mengosongkan gelas.

“Oh ternyata kebiasaan saya menulis kode seperti ini kurang bagus.”

“Oh ternyata ini alasannya kenapa mereka pakai interface.”

Mempunyai teman yang berbeda pendapat itu sangat penting

3. Write Readable Code

Padahal namanya programmer, ya pasti menulis kode. Lalu apa maksudnya nomor 3 ini?

Menjadi programmer yang hebat adalah bicara tentang kemampuan menulis code. Coding adalah aktivitas “seni”, perlu belajar dan ditempa pengalaman. Menjadi seorang artisan.

Masih sering saya temui programmer yang coding hanya sebatas menyelesaikan pekerjaan. “Yang penting backlog-nya selesai.”, “Yang penting fungsionalnya jalan.”

Tidak nampak dia mencintai kode-nya, merawatnya. “Refactor? Ah ngapain, kan yang penting sudah berfungsi.” Maka yang seperti ini gak akan nyambung jika diajak diskusi clean code, design pattern, unit test, dsb.

Saya tidak bosan mengingatkan tim software programmer saya, bahwa menulis kode itu sudah biasa. Teman-teman harus bisa level-up lebih tinggi lagi, mampu menulis “readable code”.

Jika di tim ada yang sering berdiskusi sekaligus tidak bosan ngulik code style, membuat unit test, improving performance, implementasi clean architecture, apalagi bisa berkontribusi ke komunitas, saya tahu dia akan jadi programmer yang hebat.

Grit: Passion, dan Kegigihan

Menjadi software programmer yang hebat adalah proses. Hari-harinya tidak bosan membaca dan menulis kode hingga eksplorasi teknik-teknik pemrograman hingga devops. Tempat beristirahatnya adalah membaca forum, group komunitas, Hacker News, dev.to, Github timeline, dsb.

Mengambil intisari dari buku Grit: The Power of Passion and Perseverance, sekedar ber-passion menjadi seorang programmer tidak cukup. Programmer hebat adalah yang gigih untuk terus self-learning, self-improve, dsb. Dimulai dari 3 hal di atas.

Kalau ada programmer yang suka menutup laptop setelah pulang kuliah, pulang kerja, dan tidak membukanya lagi sampai besoknya, maka saya yakin skill-nya akan segitu-segitu saja. Hehe.

Siapa mengira, diskusi arsitektur, clean code, naming things, bisa seseru ini.

Apakah kamu programmer yang sejalan dengan 3 hal di atas? Apakah kamu orang yang enjoy tengah malam coding atau ngoprek sesuatu?

Kalau iya, barangkali kita bisa jadi partner bekerja, belajar, dan bertumbuh yang seru di Jabar Digital Service.

Silahkan drop CV kamu ke email yoga.hanggara@jds.jabarprov.go.id dan kita bisa berdiskusi lebih lanjut tentang bagaimana kita menjadi software programmer yang berdampak dan mewariskan sejarah.

--

--

Yoga Hanggara
JDS Engineering

Software Craftsmanship, Agile & Leadership, DevOps Culture, and Cloud Engineering.