Dalam pengalaman saya polanya adalah ini:
- Sistem bekerja, seringkali selama bertahun-tahun
- Kesalahan dilaporkan
- Pengembang menyelidiki kesalahan dan menemukan sedikit kode yang tampaknya benar-benar cacat dan menyatakan bahwa itu "tidak akan pernah berhasil"
- Bug diperbaiki dan legenda kode yang tidak akan pernah bisa berfungsi (tetapi tidak selama bertahun-tahun) tumbuh
Mari bersikap logis di sini. Kode yang tidak akan pernah berhasil ... tidak akan pernah bisa berfungsi . Jika melakukan pekerjaan maka pernyataan tersebut adalah palsu.
Jadi saya akan mengatakan bahwa bug persis seperti yang dijelaskan (yang mengamati kode cacat berhenti bekerja) jelas-jelas omong kosong.
Pada kenyataannya apa yang terjadi adalah satu dari dua hal:
1) Pengembang belum sepenuhnya memahami kodenya . Dalam hal ini kode biasanya berantakan dan di suatu tempat di dalamnya memiliki kepekaan besar tetapi tidak jelas untuk beberapa kondisi eksternal (katakanlah versi OS tertentu atau konfigurasi yang mengatur bagaimana beberapa fungsi bekerja dalam beberapa cara kecil namun signifikan). Kondisi eksternal ini diubah (misalnya dengan peningkatan atau perubahan server yang diyakini tidak terkait) dan dengan demikian menyebabkan kode rusak.
Pengembang kemudian melihat kode dan, tidak memahami konteks historis atau memiliki waktu untuk menelusuri setiap dependensi dan skenario yang mungkin, menyatakan bahwa itu tidak akan pernah berhasil dan menulis ulang.
Dalam situasi ini, hal yang perlu dipahami di sini adalah bahwa gagasan "itu tidak akan pernah berhasil" terbukti salah (karena memang benar).
Itu tidak berarti menulis ulang itu adalah hal yang buruk - itu sering tidak, sementara itu baik untuk tahu persis apa yang salah sering menghabiskan waktu dan menulis ulang bagian kode sering lebih cepat dan memungkinkan Anda untuk memastikan bahwa Anda telah memperbaiki hal-hal.
2) Sebenarnya itu tidak pernah berhasil, hanya saja tidak ada yang pernah memperhatikan . Ini sangat umum, terutama dalam sistem besar. Dalam hal ini seseorang baru mulai dan mulai melihat hal-hal dengan cara yang belum pernah dilakukan sebelumnya, atau proses bisnis berubah yang membawa beberapa kasus tepi kecil ke dalam proses utama, dan sesuatu yang tidak pernah benar-benar bekerja (atau bekerja beberapa tetapi tidak semua waktu) ditemukan dan dilaporkan.
Pengembang melihatnya dan menyatakan "itu tidak akan pernah berhasil" tetapi para pengguna mengatakan "omong kosong, kami telah menggunakannya selama bertahun-tahun" dan mereka agak benar tetapi sesuatu yang mereka anggap tidak relevan (dan biasanya gagal disebutkan sampai pengembang menemukan kondisi yang tepat pada titik mana mereka pergi "oh ya, kami melakukan itu sekarang dan tidak sebelumnya") telah berubah.
Di sini pengembangnya benar - itu tidak akan pernah berhasil dan tidak pernah berhasil.
Namun dalam kedua kasus tersebut salah satu dari dua hal itu benar:
- Klaim "itu tidak akan pernah berhasil" adalah benar dan itu tidak pernah berhasil - orang hanya berpikir itu berhasil
- Itu berhasil dan pernyataan "itu tidak akan pernah berhasil" adalah salah dan turun ke (biasanya masuk akal) kurangnya pemahaman tentang kode dan ketergantungannya