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