2 पॉइंट द्वारा GN⁺ 2025-01-14 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • David A. Wheeler की समीक्षा

    • David J. Agans की "Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems" को software और hardware developers के लिए एक अनिवार्य debugging किताब माना गया है.
    • यह किताब किसी खास तकनीक पर नहीं, बल्कि bugs को ढूंढने और ठीक करने के मूल सिद्धांतों को समझाती है, और खास तौर पर beginners तथा intermediate developers के लिए उपयोगी है.
    • किताब "नौ नियमों" के इर्द-गिर्द संगठित है, और हर नियम की व्याख्या तथा उसके उपयोग का तरीका बताती है.
  • नौ नियम

    • सिस्टम को समझें: manual पढ़ना, basics को समझना, और tools का सही उपयोग करना महत्वपूर्ण है.
    • failure को दोबारा पैदा करें: failure को फिर से reproduce करना और intermittent bugs के कारण को ढूंढना महत्वपूर्ण है.
    • सोचना रोकें और observe करें: पहले data इकट्ठा करें, और अनुमान पर निर्भर न रहें.
    • divide and conquer: समस्या को धीरे-धीरे सीमित करें और ऐसे test patterns का उपयोग करें जिन्हें आसानी से पहचाना जा सके.
    • एक बार में एक ही चीज़ बदलें: मुख्य तत्वों को isolate करें और tests को एक-एक करके बदलें.
    • audit trail बनाए रखें: आपने क्या किया और उसके क्या परिणाम मिले, इसे दर्ज करें, और समझें कि हर detail महत्वपूर्ण हो सकती है.
    • plug की जांच करें: अपनी धारणाओं पर शक करें और tools को test करें.
    • नई दृष्टि प्राप्त करें: नई insights लें और अनुभव की आवाज़ को सुनना महत्वपूर्ण है.
    • अगर fix नहीं हुआ, तो ठीक नहीं हुआ: यह सुनिश्चित करें कि समस्या सच में हल हुई है, और उसके root cause को ठीक करें.
  • किताब की खूबियां और कमियां

    • यह किताब debugging के मूल सिद्धांतों पर केंद्रित है, और इसी कारण दूसरी technical किताबों से अलग दिखती है.
    • इसमें intermittent problems को संभालने के तरीकों पर व्यावहारिक सलाह शामिल है.
    • किताब के appendix में संबंधित websites और poster download links दिए गए हैं.
    • कमी यह है that सभी नियमों और sub-rules की one-page सूची नहीं है, और किसी खास तकनीक पर ठोस सलाह भी सीमित है.
  • निष्कर्ष

    • यह किताब debugging के मूल सिद्धांतों को सीखने या फिर से याद करने के लिए उपयोगी है, और beginners तथा experts दोनों के लिए मददगार है.
    • David A. Wheeler इस किताब की जोरदार सिफारिश करते हैं और मूल सिद्धांतों के महत्व पर ज़ोर देते हैं.

1 टिप्पणियां

 
GN⁺ 2025-01-14
Hacker News राय
  • बग वाले कोड को ठीक करने का प्रलोभन बहुत होता है, लेकिन टूटे हुए कोड को ठीक करने से कहीं आसान काम चल रहे कोड को तोड़ देना है। Christmas lights के उदाहरण की तरह, काम करने वाले न्यूनतम उदाहरण से शुरू करके समस्या ढूँढना प्रभावी होता है

  • समस्या हल करते समय सबसे ज़रूरी बात घबराना नहीं है। स्पष्ट सोच की ज़रूरत होती है, और अच्छा मैनेजर समस्या-समाधान पर ध्यान केंद्रित करने में मदद करता है

  • git bisect कई commits में से समस्या पैदा करने वाले commit को खोजने में उपयोगी है। खासकर बड़े codebase में यह समस्या को जल्दी ढूँढने में मदद करता है

  • सिस्टम को समझना महत्वपूर्ण है, लेकिन हर manual पढ़ना अव्यावहारिक है। व्यावहारिक दृष्टिकोण ज़रूरी है

  • सही file को सही machine पर edit करना महत्वपूर्ण है

  • समस्या-समाधान की सोच विकसित करने के लिए सुझाई गई किताबें:

    • "The Martian" by Andy Weir
    • "Zen and the Art of Motorcycle Maintenance"
    • "The Three-Body Problem"
    • "To Engineer Is Human" by Henry Petroski
    • "Surely You're Joking, Mr. Feynman!"
  • अतिरिक्त नियम:

    • "संदेह करो कि गलती आपकी अपनी है।" पहले code changes पर शक करना चाहिए
    • "जब बग मिल जाए, तो उससे जुड़े दूसरे मुद्दे भी ढूँढो।" उसी तरह की समस्या कहीं और भी हो सकती है
    • "users और maintenance programmers को प्राथमिकता देकर optimize करो"
  • regression रोकने के लिए CI में बग को test के रूप में जोड़ना चाहिए। fix से पहले और बाद में यह जाँचना चाहिए कि CI fail और pass हो रहा है या नहीं

  • debugging के बाद भी काम खत्म नहीं होता। हर बग के लिए तीन सवाल पूछने चाहिए:

    1. क्या यही गलती कहीं और भी है?
    2. इस बग के पीछे छिपा अगला बग क्या है?
    3. ऐसे बग को रोकने के लिए क्या करना चाहिए?
  • न्यूनतम setup के साथ समस्या को reproduce करना महत्वपूर्ण है। ज़्यादातर मामलों में इससे बग मिल जाता है। कोड को आधा-आधा बाँटकर यह ढूँढना प्रभावी है कि ठीक कौन-सा हिस्सा गलत है