Seperti yang dinyatakan oleh DeMarco dan Lister di Peopleware sekitar 20 tahun yang lalu, sebagian besar proyek perangkat lunak yang gagal gagal bukan karena tantangan teknis, tetapi masalah sosiologis . Ini tidak berubah dalam dekade terakhir, tidak peduli seberapa banyak alat kami telah membaik.
Manajemen yang salah, harapan yang tidak realistis, gagal mendapatkan orang yang tepat untuk pekerjaan itu, dan / atau tidak membiarkan mereka melakukan pekerjaan mereka, akibatnya gagal mempertahankannya; tempat kerja dan alat yang tidak cocok untuk pekerjaan pengembangan SW; konflik pribadi yang tidak tertangani; politik ; ini hanya beberapa dari masalah-masalah khas yang mungkin membuat proyek hancur sejak awal.
Mengapa menulis kode yang baik lebih sulit?
Saya tidak begitu yakin benar-benar sulit untuk menulis kode yang baik sekarang daripada beberapa dekade yang lalu. Bahkan, dibandingkan dengan kode mesin atau perakitan, semua yang kita miliki sekarang di arus utama lebih mudah untuk ditangani. Hanya kita mungkin perlu menghasilkan lebih banyak.
Apakah hanya karena faktor-faktor yang disebutkan, waktu dan kompleksitas?
Ya, kompleksitas yang dapat dicapai tentu saja meningkat (dan terus meningkat) karena kekuatan alat kami meningkat. Dengan kata lain, kami terus mendorong batas. Yang saya terjemahkan sehingga sama sulitnya untuk memecahkan tantangan terbesar hari ini seperti 30 tahun yang lalu untuk menyelesaikan tantangan terbesar hari itu.
OTOH karena bidang ini telah berkembang sangat pesat, sekarang ada lebih banyak masalah "kecil" atau "diketahui" daripada 30 tahun yang lalu. Masalah-masalah ini secara teknis (seharusnya) tidak menjadi tantangan lagi, tapi ... di sini memasuki pepatah di atas :-(
Juga jumlah programmer sejak itu tumbuh sangat pesat. Dan setidaknya persepsi pribadi saya adalah bahwa tingkat rata-rata pengalaman dan pengetahuan telah menurun, hanya karena ada jauh lebih banyak yunior tiba terus ke lapangan daripada ada senior yang bisa mendidik mereka.
Apakah metodologi tidak dipraktikkan dengan benar?
IMHO tentu tidak. DeMarco dan Lister memiliki kata-kata kasar tentang Metodologi M besar. Mereka mengatakan bahwa tidak ada metodologi yang bisa membuat proyek berhasil - hanya orang-orang dalam tim yang bisa. OTOH metodologi kecil-m yang mereka puji cukup dekat dengan apa yang sekarang kita kenal sebagai "gesit", yang menyebar luas (IMHO karena alasan yang baik). Belum lagi praktik yang baik seperti pengujian dan refactoring unit, yang hanya 10 tahun yang lalu tidak dikenal secara luas, dan saat ini bahkan banyak lulusan tahu ini.