Programmer Berdasarkan LEVEL-nya
Sebagai programmer kita harus tahu pada posisi mana kita sekarang sehingga kita bisa merencanakan arah pengembangan skill yang kita miliki. Berikut ini matriks sederhana untuk membantu kita menentukan tingkat skill programming kita...
Cheers.....
disarikan dari http://www.starling-software.com/employment/programmer-competency-matrix.html
Sumber
Cheers.....
Tema | Level-0 | Level-1 | Level-2 | Level-3 |
---|---|---|---|---|
struktur data | tidak tahu perbedaan antara Array dan LinkedList | mampu menjelaskan dan menggunakan Array dan LinkedList | tahu keuntungan dan kerugian Array vs LinkedList. mampu menjelaskan hashtable dapat digunakan untuk menangani collision dan priority queue, serta tahu cara penerapannya | tahu tentang struktur data dewa seperti B-Tree, Binomial Heap, Fibonaci Heap, Splay Tree, Skip List, dll |
algoritma | tidak bisa menemukan rata-rata angka dalam Array (serius... ane pernah interview orang macem ini) | mengetahui algoritma sorting, searching, traversal dan retrieval struktur data | tahu tentang Tree, Graph, algoritma Greedy, dan algoritma Devide-And-Conquer sederhana.serta mampu memahami isi posting ini :D | memahami dan mampu membuat pemrograman dinamis. memiliki pemahaman yang baik tetang graph, komputasi numerik, NP problems, dll |
dekomposisi masalah | straight-line coding dengan banyak sekali coding copy-paste | mampu memecah masalah menjadi beberapa fungsi atau prosedur | mampu membuat fungsi, prosedur, atau class yang dapat digunakan kembali (reusable) untuk memecahkan masalah secara keseluruhan | menggunakan struktur data dan algoritma yang tepat dan mampu membuat coding generic (object oriented) untuk merangkum aspek-aspek dari masalah yang dinamis, misalkan dependency injection |
komunikasi | tidak mampu mengekspresikan (menyampaikan) ide dan pikiran ke rekan kerja, miskin tata bahasa | rekan kerja dapat memahami apa dikatakan, walau mungkin banyak juga yang gak bisa dimengerti. tata bahasa sedikit lebih baik | mampu berkomunikasi secara efektif dengan rekan kerja | mampu memahami dan mengkomunikasikan pikiran, desain, ide dan spesifikasi secara jelas dan sesuai dengan konteks |
organisasi file | tidak ada organisasi file, semuanya tumplek bleg dalam 1 (satu) file | file-file terkait diletakkan dalam satu folder yang sama | setiap file fisik mempunyai tujuan yang unik dan jelas. misalkan satu file untuk definisi class, file lain untuk definisi view, dll | organisasi code, folder dan penentuan nama file memudahkan kita melihat desain aplikasi bersangkutan |
kemudahan membaca kodingan | variable gaje dengan suku kata tunggal, misalnya $a, $b, $px | nama yang lebih manusiawi untuk file, class, variable, method, dll | tidak ada lagi fungsi yang panjang. ada komentar tentang asumsi koding, ada komentar untuk menjelaskan koding yang kreatif, serta ada perbaikan bug | asumsi coding diverifikasikan menggunakan fungsi asserts, kode mengalir secara alami, dan tidak ada deep nesting untuk conditionals dan methods |
database | berpikir bahwa Mikocok Excel adalah database | tahu (sekedar tahu saja) konsep basisdata, normalisasi, dan transaksi. serta bisa menulis SQL stetement sederhana. pernah dengar istilah nosql |
mampu merancang skema database yang baik dan ternormalisasi, mahir dalam penggunaan views, stored prosedur, trigger. tahu perbedaan index cluster dan non-cluster.
tahu perbedaan serta rdbms dan nosql serta keuntungan dan kerugiannya.
|
dapat melakukan administrasi database dasar, optimasi kinerja database, optimasi index, mahir menggunakan SQL dan cursor. memahami database mirroring dan replication serta implementasinya
Mahu kapan sebaiknya menggunakan rdbms dan kapan sebaiknya menggunakan nosql, serta mampu membuat solusi yang menggabungkan keunggulan rdbms dan nosql. Mampu mengunakan MapReduce untuk query ke database nosql
|
bahasa pemrograman | Hanya menguasai salah satu pemrograman Imperatif (Prosedural)atau Object Oriented | Menguasai penrograman Imperative, Object-Oriented dan declarative (SQL). Nilai tambah bagi yang memahami perbedaan static vs dynamic typing, perbedaan weak vs strong typing and penggunaan static inferred types. | Menguasai pemrograman Functional (misalnya Lisp, Scheme, F#, OCaml atau Haskell), Nilai tambah bagi yang memahami lazy evaluation, currying, continuations | Menguasai pemrograman Concurrent (Erlang, Oz) and Logic (Prolog) |
disarikan dari http://www.starling-software.com/employment/programmer-competency-matrix.html
Sumber
Comments
Post a Comment