Saya yakin bahwa jumlah pekerjaan rutin dalam pengembangan perangkat lunak adalah - dan seharusnya - relatif kecil, jika tidak dapat diabaikan, dan bahwa ini adalah masalah mendasar dari estimasi perangkat lunak.
Izinkan saya menjelaskan bagaimana saya sampai pada kesimpulan ini dan beri tahu saya jika argumentasi tersebut memiliki kelemahan serius:
Semua yang dapat diperkirakan dengan akurasi tinggi adalah pekerjaan rutin, artinya hal-hal yang telah dilakukan sebelumnya. Semua jenis pekerjaan lain yang melibatkan penelitian dan kreativitas tidak dapat benar-benar diperkirakan, setidaknya tidak dengan akurasi, katakanlah, +/- 20 persen.
Pengembangan perangkat lunak adalah tentang menghindari tugas yang berulang. Salah satu prinsip dasarnya adalah KERING (jangan ulangi sendiri). Setiap kali seorang programmer menemukan dirinya melakukan hal-hal yang berulang, saatnya untuk menemukan abstraksi yang menghindari pengulangan ini. Abstraksi-abstraksi ini dapat berupa hal-hal sederhana seperti mengekstraksi kode yang diulang menjadi suatu fungsi atau meletakkannya dalam satu lingkaran. Mereka juga bisa lebih kompleks seperti membuat bahasa khusus domain. Bagaimanapun, mengimplementasikannya akan melibatkan penelitian (adakah yang pernah melakukan ini sebelumnya?) Atau kreativitas.
Dari dua poin ini saya menarik kesimpulan di atas.
Sebenarnya saya sudah lama bertanya-tanya mengapa hubungan ini tidak disebutkan dalam setiap diskusi, posting blog atau artikel lain tentang estimasi perangkat lunak. Apakah ini terlalu teoretis? Apakah asumsi saya salah? Atau itu terlalu sepele - tetapi kemudian, mengapa sebagian besar pengembang yang saya tahu percaya bahwa mereka dapat melakukan estimasi dengan akurasi +/- 20 persen atau lebih baik?