Teori dan Praktek dalam Pengembangan Software
Jika
kita rajin membaca jurnal, buku, dan tentu saja situs web, maka kita
akan mendapati banyak artikel yang membahas mengenai teori dan
metodologi pengembangan software. Ada banyak tulisan klasik (seperti
buku Fred Brooks, “The Mythical Man-Month: Essays on Software
Engineering”) ataupun metodologi-metodologi baru (seperti
extreem programming dan agile methodology).
Anda
dapat mulai memahami extreem programming dari
www.extremeprogramming.org dan agile methodology dari
agilemanifesto.org. Metodologi-metodologi baru lainnya dapat Anda
pelajari dari www.martinfowler.com/articles/newMethodology.html.
Menurut Martin Fowler, open source merupakan salah satu metodologi
baru.
Namun,
jika kita lihat individu, perusahaan, atau organisasi yang
mengembangkan software, nampaknya sebagian besar dari mereka tidak
menggunakan teori atau metodologi yang dituliskan tersebut. Mengapa
demikian? Apakah metodologi tersebut terlalu teoritis sehingga tidak
dapat digunakan? Padahal semestinya teori tersebut sangat bermanfaat
untuk menghasilkan software yang berkualitas baik dengan tepat waktu.
Ataukah para pengembang software ini yang malas dan tidak peduli?
Hasil
pengamatan saya yang dilakukan secara informal menunjukkan beberapa
hal. Pertama, banyak pengembang software yang tidak tahu ada
metodologi untuk pengembangan software. Banyak yang mulai
mengembangkan software dari coba-coba dan kemudian terjun ke bisnis.
Mereka menganggap bahwa pengembangan software hanya sebatas melakukan
pengkodean (coding). Padahal, sesungguhnya banyak hal lain di
luar sekedar pengkodean saja dalam pengembangan software.
Kedua,
setelah sibuk dengan pekerjaan atau proyek, mereka tidak sempat lagi
untuk membaca teori. Waktu mereka sebagian besar dihabiskan untuk
“memadamkan api”, yaitu menangani masalah (bugs) dan
memberikan hasil pengembangan kepada pemesan software tersebut. Ada
juga kisah para programmer yang ingin mencoba menerapkan metodologi
tertentu, namun tidak diberi kesempatan oleh manajer yang mengepalai
pengembangan software tersebut. Seringkali manager ini juga tidak
memiliki latar belakang (teori) pengembangan software. Mereka
kebanyakan berasal dari dunia bisnis yang berbeda sehingga kurang
menghargai metodologi pengembangan software. Mereka lebih percaya
bahwa mengirimkan produk yang cepat – dengan apa pun caranya –
lebih baik daripada mengembangkan software dengan cara yang benar.
Mereka tidak sadar bahwa cara ini akan menuai masalah di kemudian
hari. Memperbaiki masalah pada software yang sudah terpasang jauh
lebih mahal daripada memperbaikinya ketika sedang dalam taraf
pengembangan.
Masalah
lain adalah ketidaktahuan tempat untuk mencari sumber referensi.
Sebetulnya banyak sumber referensi yang bagus. Saya sendiri
berlangganan majalah “IEEE Software” yang banyak membahas masalah
teori dan praktis. Di sisi web, situs milik Joel Spolsky yang benama
“Joel On Software” (www.joelonsoftware.com) juga menarik
untuk dibaca. Oh ya, situs ini juga memiliki terjemahan dalam Bahasa
Indonesia. Mungkin ketidaktahuan sumber referensi ini bisa dipecahkan
melalui mailing list atau situs web yang membahas masalah
pengembangan software.
Namun
di sisi lain, meskipun tidak terlalu banyak, saya juga melihat ada
pengembang software yang terlalu banyak berteori dan tidak
menghasilkan produk yang dapat digunakan oleh publik. Mereka merasa
lebih hebat bak dewa, sehingga tidak merasa perlu untuk turun ke
bumi. Kebanyakan hal ini ditemui di lingkungan perguruan tinggi. Ah,
saya pun berasal dari perguruan tinggi. Mungkin artikel ini pun
terlalu teoritis untuk para praktisi pengembang software?
Masalah
teori dan praktek ini tentunya bukan masalah yang khusus terjadi di
Indonesia saja. Ini adalah masalah yang terjadi di seluruh dunia.
Organisasi pengembang software besar di luar negeri pun mengalami
masalah yang sama. Ini bukan berarti sebuah pembenaran, akan tetapi
ini merupakan sebuah peluang bagi anda untuk mengalahkan pengembang
software besar tersebut. Maukah dan sanggupkah anda?
Membuat
keseimbangan antara teori dan praktek merupakan sebuah hal yang tidak
mudah. Jika anda dapat melakukannya, kemungkinan besar anda akan
sukses di dunia pengembangan software.