Skill yang paling dibutuhkan programmer

September 23, 2014

Banyak yang menanggap skill utama bagi programmer itu bisa framework ini itu, bahasa pemrograman ini itu, design pattern ini itu, dan sebagainya.

I beg to differ here, really-really differ.

Bagiku, semua itu tidak ada artinya, tidak penting banget. Gak penting berapa banyak framework atau bahasa pemgoraman yg kamu kuasai. Bagiku, skill yang paling dibutuhkan programmer cuma ada dua : kemampuan break down problem, dan kemampuan debugging.

KEMAMPUAN BREAK DOWN PROBLEM

Apa artinya? Simply, kemampuan memecah suatu problem yang sekilas kelihatannya rumit menjadi banyak sub problem yang jauh lebih sederhana dan memecahkannya satu per satu. Looks simple, tapi berdasarkan pengamatanku justru ini skill yang sangat langka. Banyak orang yang menganggap suatu problem sebagai suatu kesatuan utuh yang harus dipecahkan sekaligus dan karenanya kelihatan jauh lebih sulit dan bikin gelagapan.

Contoh sederhana : bikin program yang bisa menampilkan karakter asterisk di layar yang bisa bergerak dan jika menyentuh ujung layar akan memantul. Problem ini bisa dipecah menjadi sub problem yang jauh lebih sederhana, dan dipecahkan satu per satu:

  1. Sub problem pertama tentu bagaimana cara menampilkan karakter asterisk di layar. Pecahkan problem ini dulu.
  2. Kalau sudah bisa menampilkan asterisk, problem berikutnya tentu bagaimana cara membuatnya bisa bergerak. Disini mungkin perlu ada modifikasi terhadap solusi dari sub problem pertama. Misal jika menampilkannya dengan hard code pada suatu posisi tertentu, tentu lebih baik jika ditaruh dalam suatu fungsi/procedure untuk bisa menampilkannya pada posisi manapun di layar
  3. Problem bagaimana cara mendeteksi kalau asterisk sudah menyentuh ujung layar
  4. Problem bagaimana membuat asterisk tersebut memantul

Sound simple kan. Problem yg rumit dipecah menjadi sub problem yang jauh lebih mudah kemudian dipecahkan satu-satu. Tapi tidak semua programmer sanggup mempunyai cara berpikir spt itu.

Disini ada sesuatu yg menarik. Saat memecahkan sub problem, you simply should not give a shit about later sub problem. Saat anda memecahkan problem bagaimana menampilkan karakter di layar, anda fokus pada satu problem itu dulu, gak perlu bingung nanti gimana cara memindahkannya atau bagimana cara membuat memantul. Kemudian, saat memecahkan sub problem yg belakangan, jika diperlukan solusi yg sudah dibangun sebelumnya dirombak lagi. That’s OK, mungkin para “pakar” bilang itu gak efisien. But by experience itu adalah the best way. Peduli setan para “pakar” bilang apa. Membingungkan bagaimana memecahkan sub problem yg kemudian sebelum menuntaskan suatu problem awal adalah simply defeat the purpose dari breaking down the problem, yg mana tujuan utamanya adalah membuat masalah yg rumit menjadi jauh lebih sederhana. Karena itu gw paling anti sama metodologi waterfall atau big design up front. Menurut gw itu gak realistis banget.

DEBUGGING

Ya jelas, kalau bikin program tentu tidak lepas dari yg namanya bug. Misal error compile, atau tiba2 null pointer exception dalam situasi tertentu, atau stack overflow, dan sebagainya. Disini seorang programmer yg baik harus menerapkan metodologi ilmiah dalam memecahkan suatu bug:

  1. Perform hypotesis. Buat hypotesis tentang apa saja yang mungkin menyebabkan suatu masalah
  2. Dari hypotesa2 diatas, buat prediksi dan kemudian test apakah prediksi itu benar apa gak.
  3. Eliminasi hipotesa2 mana yang yang terbukti salah karena prediksinya gak terbukti
  4. Repeat, sampai ketemu akar masalahnya.

Sayangnya skrg penulis masih gak ketemu contoh konkritnya yg gampang dijelaskan. Nanti kapan2 kl dapat ilham mgkn bakal gw update.

Kebanyakan programmer yg gw temui, cuma bisa bengong sambil mengumpat kalau ketemu masalah tak terduga. Ya pantesan programnya gak jadi2. Karena mau sehebat apapun programmer, gak mungkin bisa bikin program yg 100% langsung sempurna saat pertama kali kompile build. Problem is expected, karenanya kemampuan memecahkannya dengan efisien secara logis juga sangat penting.

Penulis percaya dua skill diatas is the utmost important. Framework bisa dengan gampang dipelajari, tapi breaking down problem dan debugging kelihatannya adalah sesuatu yg by nature. You either get it, or don’t get it at all. Oh tentu kedua skill diatas sulit ditemukan di programmer level mediocre. Karena nya mungkin mereka tetap lebih baik bragging berapa banyak design pattern atau framework yg mereka kuasai. Whatever deh

Advertisements