Benim için Kent Beck'in XP'de ortaya koyduğu yaklaşımı seviyorum ("onun" fikri mi yoksa başkasının mı olduğundan emin değilim ama ilk duyduğum yer bu):
Yarının problemlerinin ne olduğunu çözmeye çalışmadan bugünün problemlerini çözmek ve bunları çözmek yeterince zordur.
Geliştiriciler, var olmayan gereksinimler, asla meydana gelmeyecek durumlar ve hatta sorunun etkisinin önlenmesi maliyetinden önemli ölçüde daha az olduğu gerçek sorunlar için çözümler üzerinde çok zaman harcayabilirler.
Bu, kullanıcıların gerçekten isteyecekleri ve kullanacakları şeylere konabilecek, bunlardan birinin gerçekleşmesi olası olmayan olayda bile ortaya çıkabilecek rahatsızlıktan bile ağır basacak faydalar sağlayacak şeyler.
Kullanıcı için bu optimal olmayan sonucun ötesinde, bu şekilde aşırı mühendisliğin geliştiricisi üzerindeki etkisi, desteklenmesi daha zor ve geliştirilmesi daha zor olan karmaşık kod üzerinde olma eğilimindedir.
Bu yüzden benim için bir şeyin bir gereklilik olduğunu veya bir soruna neden olacağını biliyorsanız veya oldukça emin olabilirseniz, o zaman bunu ele almayın, eğer değilse.
Başlangıçta uyguladığınızdan daha geniş bir gereksinim olduğu ortaya çıktığında geri dönüp yeniden çalışmanız gerekebilir, ancak çoğu durumda olmayacağınız projenin toplam çabası hala daha düşük olacaktır.