मेरे लिए मुझे पसंद है कि केंट बेक एक्सपी में आगे रखता है (सुनिश्चित नहीं है कि यह "उसका" विचार है या किसी और का है, लेकिन यह वह जगह है जहां मैंने पहली बार सुना है):
आज की समस्याओं को हल करने के लिए यह कठिन है कि कल की समस्याएं क्या हैं और उन्हें भी हल करें।
डेवलपर्स उन आवश्यकताओं के समाधान पर बहुत समय बिता सकते हैं जो मौजूद नहीं हैं, किनारे के मामले जो कभी नहीं होंगे या यहां तक कि वास्तविक समस्याएं भी होंगी जहां समस्या का प्रभाव इसे रोकने की लागत से काफी कम है।
यह वह समय है जिसे उन चीजों में डाला जा सकता है जो उपयोगकर्ता वास्तव में चाहते हैं और उपयोग करेंगे, ऐसी चीजें जो उन्हें लाभ देंगी जो बड़े पैमाने पर असुविधा को भी पछाड़ देंगी जो कि अप्रत्याशित घटना के कारण होगी कि इनमें से एक चीज वास्तव में होती है।
उपयोगकर्ता के लिए इस गैर-इष्टतम परिणाम से परे, इस तरह से अधिक इंजीनियरिंग के डेवलपर पर प्रभाव जटिल कोड से अधिक हो जाता है जो समर्थन करने के लिए कठिन है और बढ़ाने के लिए कठिन है।
तो मेरे लिए अगर आप जानते हैं, या काफी निश्चित हो सकता है, कि कुछ एक आवश्यकता है या एक समस्या पैदा करने जा रहा है तो इसे संबोधित करें, अगर ऐसा नहीं है।
मूल रूप से कार्यान्वित किए जाने की तुलना में जब आपको पता चला कि व्यापक आवश्यकता थी, तो आपको वापस आना होगा और इसे फिर से काम करना पड़ सकता है, लेकिन आम तौर पर परियोजना में आपके द्वारा लगाए गए कुल प्रयास अभी भी कम होंगे क्योंकि अधिकांश मामलों में ऐसा नहीं होगा।