Rabu, Februari 23, 2011

Catatan Untuk Programmer Pemula

Akhir-akhir ini sering saya temui banyak programmer pemula baik yang belajar secara otodidak maupun yang sedang belajar di bangku perkuliahan sering mengeluh akan susahnya belajar programming. Yah, mungkin bagi mereka programming ini sedikit seperti hantu yang selalu menyambut di depan pintu kuliah, atau mungkin ketika ingin mempelajari bahasa pemrograman. Seperti momok yang menakutkan.

Programming itu indah. Programming itu mudah. Berikut beberapa catatan yang bisa di-implementasikan untuk menjadi seorang programmer yang baik.

Pelajari algoritma dasar / matematika dasar

Membuat program sebenarnya adalah menyelesaikan solusi atas masalah yang terjadi. Dalam penyelesaikan masalah ini, kamu sering dihadapkan permasalahan matematika. Sebagai contoh, membuat program sederhana untuk menghitung luas dari persegi panjang. Kamu akan membutuhkan pengetahuan akan rumus, perkalian, penambahan, pecahan, pengakaran dan operasi matematika lain. Tak ada program yang tidak membutuhkan operasi matematika seperti ini, kecuali program Hello World.

Kuasai ketiga basis bilangan lainnya, biner, oktal dan heksadesimal

Ini penting. Dalam kasus-kasus tertentu pengetahuan mu tentang tiga basis bilangan ini. Biasanya diperlukan dalam bidang enkripisi/dekripsi.

Familiar dengan sistem operasi selain Windows.

Jika kamu mengembangakan aplikasi berbasis web, kebanyakan platformnya berbasis LAMP(Linux Apache MySQL PHP). Untuk itu lah kamu harus tahu sistem operasi lain. Terkadang, walau bahasa pemrograman yang kamu gunakan mengusung fitur WORA(Write Once Run Anywhere) seperti Java, yang kamu tulis dengan sistem operasi Windows, belum tentu program tersebut berjalan dengan benar di Server Linux.

Manajemen memory

Pastikan kamu membebaskan memori ketika program mu diterminasi. Dan gunakan memory dengan sebaik mungkin dengan memilih tipe variabel dengan seksama. Jangan menggunakan variabel bertipe integer hanya untuk menyimpan angka 1-10. Tipe data Byte(Java) mungkin lebih cocok dalam hal ini.

Tidak tergantung dengan GUI editor.

Bagaimana jika kamu dihadapkan dengan suatu environtment yang mengharuskan kamu harus mengembangkan aplikasi dengan editor vi. What would you do? Mengomel kepada atasan dengan mengatakan, “Oh God. What the hell is this thing?“. Bisa-bisa kamu dipecat seketika.

Flexible terhadap environtment.

Bagaimana kamu dihadapkan dalam suatu kasus dimana resouce sangat terbatas. Kamu diharuskan mengembangkan aplikasi berbasis web dinamis di Linux dengan kapasitas penyimpanan 20 MB, RAM 32 MB. Apa yang akan kamu lakukan?

Mengetahui database

Tidak bisa dipungkiri, ini adalah faktor penting yang harus kamu ketahui. Jarang ada aplikasi yang tidak menggunakan basis data.

Pilih bahasa pemrograman yang akan kamu gunakan sebagai sarana belajar.

Ada banyak di luar sana. Ada Java, C, C#, Scala, C++ dan lain lain. Untuk pengembangan web bisa menggunakan PHP, Perl, Python RoR dan lain lain. Jangan telan semua. Tak ada yang satu orang pun di dunia ini yang menguasai seluruh bahasa pemrograman. Jangan paksakan. Nanti bisa bunting samping.

Regular expression

Ini adalah salah satu hal vital yang harus kamu ketahui. Tidak ada tapi-tapian. No more excuses. Regular ini sangat dibutuhkan dalam validasi data.

Network programming

Terkadang, kamu dihadapkan dengan suatu project untuk membuat aplikasi yang bisa saling berhubungan dengan koneksi TCP/UDP. Katakanlah aplikasi seperti Yahoo Messenger atau sebuah game yang bisa digunakan dalam jaringan. Lalu apa? Menyerah dengan yang satu ini?

Up to date

Ingat quote berikut ini. “Programmers should keep their skills up to date or they would far away behind“. Baca berita-berita terbaru seputar dunia pemrogaman atau IT secara general.

Speciality

Kamu ingin membuat kemampuan teknis mu di CV seperti ini?

Saya menguasai pemrograman
Java, PHP, Perl, Python, ROR, Assembly, C, C++, Ada, LISP, Haskell, C#, Axapta X++, Bash Scripting, Fortran, Cobol … bla bla bla…

Wow. You are really a super human dude. :lol:Apakah benar menguasai? Bukan sekedar “mengenal” doang dan hanya pernah membuat program Hello World??

Bahkan lebih hebat lagi jika kamu mencantumkan seperti ini di Resume mu.

Menguasai
Adobe Photoshop, Adobe Flash, Adobe InDesign, Corel Draw, Adobe Illustrator, Adobe Premiere Pro bla bla bla.

What the hell you are doing? Kamu programmer atau designer sih? :D

State dengan jelas kemampuan kamu dimana. Jangan dimakan semuanya. Itu tidak akan mungkin dikuasai seluruhnya. Kembali ke poin sebelumnya, Programmer harus up to date. Bagaimana kamu up to date jika kamu asyik dengan program design? Setahu saya membuat desain yang cantik itu butuh waktu berminggu-minggu dan dalam dua minggu kamu telah ketinggalan banyak hal di dunia pemrograman.

Jika kamu merasa lebih capable di Desain, maka ambil desain. Jangan dipaksakan. Jadilah orang yang mengusasi bidang tertentu(special). Bukankah yang spesial itu lebih mahal bayarannya? Seperti dokter spesial?

Jam terbang

Tentu saja. Semakin banyak jam terbang mu dengan dunia pemrograman akan membuat kemampuan mu semakin tajam. Cobalah buat program dengan ide-ide baru mu.

Languange is just a tools.

Bagimana jika kamu dihadapkan pada suatu permasalahan yang mengharuskan kamu menggunakan bahasa baru? Berteriak, “Oh, God. I’m half dead“. Jika terlalu takut dengan bidang ini, kenapa tidak banting setir saja menjadi tukang ojek saja? Maaf bukan maksud saya merendahkan pekerjaan tukang ojek, tapi sebagai programmer ingat poin pertama diatas. Yang penting itu kamu menguasai algoritma, bahasa itu hanyalah tools/alat.

Do not reinventing the wheels

“Yes, I want to write it down from scratch”. What?? Are you kidding me? Apa yang terjadi jika kamu dihadapkan terhadap sebuah project dengan waktu yang sangat singkat, yakni satu bulan dan kamu mau membuat aplikasi tersebut dari nol? Be smart dude. Ada framework-framework siap pakai di luar sana. Gunakan. Ubah sesuai keperluan mu. Don’t be so stupid. Don’t be just so cool by writing your own. Make a smart decision.

Komentar

Tentu kamu juga pernah merasa kesusahan membaca kode orang lain bukan? Oleh karena itu, berikan komentar pada fungi atau blok kode program yang mungkin sulit dimengerti oleh orang lain. Ini juga akan melatih mu untuk membuat dokumentasi program yang baik. Apabila pada suatu saat kamu berhenti mengembangkan sebuah aplikasi dan bertahun-tahun kemudian kamu ingin mengembangkan aplikasi tersebut, kamu tidak pusing-pusing lagi untuk membaca kode mu.

SFTM (Serch The F*** Manual)

Mengalami masalah dengan sebuah bahasa pemrograman/framework/database/? SFTM!!

RFTM (Read The F*** Manual)

Jangan mengeluh dulu kepada orang bahwa bahasa pemrograman ini tidak bisa begini, begitu. Baca dulu manualnya. Terkadang pemula pemrograman sering bertanya di forum yang penuh dengan orang yang sudah senior di bidang programming. Apa yang akan mereka katakan ketika masalah mu ada solusinya di Manual? Mereka akan mengatakan, RFTM!!

Break down the processs

Ya. Break down bisnis proses aplikasi yang besar menjadi proses-proses yang lebih kecil untuk memudahkan kamu menyelesaikan aplikasi. Bagaimana kamu bisa memindahkan sebuah batu sebesar rumah sekaligus? Tentu akan kamu pecah-pecah dulu batunya dan memindahkannya sedikit demi sedikit bukan?

Flowchart

Setelah kamu mem-break down sebuah proses besar, gambar proses tersebut dalam sebuah flow-chart. Hal ini akan memudahkan kamu untuk mengubah/memodifikasi aplikasi mu dikemudian hari.

SLDC(Software Development Life Cycle)

Ini bagian penting yang juga harus kamu kuasai. Bagaimana me-manage project software dengan baik

Ada yang mau menambahkan? Dengan senang hati akan saya pindahkan ke tulisan ini.


Dari : Catatan Untuk Programer Pemula oleh Ganda Manurung

Tidak ada komentar: