Artikel ini saya copas dari salah satu blog teman di group, menurut saya isi artikel ini sangat bagus sebagai tolak ukur tingkatan kita dalam kategori mana skill pemograman kita.
Secara singkat artikel ini membagi level skill menjadi 5 level yaitu Novice, Advance Beginner, Competent, Proficient, dan Expert. Lantas bagaimana penjelasannya ke dalam skill seorang programmer? Berikut penjelasannya.
Novice Programmer
Programmer jenis ini adalah tipe programmer yang sangat pemula. Sebenarnya ketika kita mempelajari sebuah bahasa pemrograman yang baru, kita selalu melalui tahap ini. Ciri dari programmer jenis ini adalah dia membutuhkan penjelasan mendetail (bahkan sangat mendetail) mengenai sebuah konsep dan tidak ingin terikat dengan konteks.
Artikel yang dia sukai itu yang penjelasannya mendetail. Misalnya cara membuat membuat halaman web yang dijelaskan pertahap dari buka notepad, isi tag <html>, <head>, <body>, save dengan format html, double klik file dan buka dengan browser. Pernah ngalamin ngga?
Novice programmer juga tidak ingin terikat dengan konteks. Contohnya dia bisa membuat halaman html berdasarkan petunjuk yang telah ada, tetapi jika halaman html ini harus dirubah (misal membuat tampilannya berubah) tapi tidak terdapat di manual, maka ia akan kebingungan.
Biasanya seorang Novice Programmer tidak tertarik untuk belajar lebih dalam, ia hanya ingin menyelesaikan problem yang ia hadapi dan segera mendapatkan solusinya. Pokoknya masalahnya selesai, bagaimanapun caranya. Kira-kira seperti itu yang ada di pikirannya.
Advance Beginner Programmer
Programmer jenis ini agak lebih mahir daripada tipe novice programmer. Ciri yang paling mencolok dari advance programmer adalah paham bagaimana sebuah tools (bahasa pemrograman, framework, API) berjalan. Namun, ia tidak memahamibig picture dari konsepnya.
Dia juga termasuk programmer yang menyukai ‘solusi cepat dan singkat’. Pernah ngga temen-temen ngalamin ketika mempelajarai suatu API (Application Programming Interface) dan dengan terburu-buru mencari fungsi yang diinginkan tanpa memahami secara keseluruhan bagaiaman API tersebut bekerja? Pernah kan? Kalau saya sih pernah ngalamin.. :D
Kelebihan dari Advance Beginner Programmer dibanding Novice Programmer adalah ia mampu menerapkan pemahaman yang ia miliki ke dalam konteks yang sedang dikerjakan. Misalnya, ia bisa menyesuaikan tutorial pembuatan aplikasi perpustakaan menggunakan java dan memodifikasi sintaxnya agar sesuai dengan kebutuhannya.
Salah satu kelemahan yang mencolok dari Advance Beginner Programmer adalah ia tidak mau atau belum siap mempelajari keseluruhan dari suatu konsep. Misalnya dalam mempelajari sebuah framework, ia hanya mau mempelajari fungsi-fungsi di dalam framework tersebut tanpa mau mempelajari bagaiman framework tersebut bisa berjalan.
Competent Programmer
Programmer jenis ini memiliki ciri utama dapat melakukan troubleshooting. Maksdunya, ia dapat menyelesaikan masalah yang belum pernah ia temui sebelumnya menggunakan pengalaman yang ia miliki.
Competent Programmer juga mampu menerima saran dari seorang Expert Programmer dengan tepat dan mampu mengaplikasinya sesuai dengan saran dari Expert Programmer tesrsebut.
Hasil pekerjaan seorang Competent Programmer biasanya tergantung dari jumlah pekerjaan dan pengalaman ia mengerjakan project. Semakin banyak masalah yang telah ia pecahkan, makin cepat pula kerjanya.
Kelebihan lain dari Competent Programmer adalah ia mampu menjelaskan kepada seorang Novice Programmer. Dimana bila seorang Expert langsung menjelaskan ke Novice, maka si Novice kebingungan sakin tingginya ilmu si Expert ini.
Proficient Programmer
Programmer jenis ini membutuhkan Big Picture. Mereka inilah tipe orang yang tidak suka dengan tutorial yang bertele-tele. Kalau memahami sebuah framework, mereka tidak cukup dengan melihat fungsinya saja, tapi harus memahami bagaimana framework tersebut dapat bekerja.
Kelebihan lain dari Proficient Programmer adalah mereka mampu belajar tanpa mempraktekan secara langsung. Contohnya, ia dapat memahami bagaimana cara kerja suatu framework hanya dengan membaca bagaimana orang lain menyelesaikan project dengan menggunakan framework tersebut.
Temen-temen pernah nanya di forum ngga? Ngeh ngga, kalau ada orang yang jawab, biasanya dia nanya kita sudah melakukan apa aja, codingnya gimana, output yang diharapkan gimana, dan tiba-tiba dia tahu jawabannya (padahal dia ngga nyoba sintax kita di laptopnya) ? Nah, dia itu seorang Proficient Programmer.
Ciri lain dari seorang Proficient Programmer adalah ketika dia melakukan test sebuah program. Ketika seorang Novice bertanya kenapa saya melakukan tes ini? apa saja tes yang harus dilakukan? Fungsi mana saja yang harus di tes? dan sebagainya. Sebaliknya, seorang Proficient Programmer mengetahui dengan tepat bagian mana saja yang mungkin akan break jika dites dan melakuan tes pada bagian tersebut.
Expert Programmer
Oke, sampai di bagian akhir ni, Expert Programmer. Siapa mereka?
Mereka ini orang –orang yang senantiasa membagikan ilmunya kepada kita. Merekalah orang-orang yang menulis buku, menulis artikel, membuat bahasa pemrograman, membuat framework, membuat IDE, dan membuat orang lain paham tentang konsep baru.
Mereka ini para programmer yang mampu memahami konteks dari suatu masalah dan mampu memberikan solusi yang tepat, sesuai dengan konteksnya.
Yang menarik dari seorang Expert adalah ia mampu memberkan solusi dari suatu masalah hanya berdasarkan intuisi. Contohnya, dari ratusan baris kode program dan puluhan fungsi didalamnya, kemudian ketika dijalankan terdapat error pada program, Ia dapat mengatakan, “Kayaknya di fungsi itu ada yang bla bla bla deh.”
Ya, intinya seorang Expert ini mampu mengetahui detail mana yang penting dan tidak penting. Apa yang ia sampaikan terkadang tak mampu ia jelaskan kenapa. Ia hanya berkata, “Pengalaman..”.