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