"Titik kompleksitas berlebih" disebut dalam bahasa Inggris sebagai:
OH Tuhanku APA ITU CRAP INI.
Masalahnya adalah, ini dapat diterapkan pada sesuatu yang sebenarnya sederhana, tetapi diterapkan sedemikian rupa sehingga Anda memiliki reaksi yang sama.
Jadi membedakan sesuatu yang sangat kompleks dari sesuatu yang sangat mengerikan bisa jadi sulit.
NAMUN: Apa yang sebenarnya cenderung terjadi pada semua perangkat lunak adalah proses sedikit seperti ini:
Langkah 1: Miliki spec yang bagus, lakukan desain yang bagus, terapkan hal-hal yang bagus. Semua orang senang.
Pada akhir langkah 1: para pengembang mengucapkan selamat kepada diri mereka sendiri atas keanggunan indah dari desain mereka, dan pergi dengan senang berpikir "Saya memiliki warisan yang luar biasa di sini bagi orang lain untuk menambahkan sesuatu di masa depan, itu akan luar biasa dan dunia akan menjadi tempat yang lebih baik."
Langkah 2: Beberapa perubahan dibuat, hal ditambahkan, fungsi baru disertakan. Arsitektur dan struktur dari Langkah 1 membuat proses ini cukup menyakitkan. [Tapi oops, "faktor kesalahan" hanya sedikit meningkat.]
Pada akhir langkah 2: para pengembang mengucapkan selamat kepada diri mereka sendiri atas keanggunan indah dari desain mereka, dan pergi dengan senang berpikir "Ya ampun aku telah membuat semua kelonggaran dalam Langkah 1. Ini berjalan dengan sangat baik. Saya memiliki warisan yang luar biasa di sini bagi orang lain untuk menambahkan hal-hal di masa depan, itu akan luar biasa dan dunia akan menjadi tempat yang lebih baik. "
Langkah 3: Lebih banyak perubahan dilakukan, lebih banyak hal ditambahkan, lebih banyak fungsi baru, banyak hal diubah, umpan balik pengguna sebenarnya sedang didengarkan.
Pada akhir langkah 3: para pengembang mengucapkan selamat kepada diri mereka sendiri atas keanggunan indah dari desain mereka, dan pergi dengan pemikiran yang cukup bahagia "Wah arsitektur ini cukup baik untuk memungkinkan begitu banyak perubahan untuk hanya slot masuk dengan mudah. Tapi saya sedikit tidak senang tentang X dan Y dan Z. Mereka bisa dibersihkan sedikit sekarang. Tapi !!! Ahhh !!! Saya sangat pintar untuk membuat semua uang saku pada Langkah 1. Ini berjalan sangat baik. Saya memiliki warisan yang indah di sini untuk orang lain untuk menambahkan hal-hal di masa depan, itu akan luar biasa dan dunia akan menjadi tempat yang lebih baik. "
Langkah 4: sama seperti langkah 3. Kecuali:
Pada akhir langkah 4: para pengembang berpikir: "Hal-hal yang sangat baik ini membuat UGLY tetap mempertahankan. Ini benar-benar membutuhkan beberapa perubahan serius. Saya tidak benar-benar suka mengerjakan ini. Perlu refactoring. Saya ingin tahu apa yang dilakukan bosnya. akan mengatakan ketika saya memberitahunya perlu 6 minggu dan tidak akan ada yang bisa dilihat pengguna di akhir ini ... tapi saya akan mendapatkan 5 tahun lagi ruang lingkup modifikasi yummy di masa depan dengan melakukan ini .... hmmm .. "Waktu untuk pergi ke pub untuk minum bir."
Langkah 5: Banyak perubahan perlu dilakukan.
Dan SELAMA langkah 5 pengembang berkata satu sama lain: "Kode ini payah. Siapa yang menulis ini? Mereka harus ditembak. Mengerikan. Kita HARUS MENULISNYA."
Langkah 5 fatal. Di sinilah faktor cruft menjadi sangat buruk sehingga kode tidak bisa hanya memiliki beberapa perubahan lagi, perlu beberapa perubahan BESAR.
Masalah pada Langkah 5 adalah keinginan untuk membuangnya dan memulai lagi. Alasan ini fatal adalah "The Netscape Factor". Go google it. Perusahaan DIE pada titik ini, karena memulai lagi berarti Anda mulai dengan asumsi sekitar 50%, bukannya fakta, 150% antusiasme, bukannya pengetahuan, 200% arogansi, bukan kerendahan hati ("Orang-orang itu sangat bodoh!"). Dan Anda memperkenalkan sejumlah bug baru.
Hal terbaik untuk dilakukan adalah refactor. Ubah sedikit demi sedikit. Jika arsitekturnya sedikit lelah, perbaiki. Tambah, perluas, tingkatkan. Bertahap. Di setiap langkah di sepanjang jalan, uji, uji, dan uji lagi. Perubahan tambahan seperti ini berarti bahwa 10 tahun kemudian kode saat ini dan asli seperti kapak kakek ("memiliki 10 kepala baru dan 3 pegangan baru tetapi masih kapak kakek"). Dengan kata lain, tidak ada banyak kesamaan. Tapi Anda pindah dari yang lama ke yang baru secara bertahap dan hati-hati. Ini mengurangi risiko, dan bagi pelanggan, itu mengurangi faktor kesal.