Wednesday, November 06, 2002

Designer & Programmer = Anjing & Kucing

Seorang teman di BaliCamp bercerita bahwa rekan kerjanya -- seorang programmer -- memplesetkan iklan A Mild: setiap gue tau codingnya, ada yang ganti desainnya. Buat orang yang tidak pernah berkecimpung di programming, atau programmer yang bekerja single-fighter, ungkapan itu pasti membingungkan. Tapi buat sebagian orang yang pernah terjebak dalam late-night-software-development, kata-kata itu merupakan ungkapan yang pas, menggambarkan bagaimana menyebalkannya seorang designer (a.k.a analyst) di mata programmer.

Software project merupakan sesuatu yang cenderung abstrak. Kita tidak pernah tau secara utuh, apa yang sebetulnya akan dibuat. Kepingan2 software baru bisa terbayangkan dengan jelas saat project sudah berjalan, yaitu saat aktivitas penggalian keinginan customer dilakukan (istilah kerennya: customer requirements gathering). Memang mirip-mirip beli kucing dalam karung. Bedanya mungkin, karung yang satu ini masih bisa diintip-intip. Kalau lagi beruntung, lubangnya bisa gede. Kalau lagi sial (and mostly is), lubangnya keciiilll banget, sampai-sampai kita mungkin nggak tau, ada kucingnya atau nggak. Akhirnya ditempuh jalan gambling.

Dimana-mana, yang namanya gambling, pasti butuh nyali, butuh guts. Ada yang bilang, orang bernyali besar dengan orang yang bodoh, bedanya tipis. Dan kadang, semakin bodoh orang, semakin besar nyalinya. Celakanya, banyak orang bodoh di software project (hey, that's including me, though I think I'm much smarter now :-)). Kenapa bisa bodoh? Udah tau barangnya ditutup karung, masih yakin juga kalau isinya sesuai dengan yang dipikirkan. Begitu dibuka, gonjreng! Ternyata membuat kantung kempes (=overbudget), never-ending-lembur (=overschedule), membuat orang frustasi (=high turnover), membuat kuping panas (=customer ngomel).

Unfortunately, dunia software project memang dunia kucing dalam karung, terlepas dari orangnya bodoh atau pintar, bernyali atau tidak. Mungkin ini takdirnya para software developer, yang selalu harus membeli dalam karung. Atau jalan hidupnya para customer, yang selalu menjual menggunakan karung.

Manusia belajar, bagaimana caranya supaya kucing dalam karung bisa diintip sedetil-detilnya dalam waktu yang sesingkat-singkatnya dengan biaya yang semurah-murahnya. Perlu dicatat disini: ngintip ke dalam karung itu susah, karena butuh waktu, butuh duit, butuh keahlian. Sementara, customer kepengen cepet, nggak pengen keluar duit, nggak mau repot-repot membuka karung.

Bermunculanlah berbagai macam akal-akalan dalam rangka mengerjakan software project dengan sukses, ada yang namanya waterfall, spiral, unified framework, sampai agile programming. (nggak ngerti? jadikanlah Google sebagai penolongmu). Untuk project sederhana, waterfall merupakan teknik yg paling populer karena layaknya aliran air, prosesnya natural (alias nggak usah banyak mikir). Tapi untuk project-project menengah sampai besar, jangan sekali-kali ber-waterfall, karena hampir bisa dipastikan, project tersebut akan freefall.

Lalu apa hubungannya basa-basi panjang lebar di atas dengan Programmer & Designer yang bagaikan anjing dengan kucing? Sebelumnya kita lihat dulu, apa sebetulnya peran programmer & designer dalam sebuah software project. Designer (atau analyst) bertugas menganalisis apa-apa saja yang akan dibuat, kemudian dituangkan dalam bentuk desain. Desain tersebut dilimpahkan ke programmer untuk diimplementasikan dalam bentuk program (istilahnya: coding).

Seperti tadi sudah disampaikan, kita tidak pernah tau secara utuh, seperti apa software yang akan dibuat. Karena kita tidak tau secara utuh dari awal, maka desain yang dibuat oleh desainer, dapat berubah-ubah seiring jalannya waktu. Berubah bisa berarti bertambah, atau bisa berarti diganti dengan hal lain yang sama sekali berbeda. Nah, perubahan-perubahan inilah yang tidak disukai oleh programmer. Udah capek-capek dibuatkan programnya, eh ternyata desainnya diganti. Walhasil, program tersebut tidak terpakai sama sekali.

Sebetulnya, ada taktik-taktik khusus untuk mengantisipasi perubahan desain seperti itu. Tapi yang namanya taktik, belum tentu 100% berhasil, kemungkinan gagalnya pasti ada. Celakanya, semakin rewel sang customer, biasanya semakin tinggi tingkat perubahan desain.

-- Semakin rewel sang customer, maka semakin runcing permusuhan antara designer & programmer.

Wait, I didn't mention Project Manager at all. Maybe next time. For those who have a high interest in project management, Software Project Management is the must read book.

Sepertinya quote di atas perlu ditambah:

-- Semakin rewel sang customer, maka semakin runcing permusuhan antara designer & programmer.
    Project Manager lah yang dapat mengatasi semua itu.