//
you're reading...
Bahasa Indonesia

Bukan Sekedar Programmer

Jeff Atwood, CTO Stack Exchange, mengklasifikasikan level programmer dalam 8 tingkatan. Dead Programmer, Successful Programmer, Famous Programmer, Working Programmer, Average Programmer, Amateur Programmer, Unknown Programmer, dan Bad Programmer. Oh tentunya ini bukan standar internasional, hanya berdasarkan dari pengalamannya saja. Mengacu dengan klasifikasi Jeff Atwood, sekarang pertanyaannya di level manakah kita sekarang? Lima atau sepuluh tahun lagi akan berada di level yang mana? Pada akhirnya kita mau di level yang mana?

Sedikit mungkin yang ingin menjadi Dead Programmer. Dead di sini bukan dalam arti sebenarnya, melainkan programmer yang kontribusinya kepada dunia besar sekali. Temuan, buku, dan papernya selalu dipelajari dan dikembangkan, bahkan setelah si empunya sudah tiada.

Dan rasanya tidak sopan jika tidak menyebutkan Donald Knuth sebagai salah satu contohnya. Orang komputer wajib hukumnya untuk tahu siapa Knuth. The Art of Computer Programming, buah karya sang Profesor mengenai analisis algoritma  yang dipaparkan dengan sangat detil sudah seperti kitab suci di dunia komputer. Tanpa algoritma yang tepat, sulit rasanya membayangkan komputer akan sekencang saat ini atau chatting di Instant Messenger tanpa delay.

Tapi saya yakin, rasanya banyak di antara kita pasti memilih ingin jadi Successful Programmer. Punya insting bisnis bagus, dikenal di kalangan programmer,  dan code yang ditulis berubah menjadi bisnis sukses, seperti Bill Gates dan Mark Zuckerberg. Atau mungkin contoh lokalnya seperti Andrew Darwis, CEO Kaskus, dan Kris Antoni, CEO Toge Production, bidang game.

Dan sebagian lainnya ingin menjadi Famous Programmer, yang sekarang lebih dikenal dengan sebutan hacker, ninja programmer, atau rockstar programmer. Kemampuan yang dimiliki sudah berada di antara level 2 dan level 3 menurut Programmer Competency Matrix. 20% pekerja yang memberikan 80% kontribusi ke perusahaan. Jenis programmer yang paling banyak dicari. Saat ini, ketika umur masih di bawah 30 tahun, jujur tipe ini yang sedang saya tuju dan yang ingin dibahas di sini.

Ketika kita ingin menjadi Famous Programmer, programmer yang memang benar-benar mengerti tentang programming, apa yang kita lakukan sekarang sudah mencerminkan apa yang dicita-citakan? Berapa jam waktu yang dihabiskan untuk coding dan membaca buku computer science? Apa yang kita coding sekarang sesuatu yang penting atau yang biasa-biasa saja?

Pada tahun 2008, Malcolm Gladwell, dengan bukunya yang berjudul Outliers, berpendapat untuk menjadi ahli di satu bidang, kita harus berlatih minimal 10000 jam. Dibutuhkan sekitar 4 atau 5 tahun (seperti lamanya kuliah sarjana) jika sungguh-sungguh. Contohnya Beatles yang mengasah musikalitas mereka dengan sering manggung di Hamburg atau Bill Gates yang menghabiskan banyak waktunya ketika SMP dan SMA mengakses komputer di George Washington University.

Namun di sisi lain, Dr Hamming, peraih Turing Award dan penemu Hamming Code–satu generasi dengan Shannon, dalam pidatonya You and Your Research di Bellcore pada tahun 1986, bercerita bahwa banyak teman baiknya di Bell Labs bekerja keras bahkan lebih keras dari dia sendiri, namun, tidak banyak temuan yang bisa ditunjukkan. Menurutnya, berjibaku mencoba menyelesaikan first-class problem jauh lebih bermanfaat ketimbang menyelesaikan masalah yang biasa-biasa saja. Proses dalam pengerjaan first-class problem itu lebih penting ketimbang hasil akhirnya.

Dia juga menyadari perbedaan antara orang yang bekerja dengan pintu tertutup dan pintu terbuka. Bekerja dengan pintu tertutup akan lebih cepat menyelesaikan pekerjaan hari ini dan esok harinya. Lebih produktif dari orang kebanyakan. Akan tetapi, 10 tahun kemudian sebenarnya orang tersebut tidak tahu masalah apa sebenarnya yang layak untuk dipilih dan dikerjakan. Sebaliknya, orang yang bekerja dengan pintu terbuka akan sering mendapatkan banyak interupsi dari teman kerjanya. Namun demikan, terkadang dia akan lebih tahu masalah penting apa saja yang ada di dunia ini.

Selain itu, Hamming berpendapat bahwa “great scientist tolerate ambiguity very well”. Ambigu yang dimaksud adalah untuk tidak sepenuhnya percaya dengan apa yang dikerjakan sehingga cukup bisa menyadari adanya kekurangan untuk menjadikan hasil kerjanya menjadi lebih baik.

Dari dua pendapat di atas, terlihat jelas perbedaan bagaimana menjadi seorang ahli. Galdwell menekankan pada kuantitas. Untuk menjadi programmer jago maka dibutuhkan jam terbang yang tinggi. Namun, Hamming berpendapat kuantitas saja tidak cukup. Kualitas dari apa yang diprogram itu sama pentingnya. Dan jangan cepat berpuas diri.

Kuantitas dan kualitas mesti seimbang. Berkutatlah dengan programming hingga minimal 10.000 jam tapi lakukanlah pada hal-hal yang memang penting.

Misalkan, keinginan menjadi ahli di bidang machine learning. Mengerti kelebihan dan kekurangan dari setiap clustering dan classification algorithm. Akan tetapi, dalam prosesnya malah menghabiskan banyak waktu mempelajari computer network, menulis shell scripting untuk mengatur susunan mp3 di harddisk. Tidak salah memang, tapi tidak tepat dengan apa yang dituju.

Awalnya ketika masih menjadi mahasiswa sarjana, jelas sangat perlu untuk belajar segala hal. Mencoba bahasa pemrograman dengan paradigma yang berbeda– prosedural, berorientasi objek, functional, logic, dan lain-lainnya. Mencoba database SQL ataupun NoSQL. Memahami berbagai macam algoritma dan struktur data dasar. Mencoba meraba-raba sebenarnya mau ke mana melangkah, tapi setelah itu, baik sebagai mahasiswa pascasarjana atau bekerja di perusahaan, sudah saatnya mulai mengerjakan first-class problem.

Berat memang. Perlu determinasi dan konsistensi. Contohnya salah seorang teman yang memulai kuliah master. Profesor meminta para mahasiswa S2-nya untuk memilih satu topik yang berhubungan dengan projek-projek yang ada di Apache Project sebagai penelitian. Ada banyak projek menarik dan menggoda untuk dipilih, tapi akan lebih menarik untuk memilih projek yang memang bermanfaat dan dapat diterapkan di Indonesia.

Setelah didiskusikan (atau dijerumuskan?), jatuhlah pilihan pada Apache Mahout. Scalable Machine Learning. Mengapa Mahout? Sebenarnya bukan Mahout-nya yang menarik tapi kumpulan algoritma di dalamnya termasuk recommender system dan machine learning yang jadi alasan utama.

Di Indonesia, memang siapa yang butuh? Jawaban paling mudahnya adalah para pemilik online shopping. Lihat Amazon. Ketika membuka salah satu produk baju olahraga laki-laki, maka akan ditampilkan pilihan-pilihan baju olahraga laki-laki lainnya dengan melihat selera pembeli lainnya yang sama. Lainnya, berguna juga menampilkan barang-barang seperti apa yang sebaiknya ditawarkan ke pembeli dengan mengenali pola-pola pembelian di masa lalu.

Itu baru sebagian kecil aplikasi nyatanya karena penggunaan machine learning cukup luas, dari biometric, image recognition hingga AI robot. Apa yang ingin disampaikan di sini adalah apa yang dipilih mencoba untuk menjawab permasalahan secara tepat sasaran di Indonesia. Saya pribadi akan memasukkan topik ini ke dalam first-class problem. Dan betul, ini bukan topik yang mudah, semudah membalikkan telapak tangan, tapi butuh determinasi dan konsistensi untuk mempelajarinya. “Semangat, mang!”

Semoga makin banyak programmer di Indonesia yang masuk level Famous Programmer. Bukan cuma sekedar coding atau malah membuat spagheti code (atau versi lokal: indomie-code by adegawa) yang membuat pusing programmer lainnya. Saya pribadi, setelah melihat begitu banyak teman di kampus yang ahli di bidang masing-masing, merasa masih menjadi Average Programmer yang butuh jam terbang lebih banyak.

Advertisements

About Winnu Ayi

Computer Engineer. Computer Scientist.

Discussion

7 thoughts on “Bukan Sekedar Programmer

  1. mana penjelasan untuk tipe-tipe lainnya?

    Posted by iqbalbae | 6 February 2012, 09:23
  2. Kirain dead programmer itu, orang yang udah jadi CEO, jadi gak coding lagi Nu. Menurut Winnu, bagaimana caranya melatih memecahkan masalah first-class?

    Posted by za | 6 February 2012, 11:20
    • Awalnya juga berpikir seperti itu, ternyata dead programmer di sini lebih diposisikan semacam para dewa programmer, yang ilmunya sudah menyebar dan diaplikasikan di mana-mana.

      First-class problem cenderung memiliki permasalahan yang memang rumit dalam sekilas mata. Prinsip divide-and-conqueror cocok untuk diterapkan di sini dengan mengidentifikasi masalah yang telah menjadi beberapa bagian. Meski kadang, ada bagian (yang sudah atomic) ternyata butuh pemahaman lebih dalam tentang teori. Sharing knowledge dengan teman jelas sangat dibutuhkan. yah semacam id-python lah ya. 🙂

      Contohnya: ini baru saja saya ngobrol dengan teman saya, yang memang kami menggunakan Apache Mahout tapi beda tujuan. Teman saya belum pernah mempelajari algoritma satupun, tapi ulet buat ngoprek-ngoprek. Dan membahas algoritma k-Nearest Neighbor yang ada di dokumentasi. Terlihat susah di awal. Ternyata mudah setelah dibahas bareng. Mungkin simple ini ya algoritmanya, tapi sebentar lagi akan bermunculan permasalahan baru yang menarik untuk dibahas. 🙂

      Posted by Winnu Ayi | 6 February 2012, 12:02
  3. Baru tahu istilah “pintu terbuka” dan “pintu tertutup”, Win. Ini maksudnya peka dengan lingkungan sekitar?

    Posted by za | 14 February 2012, 07:57
    • Bisa dibilang seperti itu. Ada banyak masalah yang muncul di realitas yang perlu untuk dijawab. Mungkin kalau tidak baca media online Indonesia, saya hanya fokus dengan masalah-masalah yang ada di seputaran Jerman.

      Posted by Winnu Ayi | 16 February 2012, 10:40
  4. Reblogged this on Catatan kaki anak hutan.

    Posted by duniawisata5 | 18 August 2013, 11:57

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: