Pakcik wrote:
lanjutan tentang test driven dan bug tracking software:
Pas sebelum punya jam waker, mau bangun jam berapa juga bisa. Jam 4 pagi
bisa, jam 3 pagi bisa. Badan juga biasa2 aja.
Trus beli jam waker. Set misalnya jam 4 pagi. Hari pertama bangun. Tapi
makin lama makin bermasalah. Ketika jamnya bunyi, setengah sadar kita
matikan jamnya. Mulai telat bangun. Badan juga mulai gak enak.
Apa sebenarnya yang terjadi? CONTROL yg sebelumnya kita yg punya,
sekarang kita lepaskan dan kasih ke jam waker. Jam waker sekarang yang
pegang CONTROL. Badan juga jadi gak enak, karna kita emang belum siap
bangun, tapi jam waker maksa bangun.
Kita kehilangan CONTROL dan badan jadi gak enak, jadi jangan beli jam
waker. :) sorry buat penjual jam waker. hehe
Apa hubungannya sama test driven development dan bug tracking software?
Pertama tulis testnya, tulis codenya, abis itu refactor. Kalau lewat
semua test list, berarti OK. Lanjutkan cycle itu.
Trus di bug tracking software, kumpulkan semua bug2 yang ada. Kalau
semua bug solved, berarti OK.
Apa yang terjadi? CONTROL pelan2 di serah terimakan ke tool2 ini. Tool2
ini yang akan menentukan apakah software kita OK apa NGGAK OK. Kalau
lewat semua test, berarti OK. Kalau semua bug solved, berarti OK. Mirip
jam waker, jam waker yang berkuasa menentukan kita udah boleh bangun apa
nggak.
Udah kehilangan CONTROL, penyakit lain muncul. Mulai tulis test
seadanya, bug juga yang penting ilang dari list. Nggak perlu ngerti
kenapa itu ilang. You just started bug development cycle.
Ini sih bukan masalah pakai tools atau tidak.
Ini masalah karakter dari developer dan penegakan disiplin.
Untuk membangun aplikasi skala besar dari pengalaman
saya sangat dibutuhkan karakter developer yang tekun dan teliti.
Karena pembuatan aplikasi kalau sudah skalanya besar
(lebih dari 6 bulan) maka developernya umumnya akan terkena
penyakit bosan.
Nah karakter dasar dari si developer itu akan
menentukan apakah dia akan bertekun atau dia akan
menyerah pada rasa bosan nya dan menghasilkan karya asal-asalan.
Cara produktif mengatasi rasa bosan ini ada beberapa:
1. Kurangi waktu untuk develop aplikasi dan
luangkan waktu belajar teknologi dan tools baru.
Ini memang tidak bagus dari segi produktivitas
tapi daripada developernya menghasilkan karya buruk
maka lebih baik dia investasi waktu untuk sesuatu
yang besar kemungkinan akan menghasilkan peningkatan produktivitas
di masa yang akan datang.
2. Rotasikan developer ke pekerjaan lain dalam
team: membangun dokumentasi, membuat unit test, dll.
Kalau bug tracking software dipakai untuk nyimpan list bug2 dari code
yang ditulis pihak lain, ok. Seperti kasus ListView yg di tulis Ariya.
Kalau bug tracking dipakai untuk alat komunikasi, ok. issue tracking,
ok. Tapi bukan untuk nyimpan bug2 dari code yang kita tulis sendiri.
Kalau ada sesuatu yang aneh dengan code yang kita tulis, asumsi pertama
adalah masalah di API yg ditulis pihak lain, bukan di code kita.
Ini masalah dengan Google, Java, dan tool2 itu. Tapi terkadang ada
sesuatu yang gak perlu kita CONTROL. Misalnya nomer telepon. Kita gak
perlu harus ingat semua nomer telpon kan? Nomer HP sendiri juga aku gak
ingat. :) Buat kasus2 ini menurutku gak apa2 pake tool. Tapi buat
"playboy kabel" nomer telpon itu sangat penting. Jadi jangan
mengandalkan tool kalau kasusnya begini. hehe :)
Gimana caranya untuk tetap punya CONTROL ini? yang masih kepikir itu
adalah gontok2an. Tulis dokument detail. Keep using your own code
(reusable). Trus pake kertas dan pensil. Coba nulis program di kertas,
jangan pake computer, tanpa reference (GOOGLE), akan kelihatan seberapa
besar kita dikendalikan sama computer dan google.
Enaknya pake kertas, kalau lagi mobile, gak perlu sok sibuk bawa2
laptop. Gak perlu cari2 internet. You control it yourself.
Tools tidak bisa memecahkan masalah karakter dan manajemen.
Kendali adalah masalah manajemen dan bukan masalah tools.
Pakai low-tech, pakai high-tech tidak ada gunanya kalau
masalahnya adalah masalah orangnya. Karena itu pembuatan
aplikasi skala besar yang paling berat adalah
masalah orang dan manajemen bukan teknologi dan tools.
Buku menarik yang pernah saya baca mengenai hal ini adalah
"Peopleware" Tom DeMarco & Timothy Lister dan
"Agile Software Development" Alistair Cockburn.