Perangkat lunak atau program atau software mempunyai bentuk yang unik. Dalam sebuah situasi dimana diperlukan analogi untuk perangkat lunak, ternyata cukup sulit untuk mendapatkan analogi yang memuaskan. Analogi ini bisa jadi untuk perangkat lunak itu sendiri, atau bisa juga proses dalam pembuatan perangkat lunak, atau sesuatu hal lain yang berkaitan dengan perangkat lunak.
Pertama saya membuat sebuah ilustrasi seseorang yang melakukan pekerjaan membuat sebuah perangkat lunak. Disini bukan perusahaan, tetapi satu orang dalam artian yang sesungguhnya. Perangkat lunak dibuat atas keinginan sendiri, tanpa ada campur tangan pihak lain. Semua proses dilakukan sendiri oleh orang yang saya sebut saja sebagai programer. Proses ini dimulai dari nol, sampai menjadi sebuah perangkat lunak yang bisa digunakan. Untuk contohnya, perangkat lunak yang dihasilkan adalah sebuah program kalkulator.
Apa yang perlu dimiliki si programer untuk menghasilkan program kalkulator tersebut ?
Prosesnya dalam bentuk yang sederhana adalah sebagai berikut :
Setelah program kalkulator ini selesai, dalam teknologi komputer, program ini cukup mudah untuk diduplikasi. Untuk menghasilkan program kalkulator yang sama, tidak lagi memerlukan proses selama enam hari yang dijalani oleh si programer. Bisa jadi hanya beberapa menit saja, sudah bisa diduplikasi menjadi sekian banyak program kalkulator yang persis sama.
Demikian sebuah ilustrasi sederhana proses menghasilkan sebuah perangkat lunak. Tentu sesuai judul tulisan ini, proses apakah yang memiliki kemiripan dengan cerita di atas? Langkah dalam menghasilkan produk/barang lain, bisa jadi banyak yang sama dengan yang dilakukan oleh si programer. Yaitu memulai dengan desain/perencanaan, bekerja membuat barang sesuai desain, melakukan pengujian, kemudian diperbaiki jika ada yang kurang pas, dan setelah itu jadilah produk/barang tersebut. Hanya saja, setelah barang pertama jadi, untuk menghasilkan barang berikutnya kemungkinan besar langkah yang dikerjakan juga mengulang lagi langkah untuk menghasilkan barang yang pertama. Yang tidak dilakukan hanyalah langkah desain, karena menggunakan desain yang sama.
Dari ilustrasi di atas, terlihat bahwa menggunakan proses membuat sebuah produk yang berupa barang sebagai analogi untuk membuat perangkat lunak, tentu saja menjadi tidak tepat. Untuk membuat sebuah barang, untuk setiap barang berikutnya yang dihasilkan diperlukan bahan baku lagi, diperlukan sejumlah usaha dan waktu lagi, seperti ketika menghasilkan barang yang pertama. Hal ini tak terjadi dalam pembuatan perangkat lunak.
Sekarang dibuat ilustrasi seorang yang menghasilkan meja, yang saya sebut seorang tukang kayu. Untuk membuat sebuah meja, maka dilalui langkah-langkah seperti di atas, mulai dari desain sampai sebuah meja selesai dibuat. Untuk menghasilkan meja kedua yang sama dengan meja pertama, si tukang kayu memerlukan bahan serta tenaga dan waktu yang sama dengan ketika membuat meja pertama. Coba bandingkan dengan membuat perangkat lunak. Perangkat lunak dapat digandakan dengan lebih murah dan mudah. Sedangkan meja tidaklah demikian.
Analogi untuk pembuatan perangkat lunak yang cukup mendekati adalah proses pembuatan lagu. Seseorang yang membuat lagu akan melakukan langkah yang sama seperti di atas juga. Setelah lagu tersebut selesai dan disimpan dalam media penyimpan lagu, maka lagu ini bisa diduplikat.
Tulisan ini seharusnya berlanjut ke masalah free software, dan tentang harga untuk sebuah perangkat lunak. Untuk sementara pembaca yang budiman saja yang melanjutkannya sendiri :-)