Seorang teman diskusi saya, Lutfi Zuchri, yang sering “menjerumuskan” saya dalam beberapa proyek situs web/sistem informasi (he3x..), pernah berbagi “kebijaksanaan” mengenai dunia software engineering (rekayasa perangkat lunak). Lutpenk, begitu saya biasa memanggilnya, “bersabda” (entah dia kopi paste dari mana :-D ):

“Apa yang sebenarnya dibutuhkan orang adalah ‘lubang’ sementara kita terlalu membanggakan ‘bor’.”

Katanya soal rekayasa perangkat lunak, kok malah ngomongin bor? Hmmm, maksudnya begini, apa yang sebenarnya dibutuhkan oleh pengguna sistem informasi adalah mereka tidak perlu ribet menangani transaksi secara manual, efisiensi pekerjaan, dan mampu mengawasi jalannya operasi organisasi secara aktual, tajam, dan terpercaya ala Liputan 6. Sementara itu, orang-orang yang baru belajar membuat program (seperti saya) masih berkutat dengan hal-hal yang sifatnya low level seperti, tentu saja, coding. Jadi, apa yang sering kami saya banggakan adalah: “Pokoknya harus pake Java!”; “CakePHP emang keren…”, “Nih, AJAX jadi lebih simpel kan kalo pake Prototype”; “Saya sudah menguasai Java, PHP, VB, C#, MySQL, Postgre, Cake, CodeIgnitter, dll… (yang bener???)”; “Pakai MySQL aja yang open source“;

Tapi, bagi pengguna sistem informasi, kenyataan sering yang dijumpai di lapangan adalah: “emang gue pikirin!”. Mereka menginginkan aplikasi yang sudah jadi dan memenuhi kebutuhan mereka, bukan potongan kode-kode program yang keren, tapi tidak membentuk aplikasi yang bisa digunakan secara utuh. Mereka sudah terlalu sibuk dengan pekerjaan sehari-hari mereka. Tentu saja mereka tidak paham keunggulan Java (bagi pengguna Java, tapi tidak untuk Paul Graham :-D ), tidak peduli dengan lebih simpelnya AJAX dengan Prototype. dan tak mau tahu apakah kita sudah menguasai PHP, Java, CakePHP, MySQL, dan sebagainya. Terlebih lagi kebanyakan dari mereka hanyalah pengguna komputer awam, hal ini berarti mereka hanya bisa menggunakan aplikasi komputer yang sehari-hari mereka pakai.

Ada beberapa pelajaran yang bisa dipetik:

  1. Coding Tidak Sama dengan Rekayasa Perangkat Lunak.

    Coding hanyalah salah satu bagian dari keseluruhan proses rekayasa perangkat lunak. Bagian yang lain adalah: analisis, penyusunan spesifikasi, perancangan, pembuatan dokumentasi, pengujian, pelatihan, migrasi data, instalasi, perawatan, dan sebagainya. Tidak begitu program jadi maka selesailah pekerjaan. Justru pemberian support dan jasa maintenance perangkat lunak dapat menjadi sumber pendapatan utama pengembang perangkat lunak.

  2. Ukuran Kualitas dan “Kejadian” Sebuah Program adalah Kesesuaiannya dengan Kebutuhan Pengguna
  3. Perangkat lunak dikatakan baik dan berkualitas tinggi jika mampu memenuhi kebutuhan penggunanya, bukan karena dibuat menggunakan bahasa pemrograman/library yang canggih.
    Ukuran “kejadian” suatu perangkat lunak juga ditentukan oleh pengguna, bukan oleh penilaian programmer. Oleh karena itu, spesifikasi harus jelas sejak awal, analisis dulu dengan baik, dengar dan utamakan masukan pengguna, utamakan tahap pengujian karena makan waktu paling banyak, dan selalu libatkan pengguna akhir (end-user).

  4. Avoid Reinventing The Wheel. Use Existing Pieces Wherever Possible.
  5. Jangan membuat segalanya dari nol jika sudah tersedia fasilitas yang sama dalam library, tools, framework, dan komponen-komponen lain yang sudah ada, entah itu yang disediakan secara default atau buatan pihak ketiga.
    Selain mempercepat proses perancangan dan implementasi, komponen yang sudah ada juga telah banyak diuji sehingga meminimalkan bug. Hal ini juga membuat pengguna akhir dapat segera mencoba perangkat lunak yang dibuat.
    Gunakan komponen yang sudah ada (bawaan/buatan pihak ketiga). Gunakan tools yang memudahkan, jangan yang malah menyulitkan. Ada banyak tools, baik jumlah maupun jenisnya. Prinsipnya: ketahui kegunaan tools tersebut dan gunakan tools yang benar-benar Anda perlukan.

Tulisan ini hanyalah pendapat saya semata, berdasarkan pemikiran, pengetahuan, dan pengalaman saya yang tentu saja masih sangat terbatas. Oleh karena itu, jika pembaca memiliki pendapat dan pengalaman yang berbeda, saya akan merasa senang bila pembaca mau membaginya lewat komentar atau lacak balik ke artikel ini.

Related posts:

  1. Propietary Software, Enterprise Client, dan Better Software Process