Sabtu, 09 September 2006

Don't Code Today What You Can't Debug Tomorrow

Judul ini sangat menggelitik saya, terutama membaca blognya Mas Ariya. Pertama kali nggak ngeh, mungkin sekedar plesetan dari peribahasa atau bagaimana. Namun demikian, setelah saya pikir, lama-lama hal itu ada benarnya juga.

Saya bekerja sebagai programmer dan saya sering mengalami suka duka dalam membuat dan merawat suatu aplikasi. Hal yang paling 'sulit pitik' yang paling sering saya alami adalah merawat dan mengelola ketika sistem itu sudah berjalan.
Membuat suatu program aplikasi memiliki seni tersendiri. Ada yang mengatakan bahwa programming merupakan "seni mendebug selembar kertas kosong". Mendebug selembar kertas kosong ternyata lebih mudah, karena yang kita pikirkan adalah bagaimana cara menulisi kertas kosong itu dengan ide-ide program yang ada pada otak kita. Tidak ada desain yang jelek, tidak ada masalah legal (misal ketika membuka kode orang). Semuanya dimulai dari nol.
In the other hand,  ketika suatu aplikasi harus dirawat, mau tidak mau kita akan melalui suatu perkara yang disebut sebagai debugging.
With software, to detect, locate, and correct logical or syntactical errors in a computer program. With hardware, to detect, locate, and correct a malfunction or to fix an inoperable system. The term troubleshoot is more commonly used in hardware contexts – especially if the problem is suspected to be a major one.
www.adrc.net/data-dictionary/def.htm

Membaca ulang kode dan memperbaiki kesalahan-kesalahan yang ada adalah hal yang cukup pelik. Masih mending kalau kita membaca ulang kode yang kita buat sendiri sebelumnya. Kalau kita membaca ulang kode orang lain, kadang ketidakcocokan gaya penulisan kode dapat membuat kita terjerumus ke dalam hal-hal yang menyesatkan, semacam 'mengeluarkan sebagian isi kebun binatang', karena bisa dibuat puyeng oleh gaya penulisan yang berbeda tersebut.

Ternyata, merawat program cenderung memerlukan otak yang lebih encer daripada membuatnya, karena pada fase ini, programmer tunag debug harus mereview dan membaca alur program melalui kode-kodenya, dan harus mengetahui setiap elemen-elemen di dalamnya. Pada perkembangannya perawatan program aplikasi akan menuntut kepada kebutuhan yang bermacam-macam. Tak jarang permintaan tambahan semacam tambal sulam, sehingga program aplikasi yang dibuat semakin berkembang karena adanya permintaan penambahan fasilitas.

Kalau kita membuat aplikasi dari awal dan memerlukan semacam API, seandainya kita tidak mengerti, kita bisa diberi pilihan untuk mempelajarinya atau mencari API lain yang kita mengerti. Kalau kita mengelola aplikasi yang sudah ada, mau tidak mau kita harus mengerti cara kerja API yang telah diimplementasikan di dalam kode program atau kalau kita tidak mau mempelajarinya kita harus membuat aplikasinya dari awal dengan API yang kita mengerti. It's complicated!

Belum lagi customer tidak mau tahu dengan permasalahan seperti ini. Apabila pada hari ini aplikasi yang dibuat dapat berjalan baik, tetapi kita sebagai programmer tukang debugnya tidak tahu mengapa program bisa berjalan dengan lancar, maka pada suatu hari nanti akan terjadi permasalahan yang lebih besar ketika progam aplikasi yang dikelola tersebut menjadi macet. Jadi, tugas utama dari programmer pengelola aplikasi adalah mengetahui semua seluk beluk aplikasi yang dibangun.

Keuntungan mengelola program aplikasi:

  1. Belajar mengerti orang lain, terutama untuk program aplikasi  yang dibangun oleh orang lain, tukang debug harus memahami alur kerja yang telah dibuat oleh orang lain. Kalau program aplikasi itu dibuat sejak awal oleh tukang debugnya sendiri, mungkin akan lebih mudah.

  2. Belajar berkolaborasi. Programmer lain belum tentu memiliki gaya penulisan program yang sama dengan tukang debugnya. Melalui hal ini masing-masing individu dapat belajar untuk mau mengerti gaya orang lain.


Memang boleh dikatakan bila menjadi tukang debug perangkat lunak tidak secemerlang menjadi arsitek perangkat lunak yang membuatnya dari nol. Namun demikian, kunci dari keberhasilan suatu program aplikasi terletak pada bagaimana progam tersebut digunakan, sehingga peran dari tukang debug yang mengelola aplikasi menjadi sangat penting. Bukan tidak mungkin seiring berjalannya waktu, program aplikasi yang dibuat berkembang di luar rancangan awal karena harus menyesuaikan kebutuhan, dan hal itu menjadi tanggungjawab dari tukang debugnya.

Saya kira tidak salah apabila tukang debug adalah seorang pahlawan di bidangnya, karena jalannya suatu sistem salah satunya tergantung pada siapa yang mengelolanya.

Don't Code Today What You Can't Debug Tomorrow

Baca:
http://www.informit.com/articles/article.asp?p=27794&rl=1 

8 komentar:

kunderemp mengatakan...

Jadi ingat mayoritas pendapat kawan-kawan saya, "Lebih enak mengganti program lama dengan program baru buatan sendiri daripada memperbaiki program lama".

Btw,
kalau sebagai tukang debug menemukan source-code yang acak-acakan, tidak ada dokumentasi, sebaiknya tukang debug tersebut merapikannya atau biarkan saja?

*pertanyaan dari mahasiswa ilmu komputer yang belum lulus neh.

Wahyu mengatakan...

#kunderemp
Kala menurut saya lebih baik dirapikan daripada nanti lebih susah atau menyusahkan orang lain, itung-itung nambah pahala :p. Walaupun sebenarnya definisi rapi berbeda untuk tiap orang, namun yang jelas ada standar formatting source code yang bisa dianut agar secara global dapat dibaca dengan lebih mudah.

ario dipoyono mengatakan...

eh... mas BTW debug itu apa ??? apa semacam pisang goreng ato ??

okdddddd mengatakan...

vdddddddd

bahtiar mengatakan...

hah ... :(

Sridewa mengatakan...

Saya membayangkan bahwa tukang debug akan jadi profesi yang cukup menjanjikan di masa mendatang. Seperti proofreader di dunia tulis menulis lah...

vievie mengatakan...

mas ....kalau aque pikir debug mah..makan orang jawa eh tapikan itukn gudeg ya//mas debug tue apaan seh,,,capek dech mikirannya lohhhh???

Quality Indonesian Blogger » Blog Archive » DonĂ¢€™t Code Today What You CanĂ¢€™t Debug Tomorrow mengatakan...

[...] Aggregated from Wahyu by Asian Blogger Community [...]

Posting Komentar