बग के बारे में क्यों नहीं सोचता कभी-कभी आपको इसे हल करने में मदद मिलती है? [बन्द है]


12

कल मैंने दोपहर का एक अच्छा हिस्सा एक बग को ठीक करने की कोशिश में बिताया, जिसे मैंने तुच्छ समझा। मैं हलकों में घूम रहा था, कोई सुराग नहीं था कि क्या गलत था। कोड के बड़े हिस्से को फिर से लिखना। SO पर जाँच हो रही है। फिर भी कोई खुशी नहीं।

इसलिए मैं घर गया, कुत्ते को लेकर चला गया, थोड़ा टीवी देखा और सोने जाने से ठीक पहले बिंगो मुझे स्पष्ट गलती का एहसास हुआ जो मैं कर रहा था। आज सुबह इसे ठीक करने में लगभग 10 मिनट लगे।

जब मैं घर में था, मैं समस्या के बारे में सक्रिय रूप से नहीं सोच रहा था। फिर भी खुद को स्थिति से बाहर निकालने ने मुझे इसे हल करने में सक्षम बनाया।

ऐसा पहली बार नहीं हुआ है, और मुझे पता है कि यह प्रोग्रामिंग समस्या को हल करने का एक सामान्य तरीका है। मैंने लोगों को जवाब सपने में भी सुना है।

यह काम क्यों करता है?

शायद इससे भी महत्वपूर्ण बात यह है कि क्या एक अच्छा मार्गदर्शक है, जब आपको किसी समस्या से ब्रेक लेना चाहिए, ब्रेक कितना लंबा होना चाहिए, और कितनी देर बाद एक समस्या को प्रभावी होने से रोकना चाहिए?

मुझे लगता है कि मैं इस अवचेतन प्रसंस्करण (या जो कुछ भी चल रहा है) का अनुकूलन करने की कोशिश कर रहा हूं


3
मुझे यकीन नहीं है कि यह पूरी तरह से प्रोग्रामिंग से संबंधित है, आप कई क्षेत्रों में एक ही सवाल पूछ सकते हैं।
ओज

1
यदि केवल संज्ञानात्मक विज्ञान स्टैक एक्सचेंज बीटा में था!
मैट एलेन

1
क्योंकि सोचना एक रहस्यमय प्रक्रिया है।
davidk01


4
यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह सामान्य समस्या को हल करने की सोची गई प्रक्रिया के बारे में है और यह प्रोग्रामिंग या प्रौद्योगिकी क्षेत्रों के लिए अद्वितीय नहीं है।

जवाबों:


22

किसी समस्या पर बहुत अधिक ध्यान केंद्रित किया जाना आपको एक कदम पीछे ले जाने से रोकता है। जब आप अपना कोड डीबग करते हैं, तो आप अनावश्यक रूप से समान परीक्षणों को दोहराते हैं।

जितना अधिक आप प्रयास करते हैं, उतना ही आप असफल होते हैं और आप बहुत निराश हो जाते हैं। तनाव और निराशा बढ़ने से हालात बदतर हो जाते हैं।

यही कारण है कि अक्सर, एक सहकर्मी संयोग से, आपके कंधे पर नज़र रख सकता है, और कुछ ही सेकंड में समस्या (और समाधान) को इंगित कर सकता है।

वे आपके जैसी मानसिक स्थिति में नहीं हैं।

मैं अक्सर समय की एक निश्चित अवधि के बाद देखने से रोकने की कोशिश करता हूं और कुछ घंटों बाद शांत मन से वापस आता हूं।

लेकिन सबसे शक्तिशाली तकनीक सिर्फ ... मदद के लिए पूछ रही है


9
+1 जब आप मदद के लिए पूछ रहे हैं तो आप इस समस्या को परिभाषित करने के लिए दूसरों को समझ सकते हैं, इसलिए उस प्रक्रिया में आपको अधिक समझ हासिल करने की आवश्यकता है। जैसे जब आप किसी प्रश्नोत्तर साइट या मंचों पर किसी विषय को पोस्ट करते हैं, तो आपको तुरंत एक विचार मिलता है कि कैसे आगे बढ़ना है ..
आदित्य पी

1
@ आदित्यगामीप्रोग्रामर के लिए +1 और +1: समस्या का वर्णन करना इतना मददगार है कि एक काल्पनिक व्यक्ति को भी इसका वर्णन करना - या एक एक्शन फिगर या एक पौधा या जो भी - अक्सर एक ही नई सोच को ट्रिगर करता है (जैसा कि कई लोगों द्वारा वर्णित है) ।
मैथ्यू फ्रेडरिक

6

यदि आप कुछ समय से किसी समस्या पर काम कर रहे हैं, तो आपका दिमाग विकास के दौरान आपके द्वारा तैयार किए गए पैटर्न का अनुसरण करता है। दूसरे शब्दों में, आप अपने द्वारा स्थापित मानसिक फ्रेम के बाहर की चीजों के लिए अस्थायी "ब्लैक स्पॉट" विकसित करते हैं।

थोड़ी देर के लिए समस्या को दूर करने में मदद करता है और इस फिल्टर को हटाने में मदद करता है।

इस तरह के मामलों में मुझे अक्सर क्या मदद मिली है, किसी और को यह समझाना चाहिए कि यह क्यों काम करना चाहिए (जब यह नहीं होता है) - आम तौर पर आपके स्पष्टीकरण के माध्यम से आधे रास्ते में आपको एहसास होगा कि आप अपने तर्क में गलत हो गए हैं या आप किस चरण में चूक गए हैं।

विकास कार्य के दौरान एक मानसिक फिल्टर विकसित करने के अलावा, आप मस्तिष्क बड़े पैमाने पर बहु-थ्रेडेड होते हैं और अक्सर बेहोशी प्रक्रियाओं के भाग के रूप में एक समस्या से गुजरते रहते हैं। मैं कभी-कभी दोपहर में एक समस्या के बारे में सब कुछ सीखकर इसका उपयोग करता हूं, फिर समाधान पर काम करने से पहले समस्या को एक या दो दिन के लिए झूठ बोलने देता हूं।


1
मैंने एक निश्चित प्रोफेसर के बारे में पढ़ा जो अपने कार्यालय के बाहर मेज पर एक टेडी बियर रखता था। इससे पहले कि छात्र उनसे मदद मांगते, वे सबसे पहले भालू को अपनी समस्या बताते।
माइकल के

जेफ एटवुड ने अपने ब्लॉग पर यहां जो कुछ लिखा है, उसके समान देखेंblog.codinghorror.com/rubber-duck-problem-solve । मुझे वास्तव में लगता है कि यह बहुत मदद कर सकता है। कितनी बार आपने एसओ के लिए आधा लिखित प्रश्न किया था और फिर उत्तर का एहसास किया था? मेरे पास यह काफी समय था :)
रेमी

5

मैं मनोवैज्ञानिक नहीं हूं, लेकिन जब आप किसी एक मुद्दे पर बहुत अधिक ध्यान केंद्रित करते हैं (बग ढूंढते हुए) तो आप बड़ी प्रणाली के लिए दृश्य खो देते हैं। लेकिन अक्सर इसका जवाब "नीचे नहीं" होता है जहां आप वर्तमान में इसे ढूंढ रहे हैं, लेकिन कहीं और - आप उस बिंदु पर देखने में सक्षम नहीं हैं।

तो आपको वास्तव में क्या करने की ज़रूरत है खाइयों से बाहर निकलना और पूरे सिस्टम को और अधिक सामान्य दृष्टिकोण से देखना शुरू करना - फिर से। एक व्यक्ति इस तथ्य को अनदेखा करता है "मुझे वास्तव में पता है कि यह यहीं है, मुझे अभी तक यह नहीं मिला है"। यह हम सभी के लिए होता है। मैं भी बिंदु मैं कहाँ पता है "तो यह मैं बग एक अच्छा डिबगिंग तकनीक का उपयोग नहीं मिल रहा है करने के लिए मिलता है और अभी भी सही काम नहीं लेने के लिए और एक ब्रेक लेते हैं कहीं और होना करने के लिए" - मानव मस्तिष्क इस तरह के एक है हास्यास्पद चीज़।

हालाँकि, वास्तव में यह मायने नहीं रखता है कि आप क्या करते हैं - चाहे वह बाथरूम में जा रहा हो, किसी सहकर्मी से बात कर रहा हो या कुत्ते से चल रहा हो। मैं कुछ कैंडीज खरीदने के लिए पास के एक स्टोर में जाता था जब मैं फंस गया था और जैसे ही मैंने समाधान पर अपना जैकेट मेरे सिर में पॉपप किया - लगभग हर। जिस समय आप प्रोग्रामिंग कर रहे हों उस दौरान बहुत सारा पानी पीना भी एक अच्छी बात हो सकती है। यह आपको हर बार एक ब्रेक लेने के लिए मजबूर करता है और फिर बाथरूम और ज़ैप में जाने का कारण है, जो आपको खाइयों से बाहर निकलने के लिए मजबूर करता है।


4

अपने व्यक्तिगत अनुभव से और मैंने जो जूनियर डेवलपर्स I ट्रेन में देखा है, हम सभी मान्यताओं और अपेक्षाओं के साथ एक समस्या का सामना करते हैं। हम मान लेते हैं कि फ़ंक्शन x परिणाम z उत्पन्न करने के लिए कार्य y करता है। यह हमेशा होता है, इसलिए इसे क्यों बदलना चाहिए? जब हम किसी समस्या पर अधिक से अधिक ध्यान केंद्रित करते हैं, तो हम मानते हैं कि हमने मूल बातें कवर कर ली हैं और समस्या को वास्तव में तब और अधिक जटिल होना चाहिए जब हमने इसे मूल रूप से संबोधित किया था। उन चीज़ों की बढ़ती सूची से थकान को दूर करें जिन्हें हम सच मानते हैं लेकिन वास्तव में सत्यापित नहीं किया है, और आपने बाद में एक पूर्ण "डब्ल्यूटीएफ" पल के लिए खुद को स्थापित किया है।

यह केवल बाद में है जब आपने खुद को इस समस्या से अलग कर लिया है कि मान्यताओं को फेंक दिया जा सकता है और फिर से निकाल दिया जा सकता है। इसके अतिरिक्त, हम आमतौर पर एक अलग समस्या की पीठ पर एक समस्या से निपटते हैं जिसे हमने अभी हल किया है। मैंने ए को ठीक किया, लेकिन यह बी टूट गया, अब मुझे बी को ठीक करना चाहिए। इसलिए हमारे पास पहले से ही एक गति और दिशा है जो हम यात्रा कर रहे हैं (जो हमारी धारणाओं को अलग करना मुश्किल बना देता है)। जब आप समस्या B को हल करने के लिए वापस आते हैं, तो समस्या A संभावित संभावनाओं को अवरुद्ध करते हुए आपके दिमाग में ताजा नहीं होती है। आप बिना किसी पूर्व धारणा के समस्या का समाधान करने में सक्षम हैं, और इससे सोच के नए रास्ते खुलते हैं और समस्या को देखने के नए कोण बनते हैं।

अब, जब भी कोई जूनियर मुझसे मदद मांगता है, तो उन्हें पता होता है कि उन्हें पहले सवाल का जवाब देना होगा "आपकी धारणाएं क्या हैं?" यहां तक ​​कि उस समस्या का जवाब देने का प्रयास आपको अपने मानसिक ब्लॉक से दूर करने में मदद कर सकता है।


3

मुझे लगता है कि आपका मस्तिष्क, मांसपेशियों की तरह, थका हुआ हो जाता है। एक ब्रेक लेने से यह आराम करने, ऑक्सीजन / ईंधन आदि के साथ ऊपर जाने और फिर से काम करना शुरू कर देता है।

टहलने जाना या व्यायाम करना अक्सर एक अच्छा तरीका होता है जब आप वास्तव में किसी चीज के साथ फंस जाते हैं। यहां तक ​​कि अगर आपके पास "यूरेका" पल नहीं है, तो यह अक्सर आपको वापस आने और समस्या को हल करने के लिए एक नया दृष्टिकोण लेने की अनुमति दे सकता है।


3

मैं इसे विचारों और समस्याओं पर ऊष्मायन समय कहना पसंद करता हूं ।

आपका उप-विवेक अभी भी समस्या को गैर-रैखिक दृष्टिकोण में आपकी जागरूकता से बाहर संसाधित करता है। यह बहुत कुछ वैसा ही है जब आप झपकी लेने से पहले कुछ नया सीखते हैं। आपके दिमाग में जानकारी को उन तरीकों से 'डीफ़्रेग्मेंट' करने का समय है, जिन्हें अधिक लचीलेपन के साथ संपर्क किया जा सकता है।

इसके अलावा, एक बग पर काबू पाने के लिए एक और सहायक टिप, जिसे कन्फ़ेशनल डे-बगिंग कहा जाता है । यह वह जगह है जहां आप किसी अन्य व्यक्ति से संपर्क करते हैं जो समस्या को नहीं जानता है और आप समस्या को समझाना शुरू करते हैं। मुझे लगता है कि समस्या को जोर से कहने के बजाय, समाधान अक्सर दिमाग में आता है।

इन मनोवैज्ञानिक कड़ियों की जाँच करें: रचनात्मकता संबंधी सुझाव और समस्याएँ


2

"हम सब एक से चुभ हो गुलाब कभी कभी। दुख की बात है जब हम ध्यान केंद्रित पर इतना दर्द हम भूल जाते हैं के बारे में सुंदरता गुलाब की।"


2

मैंने अपने करियर में कई महत्वपूर्ण बगों को शावर टाइम के दौरान ठीक किया।

मैं मनोवैज्ञानिक नहीं हूं, लेकिन मुझे लगता है कि अंतर है:

  • कंप्यूटर के सामने बैठकर, मुझे सोर्स कोड, ब्रेकप्वाइंट, printfआउटपुट दिखाई देते हैं ...

  • बाथरूम में, मेरे दिमाग में कोड चलते हैं।


1

मैंने एक ही घटना का अनुभव किया है, और इसे एक अलग दृष्टिकोण के साथ समस्या को देखने के लिए जिम्मेदार ठहराया है क्योंकि मैं इससे दूर समय बिताता हूं (अधिक समय दूर एक अधिक दूर के परिप्रेक्ष्य का अर्थ है, लगभग)।

लेकिन एक और चाल है जो मुझे लगता है कि ज्यादातर समय एक ही चीज को पूरा करता है: एक सहकर्मी को कोड समझाएं। यह के लिए नहीं है उन्हें आपके बग को पकड़ने के लिए, हालांकि वे हो सकता है; आपको सभी प्रासंगिक स्तरों पर कोड के तर्क को समझाने और समझाने के लिए बाध्य करना है। मैंने कभी नहीं (हालांकि निष्पक्ष चेतावनी - नमूना आकार सीमित है) अवचेतन रूप से एक बग को हल करने में सक्षम है जो इस वर्णन-से-सहकर्मी उपचार से बच गया।


1

मैं हाल ही में इस साइट पर किसी से एक सुझाव के लिए पोमोडोरो तकनीक का उपयोग कर रहा हूं , और लगता है कि यह आपके प्रश्न का सही उत्तर देता है और ब्रेक की लंबाई। मूल रूप से, यह आपके पास 25 मिनट के लिए एक समस्या पर केंद्रित काम करता है, इसके बाद 3-5 मिनट का छोटा ब्रेक होता है, फिर उस के प्रत्येक 4 चक्रों के बाद लंबा ब्रेक। वे इसे वापस करने के लिए कुछ अध्ययनों का हवाला देते हैं, लेकिन वास्तविक रूप से मैंने उन अंतरालों को बहुत प्रभावी पाया है।

मैंने सोचा था कि 25-मिनट के स्पैन मुझे "ज़ोन में" होने से बचाएंगे, जो लोग दावा करते हैं कि इसमें 15 मिनट लगते हैं। इसके विपरीत, इस समय के साथ मैं लगभग तुरंत ज़ोन में मिलता हूं। मुझे लगता है कि ऐसा इसलिए है क्योंकि जब मैं जानता हूं कि मुझे केवल 25 मिनट तक इसे रखना है, तो अपने आप को विचलित होने से बचाना बहुत आसान है। केवल 25 मिनट के लिए बाहरी रुकावटों को स्थगित करना आसान है। यह बहुत मुश्किल था जब मैं दोपहर के भोजन से पहले 4 घंटे के काम के लिए बकसुआ बनाने की कोशिश कर रहा था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.