Bagi saya, saya suka pendekatan yang Kent Beck kemukakan di XP (tidak yakin apakah itu ide "miliknya" atau milik orang lain tetapi di situlah saya pertama kali mendengarnya):
Cukup sulit untuk menyelesaikan masalah hari ini tanpa berusaha mencari tahu apa masalah hari esok dan menyelesaikannya juga.
Pengembang dapat menghabiskan banyak waktu pada solusi untuk persyaratan yang tidak ada, kasus tepi yang tidak akan pernah terjadi atau bahkan masalah asli di mana dampak dari masalah secara signifikan lebih kecil daripada biaya pencegahannya.
Ini adalah waktu yang dapat dimasukkan ke dalam hal-hal yang benar-benar diinginkan dan digunakan oleh pengguna, hal-hal yang akan memberi mereka manfaat yang secara besar-besaran akan melebihi bahkan ketidaknyamanan yang akan disebabkan oleh kejadian yang tidak mungkin terjadi jika salah satu dari hal-hal ini benar-benar terjadi.
Di luar hasil yang tidak optimal ini bagi pengguna, dampaknya terhadap pengembang rekayasa berlebih dengan cara ini cenderung lebih dari kode kompleks yang lebih sulit untuk didukung dan lebih sulit untuk ditingkatkan.
Jadi bagi saya jika Anda tahu, atau dapat cukup yakin, bahwa sesuatu adalah persyaratan atau akan menyebabkan masalah maka atasi itu, jika tidak maka jangan lakukan.
Anda mungkin harus kembali dan memperbaikinya ketika ternyata ada persyaratan yang lebih luas daripada yang Anda implementasikan sebelumnya, tetapi umumnya upaya total yang Anda lakukan di seluruh proyek masih akan lebih rendah karena dalam kebanyakan kasus itu tidak akan terjadi.