उत्तर के रूप में "क्यों" प्राप्त किए बिना एक प्रोग्रामर से एक प्रश्न कैसे पूछें


31

हम सबको इसका अनुभव था। आप किसी ऐसे व्यक्ति के पास जाते हैं जिसे आप जानते हैं कि किसी प्रश्न का उत्तर है, उस व्यक्ति से प्रश्न पूछें और वे विशिष्ट प्रतिक्रिया के साथ उत्तर दें: "क्यों?" आप समझाते हैं कि आपको जानने की आवश्यकता क्यों है, और वे आपकी समस्या को हल करने का प्रयास करते हैं।

समय, हाथ घुमा और धैर्य के साथ बातचीत को मूल प्रश्न पर वापस लाने के लिए समय लगता है और बस उस सटीक उत्तर को प्राप्त करना चाहिए।

प्रोग्रामर लगातार ऐसा क्यों करते हैं, और प्रोग्रामर के वरिष्ठ बनने से व्यवहार क्यों खराब होता है?

मूल प्रश्न के उत्तर को निकालने में आप एक प्रोग्रामर से सबसे कुशल तरीके से सवाल कैसे पूछ सकते हैं?


54
यह सबसे अधिक संभावना है क्योंकि वे जानते हैं कि आपको उस उत्तर की आवश्यकता नहीं है। How do I walk on water? Why? I want to cross the river Build a boat.
डैनियल ग्रैज़र

30
यह एक चाल है, जो आपको हमारा समय बर्बाद करने से रोकने के लिए डिज़ाइन की गई है। आप या तो सटीक होना सीखेंगे, या पूछना छोड़ देंगे।
यानि

17
क्योंकि अधिक वरिष्ठ प्रोग्रामर जानते हैं कि उनसे पूछे गए अधिकांश प्रश्न XY- प्रश्न हैं।
मार्जन वेनेमा

12
"बहुत सारी टिप्पणियां यह समझाने से संबंधित हैं कि डेवलपर इस तरह क्यों व्यवहार करता है ... यह उपरोक्त प्रश्न का उत्तर नहीं है।" यह इस सवाल का सीधा जवाब है कि "प्रोग्रामर लगातार ऐसा क्यों करते हैं, और प्रोग्राम जितना अधिक वरिष्ठ हो जाता है, व्यवहार उतना खराब क्यों होता है?" जो पद के निकाय में शामिल है। यह भी दर्शाता है कि क्यों प्रोग्रामर इस तरह काम करते हैं: लोग सवाल पूछ अक्सर पूछे जाने वाले वे के लिए जवाब नहीं करना चाहते पूछना , लेकिन इसके बजाय सवालों के जवाब वे चाहते हैं मतलब

8
"मैं अपने हाथों को कुछ प्लूटोनियम पर कैसे प्राप्त कर सकता हूं?" नहीं नहीं। कृपया कोई सवाल नहीं। बस मुझे बताओ कैसे।
एरिक रेपेने

जवाबों:


91

डेवलपर्स "क्यों" पूछते हैं जब कोई उनसे पूछता है कि समाधान कैसे लागू किया जाए?

क्योंकि यह मूल्यांकन करने के लिए अधिक ज्ञान की आवश्यकता है कि क्या समाधान वास्तव में समाधान को लागू करने के लिए उपयुक्त है।

जब वे कहते हैं कि किसी पर विश्वास करना बहुत मुश्किल है, "मुझे नहीं पता कि यह कैसे करना है, लेकिन मुझे पता है कि यह वही है जो मुझे करने की आवश्यकता है।" प्रोग्रामर लगातार गहरी जांच करने पर जोर देते हैं क्योंकि लोग लगातार गलत सवाल पूछने पर जोर देते हैं। हां, कभी-कभी यह अंततः आपके मूल प्रश्न पर वापस आता है, लेकिन हमेशा नहीं।

एक सादृश्य के रूप में, कल्पना करें कि कोई मैकेनिक के पास गया और उससे पूछा कि कार की बैटरी कैसे बदलें। आमतौर पर यदि आप एक दोषपूर्ण बैटरी का निदान करने के लिए योग्य हैं, तो आप एक को बदलने के लिए योग्य हैं, इसलिए मैकेनिक पूछेगा कि आपको पता है कि इसे बदलने की आवश्यकता है।

वह जानता है कि यदि वह ऐसा नहीं करता है, और यह पता चला है कि आपको बैटरी की आवश्यकता नहीं है, तो आप अधिक से अधिक प्रश्न पूछते रहेंगे, जब तक आप यह पता नहीं लगा लेते हैं कि आपको इंजन बंद होने पर रोशनी बंद करनी होगी चल नहीं रहा। आपको सामने वाले से पूछकर, ऐसा लगता है कि वह आपका समय बर्बाद कर रहा है, लेकिन वास्तव में वह अनुभव से जानता है कि वह संभवतः आप दोनों को बहुत अधिक समय बचा रहा है।

इसलिए, यदि आप पूछताछ की रेखा से बचना चाहते हैं, तो आपको उसे सामने वाले को समझाने की जरूरत है कि आप जानते हैं कि आप किस बारे में बात कर रहे हैं।


4
बिल्कुल यह। जिन ग्राहकों को पता नहीं है कि वे क्या चाहते हैं, वे गधे में दर्द कर रहे हैं। ग्राहक जो ठीक से जानते हैं कि वे क्या चाहते हैं अक्सर बदतर होते हैं। जानकारी मांगते समय व्यवसाय की आवश्यकता को न छोड़ें। हम जो भी छोटी-मोटी चीज करते हैं, वह प्रायः अत्यधिक प्रासंगिक होती है।
एरिक रेपेने

14

"यह प्रश्न विशेष रूप से है कि कोई प्रश्न पूछने के लिए किसी अन्य प्रोग्रामर के साथ कैसे जुड़ता है, जहां दूसरे के पास उत्तर है और इस सवाल को छोड़ दें कि प्रश्न क्यों पूछा जा रहा है।"

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

आप अपने प्रश्न को एक ऐसे कथन के साथ प्रस्तुत करने का प्रयास कर सकते हैं जिसे आप केवल एक छोटी, निचली पंक्ति के उत्तर की तलाश में हैं, लेकिन वे अभी भी उत्तर देने के लिए स्वतंत्र हैं क्योंकि वे सबसे अच्छा सोचते हैं।


13

यह सवाल विशेष रूप से है कि कोई प्रश्न पूछने के लिए दूसरे प्रोग्रामर के साथ कैसे जुड़ता है, जहां दूसरे के पास उत्तर होता है और इस सवाल को बहस को छोड़ देता है कि प्रश्न क्यों पूछा जा रहा है।

आप नहीं कर सकते। प्रोग्रामर, विशेष रूप से अच्छे लोगों को, समस्याओं को हल करने और कुशल होने के लिए वायर्ड किया जाता है । जब कोई ग्राहक या साथी प्रोग्रामर उत्तर की तलाश में आता है - तो वे समस्या का समाधान करने से पहले यह जानना सुनिश्चित करेंगे कि वे किस समस्या को हल कर रहे हैं। इस तरह से वे कुशल हैं (वे एक जवाब देकर आपके और उनके समय को बर्बाद नहीं कर रहे हैं जो आपकी समस्या का समाधान नहीं करेगा) और वे वास्तविक समस्याओं को हल कर रहे हैं (आपको उन प्रश्नों के समाधान / उत्तर देकर जो आपको पूछना चाहिए)।

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

इसलिए संक्षेप में बताएं - यदि आप चाहते हैं कि आपके प्रश्न ठीक-ठीक उत्तर दें तो आपको निश्चित होना चाहिए:

  • सही प्रश्न पूछना (इस प्रकार आपको पहले से समस्या पर शोध करने की आवश्यकता है)
  • समस्या के लिए संदर्भ प्रदान करना
  • आप उनमें से कुछ को साझा करके उन्हें समस्या के लिए तेज़ी से निर्देशित करने के लिए शोध कर रहे हैं

अधिकांश मनुष्यों को मैं जानता हूं कि वे केवल मनुष्य हैं और कंप्यूटर नहीं। यदि आप केवल उत्तर चाहते हैं तो इसे देखने का प्रयास करें।


2
+1 बिल्कुल। कितनी बार ग्राहकों ने एक ऐसी सुविधा को लागू करने का अनुरोध किया जिसमें विकास के मामले में हजारों डॉलर खर्च होंगे, जबकि वास्तविक व्यापार की जरूरत को आसानी से एक उपकरण के साथ हल किया जा सकता है जो पहले से ही मौजूद है, अक्सर बिना किसी लागत के!
आर्सेनी मूरज़ेंको

3
सादृश्य से, यह एक सर्जन को यह बताने के लिए है कि आप पर ऑपरेशन का एक विशिष्ट सेट करना है। मुझे यकीन है कि वह आपसे पूछेगा कि वास्तव में आपकी स्वास्थ्य समस्या क्या है, तो आपको बता दें कि पहली जगह में आपको किसी सर्जरी की आवश्यकता नहीं है, क्योंकि आपकी समस्या का समाधान हाड वैद्य द्वारा किया जा सकता है।
आर्सेनी मूरज़ेंको

बिल्कुल :) और आप शायद एक सर्जन से यही उम्मीद करेंगे।
क्रिश्चियन पी।

9

प्रोग्रामर लगातार ऐसा क्यों करते हैं, और प्रोग्रामर के वरिष्ठ बनने से व्यवहार क्यों खराब होता है?

दुर्भाग्य से यह सामान्य सत्य से उतना ही दूर है जितना इसे मिलता है।

यह व्यवहार वास्तव में अच्छे लोगों के अल्पसंख्यक तक सीमित है। और आपको बेहतर यह सीखना चाहिए।

बस लानत के सवाल का जवाब देते हुए फुसफुसाते हुए कहा कि एक तेजी से और सुनिश्चित करने के लिए एक अच्छा तरीका है।


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


यह इतना नहीं है कि क्या वे अच्छे हैं जैसे कि उन्हें लगता है कि वे हैं।
फ्लोरियन एफ

4

यहाँ हर उत्तर "क्यों" प्रश्न का एक अच्छा उत्तर है, लेकिन किसी ने भी वास्तव में ओपी प्रश्न का उत्तर नहीं दिया है।

मूल प्रश्न के उत्तर को निकालने में आप एक प्रोग्रामर से सबसे कुशल तरीके से सवाल कैसे पूछ सकते हैं?

जवाब आश्चर्यजनक रूप से सरल है: उन्हें बताएं कि यह पूछने से पहले कि उन्हें कैसे करना है।

सबसे अच्छी बात यह है कि एक उत्पाद के आसपास कुछ उच्च स्तरीय बैठकों में डेवलपर्स को शामिल किया जाता है - उन्हें कुछ बड़ी तस्वीर दें ताकि वे देख सकें कि इस विशेष चीज को करने की आवश्यकता क्यों है। वे आपको पहले के साथ आने पर भी आश्चर्यचकित कर सकते हैं।


कितना सरल है। थोड़ा संदर्भ देते हुए और समझाएं कि बहुत समय क्यों बचता है। आपको शुरुआत से मदद करने के लिए सही रास्ते पर आने वाले डेवलपर की सोच मिलती है।
3

3

अच्छे प्रोग्रामर किसी भी समाधान को लागू नहीं करना चाहते हैं; वे विशिष्ट मुद्दे के लिए सबसे अच्छा समाधान लागू करना चाहते हैं। इसके लिए जानकारी चाहिए। प्रश्न सूचना एकत्र करने का तरीका है। सभी जानकारी के बिना, प्रोग्रामर जानता है कि वह एक ऐसे समाधान को लागू करने के खतरे में है जो सभी आवश्यकताओं को पूरा नहीं करेगा और इसे फिर से करना होगा। अपने प्रोग्रामर से जानकारी न छिपाएँ। जानकारी को छुपाने से समय बर्बाद होता है, मनोबल नष्ट होता है और हीन समाधान होता है।


1

समस्याओं को हल करने के लिए प्रोग्रामर "हार्ड-वायर्ड" हैं।

अच्छे प्रोग्रामर "सही" समस्याओं को हल करने का प्रयास करेंगे।

बस आपूर्ति जो किसी के लिए पूछ रही है वह है [अक्सर] हल करने के लिए गलत समस्या।

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

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

उपयोगकर्ता इसे पसंद करते हैं।

हमें यह जानने की जरूरत है कि आप कहां पहुंचना चाह रहे हैं, इससे पहले कि हम आपको वहां पहुंचने का सबसे अच्छा तरीका पेश कर सकें।

वैकल्पिक रूप से, (मोंटी पायथन को दृष्टांत देने के लिए): "क्या आप 5 मिनट का उत्तर चाहते हैं या आधे घंटे का"?

कोई बात नहीं है जब प्रोग्रामर किसी विशेष फ़ंक्शन के सभी minutiae को झुनझुना बंद कर देता है, जब आप केवल यह जानना चाहते हैं कि क्या आप इसे तीन तीन दशमलव स्थानों के साथ एक नंबर खिलाएंगे।

अपने दृष्टिकोण को जानने के बाद आप जो उत्तर प्राप्त करते हैं, वह मौलिक रूप से फिर से आकार ले सकता है।


0

आपका अंतिम प्रश्न है "आप मूल प्रश्न के उत्तर को निकालने में एक प्रोग्रामर से सबसे कुशल तरीके से प्रश्न कैसे पूछ सकते हैं?"

आप पहले "कुशल" और "प्रभावी" भ्रमित कर रहे हैं। सबसे कुशल होने के लिए , बस "उत्तर क्या है?" कागज के एक टुकड़े पर और इसे प्रोग्रामर को दिखाएं। यह एक प्रश्न पूछने का एक बहुत ही कुशल तरीका है। यह उत्तर पाने में भी बहुत अप्रभावी है।

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

एक बहुत ही अयोग्य तरीका वह तरीका है जिसे आप आज़मा रहे हैं: समस्या की एक अधूरी समझ प्राप्त करें, यह अनुमान लगाएँ कि यह समस्या कैसे हल की जा सकती है, और एक समस्या हल करें कि यह समाधान कैसे प्राप्त किया जा सकता है। समस्या समाधानकर्ता ने इस व्यवहार को पहले देखा है। 10 बार अगर वह अनुभवहीन है, तो हजार बार अगर वह अनुभवी है। तो समस्या हल करने वाला जानता है कि आप पूरी तरह से गलत दिशा में जा रहे हैं। और समस्या हल करने वाले को सही दिशा में जाने के लिए क्या करना चाहिए, जो वास्तविक समस्या को समझने के लिए प्रश्न पूछ रहा है। समस्या की अपनी अधूरी समझ को समझने के लिए पहला प्रश्न, और वास्तविक समस्या को समझने के लिए दूसरा प्रश्न।


0

Explicitating आप क्या हासिल करना चाहते हैं और संदर्भ आप में काम कर रहे हैं क्या है द्वारा सवाल शुरू करो। आप देते हैं पर्याप्त संदर्भ आप एक नहीं मिलेगा "क्यों?" , आपको "क्या यह वास्तव में आवश्यक है?"

क्योंकि, सांख्यिकीय रूप से , अधिकांश प्रस्तावित विशेषताएं चूसना , और लागू करने के लिए परेशानी के लायक नहीं हैं।

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

  1. हमेशा के लिए ले जाता है
  2. नए कीड़े जोड़ता है
  3. उन चीजों को तोड़ता है जो काम करती थीं
  4. रखरखाव को अभेद्य बनाता है

यह अच्छा कोड नहीं है, अच्छा कोड न्यूनतम है।


प्रोग्रामर की नौकरी अच्छा कोड नहीं लिख रही है। प्रोग्रामर का काम उस कंपनी के लिए मूल्य का उत्पादन करना है जो उन्हें काम पर रखता है। कई मामलों में अच्छा कोड लिखना इसी का हिस्सा है। कई मामलों में जल्दी से फेंकने वाले कोड को इकट्ठा करना जो काम करता है, इसका हिस्सा है। मैं मानता हूं कि बहुत सारी विशेषताएं हालांकि बेकार हैं - मैंने एक कंपनी के लिए एक अनुबंध किया था जो नई सुविधाओं को जोड़ना चाहता था जो कभी भी उनके ग्राहकों द्वारा उपयोग नहीं किए गए थे क्योंकि उन्हें स्मार्ट प्रक्रिया के माध्यम से कल्पना नहीं की गई थी, लेकिन सिर्फ किसी को सोचकर "हे, यह उपयोगी हो सकता है "।
मॉरिशस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.