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