"अतिरिक्त जटिलता का बिंदु" अंग्रेजी में निम्नानुसार है:
ओह मेरे भगवान क्या यह बकवास है।
परेशानी यह है, यह वास्तव में सरल कुछ करने के लिए लागू कर सकते हैं, लेकिन इतने भयानक तरीके से लागू किया जाता है कि आपके पास एक ही प्रतिक्रिया है।
इसलिए कुछ बहुत ही भयानक से बहुत जटिल कुछ अलग करना मुश्किल हो सकता है।
कैसे: वास्तव में सभी सॉफ्टवेयर के लिए होता है इस तरह से एक सा प्रक्रिया है:
चरण 1: एक अच्छी कल्पना है, एक अच्छा डिज़ाइन करें, अच्छा सामान लागू करें। सब लोग खुश।
चरण 1 के अंत में: डेवलपर्स अपने डिजाइन की अद्भुत लालित्य पर खुद को बधाई देते हैं, और खुश सोच से दूर जाते हैं "मेरे पास दूसरों के लिए भविष्य में चीजों को जोड़ने के लिए यहां एक अद्भुत विरासत है, यह अद्भुत होगा और दुनिया एक अद्भुत होगी बेहतर स्थान।"
चरण 2: कुछ बदलाव किए जाते हैं, चीजें जुड़ती हैं, नए कार्य शामिल होते हैं। चरण 1 से वास्तुकला और संरचना ने इसे काफी दर्द रहित प्रक्रिया बना दिया। [लेकिन उफ़, "क्रेफ़्ट फ़ैक्टर" बस थोड़ा बढ़ गया।]
चरण 2 के अंत में: डेवलपर्स अपने डिजाइन की अद्भुत लालित्य पर खुद को बधाई देते हैं, और खुश सोच से दूर चले जाते हैं "गी मैं चरण 1 में उन सभी भत्ते को बनाने के लिए बहुत चालाक हूं। यह बहुत अच्छी तरह से चला गया। मेरे पास एक अद्भुत विरासत है। दूसरों के लिए भविष्य में चीजों को जोड़ने के लिए, यह अद्भुत होगा और दुनिया एक बेहतर जगह होगी। ”
चरण 3: अधिक परिवर्तन किए जाते हैं, अधिक चीजें जोड़ी जाती हैं, अधिक नए कार्य होते हैं, सामान का एक गुच्छा बदल जाता है, उपयोगकर्ता की प्रतिक्रिया वास्तव में सुनी जाती है।
चरण 3 के अंत में: डेवलपर्स अपने डिजाइन की अद्भुत लालित्य पर खुद को बधाई देते हैं, और काफी खुश सोच से दूर जाते हैं "जी यह आर्किटेक्चर बहुत सारे परिवर्तनों को आसानी से स्लॉट में बदलने की अनुमति देने के लिए बहुत अच्छा है। लेकिन मैं थोड़ा नाखुश हूं। X और Y और Z के बारे में। अब उन्हें थोड़ा साफ किया जा सकता है। लेकिन !!! अहह !!! मैं चरण 1 में उन सभी भत्तों को बनाने में बहुत चतुर हूं। यह बहुत अच्छी तरह से हुआ। मेरे पास यहां एक अद्भुत विरासत है। दूसरों को भविष्य में चीजों को जोड़ने के लिए, यह अद्भुत होगा और दुनिया एक बेहतर जगह होगी। ”
चरण 4: बस चरण 3 को छोड़कर।
चरण 4 के अंत में: डेवलपर्स को लगता है: "यह सामान जो इतना अच्छा था, उसे बनाए रखने के लिए UGLY मिल रहा है। यह वास्तव में कुछ गंभीर बदलाव है। मैं वास्तव में इस पर काम करना पसंद नहीं कर रहा हूं। इसे फिर से तैयार करने की आवश्यकता है। मुझे आश्चर्य है कि बॉस क्या है कहेंगे जब मैं उसे बताता हूं कि इसे 6 सप्ताह की आवश्यकता है और उपयोगकर्ताओं के लिए इस के अंत में देखने के लिए कुछ भी नहीं होगा ... लेकिन मुझे ऐसा करने से 5 साल का एक और भावी भविष्य संशोधन गुंजाइश मिल जाएगी .... हम्म्म्म ।। , कुछ बीयर के लिए पब जाने का समय। "
चरण 5: परिवर्तनों का एक गुच्छा बनाने की आवश्यकता है।
और चरण 5 को पूरा करते हुए डेवलपर्स एक-दूसरे से कहते हैं: "यह कोड बेकार है। किसने यह लिखा है? उन्हें इसका भयानक होना चाहिए। हम इसे फिर से लिखने के लिए तैयार हैं।"
चरण 5 घातक है। यह वह जगह है जहां क्रेफ़्ट कारक इतना खराब हो गया है कि कोड में कुछ और बदलाव नहीं हो सकते हैं, इसके लिए कुछ बड़े बदलावों की आवश्यकता है।
चरण 5 में परेशानी इसे दूर फेंकने और फिर से शुरू करने की इच्छा है। यह घातक है "नेटस्केप फैक्टर"। यह गूगल जाओ। कंपनियां इस बिंदु पर मर जाती हैं, क्योंकि फिर से शुरू करने का मतलब है कि आप तथ्यों के बजाय लगभग 50% मान्यताओं के साथ शुरू करते हैं, ज्ञान के बजाय 150% उत्साह, विनम्रता के बजाय 200% अहंकार ("वे लोग इतने मूर्ख थे!")। और आप नए कीड़े का एक पूरा गुच्छा शुरू करते हैं।
सबसे अच्छी बात रिफ्लेक्टर करना है। एक बार में थोड़ा बदलें। यदि आर्किटेक्चर थोड़ा थक रहा है, तो इसे ठीक करें। जोड़ें, विस्तार करें, सुधारें। धीरे - धीरे। रास्ते में प्रत्येक कदम पर, परीक्षण, परीक्षण, और कुछ और परीक्षण। इस तरह से वृद्धिशील परिवर्तन का मतलब है कि 10 साल बाद वर्तमान और मूल कोड दादाजी कुल्हाड़ी की तरह हैं ("इसके 10 नए सिर और 3 नए हैंडल थे लेकिन यह अभी भी दादा कुल्हाड़ी है")। दूसरे शब्दों में, बहुत आम नहीं बचा है। लेकिन आप पुराने से नए में धीरे-धीरे और सावधानी से चले गए। यह जोखिम को कम करता है, और ग्राहकों के लिए, यह पेशाब-बंद कारक को कम करता है।