Đối với tôi, tôi thích cách tiếp cận mà Kent Beck đưa ra trong XP (không chắc đó là ý tưởng "của anh ấy" hay của người khác nhưng đó là nơi tôi nghe thấy lần đầu tiên):
Nó đủ khó để giải quyết các vấn đề ngày nay mà không cố gắng tìm ra vấn đề của ngày mai là gì và cũng giải quyết chúng.
Các nhà phát triển có thể dành nhiều thời gian cho các giải pháp cho các yêu cầu không tồn tại, các trường hợp cạnh sẽ không bao giờ xảy ra hoặc thậm chí là các vấn đề thực sự trong đó tác động của vấn đề thấp hơn đáng kể so với chi phí ngăn chặn.
Đây là thời gian có thể được đưa vào những thứ mà người dùng sẽ thực sự muốn và sử dụng, những thứ sẽ mang lại cho họ những lợi ích sẽ lớn hơn nhiều so với sự bất tiện sẽ xảy ra trong trường hợp không thể xảy ra khi một trong những điều này thực sự xảy ra.
Ngoài kết quả không tối ưu này cho người dùng, tác động đối với nhà phát triển kỹ thuật quá mức theo cách này có xu hướng vượt qua mã phức tạp, khó hỗ trợ hơn và khó tăng cường hơn.
Vì vậy, đối với tôi nếu bạn biết, hoặc có thể khá chắc chắn, rằng một cái gì đó là một yêu cầu hoặc sẽ gây ra vấn đề thì hãy giải quyết nó, nếu không thì không.
Bạn có thể phải quay lại và làm lại khi nhận ra rằng có một yêu cầu rộng hơn so với bạn đã thực hiện ban đầu, nhưng nhìn chung tổng nỗ lực bạn bỏ ra trong dự án vẫn sẽ thấp hơn vì trong hầu hết các trường hợp sẽ không xảy ra.