क्या ये खराब डेवलपर के संकेत हैं? [बन्द है]


36

मैं कोड रोट के लिए ग्राहकों से बदलती विशिष्टताओं को दोष देता था, यह महसूस नहीं करता था कि व्यवसाय मॉडल बदलते हैं और यह एक अनुकूल तरीके से विकसित करना मेरा काम है। अब मैं देखता हूं कि एक बुरे डेवलपर के संकेत के रूप में (मैं बदल गया हूं!)।

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

क्या ऐसे संकेत हैं जिन्हें मुझे देखना चाहिए कि मुझे अपना दृष्टिकोण कहां बदलना चाहिए? क्या क्लाइंट हमेशा सही होता है, या क्या मैं कभी-कभी निराश होने के लिए उचित हूं?


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

2
ग्राहक हमेशा सही होता है। यहां तक ​​कि अगर CLIENT दावा करता है कि आकाश हरा है, तो यह प्रकृति के नियमों को एकल-प्रतिरूप (या अधिक अनुभवी के लिए एकल-उँगलियों से झुकना) का काम है। कैसे आप संतोषजनक नहीं तो अपने अस्तित्व का औचित्य साबित करने जा रहे हैं ग्राहक ?
थॉमसएक्स

26
मैंने एक बार एक ऐसी कंपनी के लिए काम किया था, जिसके सीईओ कभी-कभार ग्राहकों की समस्या पर जाते थे और उन्हें बताते थे, "ग्राहक हमेशा सही होता है और आप गलत होते हैं, इसलिए आप जाहिर तौर पर हमारे ग्राहक नहीं हैं।" (और, हाँ, उन्होंने अपने पैसे भी लौटा दिए।)
डेव शेरोहमान

4
@ThomasX: क्या क्लाइंट हमेशा सही होता है? मैंने पाया है कि ग्राहक क्या चाहता है और ग्राहक को क्या चाहिए, के बीच एक अंतर होता है। ग्राहक को बेहतर, अधिक उपयुक्त समाधानों की जानकारी नहीं हो सकती है।
स्किज़

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

जवाबों:


55

मैं नहीं कहूंगा कि आप बुरे डेवलपर हैं। मुद्दों से अवगत होने के नाते पहले से ही आपको इस परिभाषा से परे ले जाता है।

आवश्यकताएँ बदल जाती हैं। वह एक दिया है। एक अच्छे डेवलपर को इसे ध्यान में रखना होगा। कई आधुनिक प्रोग्रामिंग तकनीक उस का मुकाबला करने में मदद करती हैं।

मूल कल्पना के प्रति सच्चे बने रहना यथार्थवादी नहीं है। इसके अलावा यथार्थवादी हर समय आवश्यकताओं को नहीं बदल रहा है।

ग्राहक निश्चित रूप से हमेशा सही नहीं होता है। यह अधिक से अधिक 'सही' है कि हम उसे / उसके लिए चाहते हैं, हालांकि (यदि वह पूरी तरह से बंद नहीं है तो उसे समायोजित करने का प्रयास करें)। लेकिन जब आप उसे प्रोजेक्ट को गलत दिशा में चलाते हुए देखते हैं, तो उन चीजों की वकालत करने की कोशिश करें जिन्हें आप सही समझते हैं।

इन चीजों पर कोई कठोर नियम नहीं हैं, और यहां तक ​​कि अच्छे और अनुभवी डेवलपर्स ने भी सही 'ज़ेन' हासिल नहीं किया है। एकमात्र गलत दृष्टिकोण इन पर सुधार करने की कोशिश नहीं कर रहा है।


16
+1, "पहले से ही मुद्दों से अवगत होने के नाते आपको इस परिभाषा से परे ले जाता है।"
मेपल_शाफ्ट

38

ऐसे मामले हैं जहां यह क्लाइंट है। लेकिन यह आपकी समस्या भी है

ऐसे मामले हैं जहां यह डेवलपर है, और ऐसे मामले हैं, जहां यह ग्राहक है। लेकिन, आमतौर पर वे दोनों आपकी समस्या हैं, इसलिए खुद को दोष देने का एक दृष्टिकोण अधिक सफल होता है, क्योंकि यह असहाय उंगली की ओर इशारा करते हुए समस्या को हल करने के पक्ष में है। इसलिए, आप अक्सर इसे अधिक अनुभवी डेवलपर्स में पाएंगे।

एक और भी बेहतर रवैया बिना किसी दोष के इसे देखने के लिए IMHO है: "यह ग्राहकों की गलती है, मेरे पास घटिया कोड है, क्योंकि वह हमेशा आवश्यकताओं को बदलता है" तो "ग्राहक यह पता लगाता है कि वह क्या चाहता है, इसलिए प्रतिक्रिया, तेजी से प्रोटोटाइप और लचीलापन अधिक है" पूर्णता, मजबूती और गति से महत्वपूर्ण है ”।

एक झेन-मन की तरह: इसे जज न करें, बस इसे ऐसे देखें जैसे यह है।


मैं यह सुनकर रोमांचित हूं कि अच्छे पुराने "ग्राहक हमेशा सही होते हैं", +1 के लिए अभी भी वकालत है।
वेन कोअर्ट्स

1
वास्तव में यह अधिक पसंद है "ग्राहक हमेशा सही होता है ... जब तक आप ग्राहक नहीं होते हैं।"
ल्यूक वान

@WayneKoorts - जब तक वे भुगतान करने के इच्छुक हैं, उन्हें ग्राहक कहा जा सकता है।
जेएफओ

2
वास्तव में, मुझे लगता है कि टीसीआईएआर wrong हर कोई गलत है ’की तुलना में अधिक सफल है, लेकिन उतना अच्छा नहीं है कि who कौन परवाह करता है कि कौन सही है, बस समस्या की पहचान करें’, इसलिए +1 अवांछित हो सकता है।
कीपला

1
TCIAR आंशिक रूप से इस बात का खंडन है कि वहाँ के लिए मारक है है एक समस्या।
143 पर स्टीव 314

13

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

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

अंत में, सुनिश्चित करें कि ग्राहक चंचल हो सकता है। ऐसे मामलों में, मैं हिमशैल के रहस्य पर ध्यान केंद्रित करने की कोशिश करता हूं ।


आइसबर्ग रहस्य के लिए +1।
डैनियल प्राइडेन

5

बदलती आवश्यकताएं जीवन का एक कठिन तथ्य हैं; लेकिन कोड सड़ांध इसके कारण नहीं है।

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

हां, यह आपकी गलती है न कि आपके उपयोगकर्ता की।

असली समाधान? अपने सभी कोड का अक्सर परीक्षण करें। बेशक, सबसे अच्छा तरीका अच्छी कवरेज के साथ स्वचालित परीक्षण करना है।


स्वचालित परीक्षणों के लिए +1! TDD - टेस्ट ड्रिवेन डेवलपमेंट - सबसे पहले या लगभग सभी कोड को टेस्ट करने वाली आवश्यकताओं के आधार पर टेस्ट लिखना, कोड को सड़ने से रोकने का एक तरीका है, यहां तक ​​कि निरंतर गोल पोस्ट शिफ्टिंग के साथ। कवरेज टूल का उपयोग उन क्षेत्रों को लेने के लिए भी किया जा सकता है जहां परीक्षण कुछ भी नहीं छूते हैं, ऐसे क्षेत्र जिन्हें सड़ने की संभावना है।
डैनी स्टेपल

4

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


4

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

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

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

मैं समझता हूं कि हर कोई इस उत्तर से सहमत नहीं होगा लेकिन मुझे लगता है कि यह महत्वपूर्ण है कि इस प्रश्न के उत्तर एक व्यापक परिप्रेक्ष्य को कवर करते हैं।


2

जब आप एक ग्राहक के साथ बातचीत कर रहे हैं, तो आप प्रोग्रामिंग नहीं कर रहे हैं; आप सीख रहे हैं और सिखा रहे हैं।

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

जब भी वे प्रश्न पूछते हैं, तो वे तकनीकी विस्तार में नहीं आते हैं। आप ललचा रहे हैं क्योंकि आप थोड़ा रक्षात्मक महसूस करेंगे और एक चुनौती लेना चाहेंगे / अपना गीक-ऑन प्राप्त करेंगे। यह मत करो; वे विवरण के बारे में परवाह नहीं करते हैं और 45 सेकंड के बाद सुनना बंद कर देंगे।

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

जब आप ग्राहक के साथ हों, तो कमरे में मौजूद किसी भी चीज़ या किसी चीज़ की तुलना में उन पर अधिक ध्यान दें। पालतू कुत्ते इस पर जीनियस हैं; खासकर यदि आपके पास भोजन है।


1

यह खराब आवश्यकता प्रबंधन या खराब विश्लेषण है। आपका व्यवसाय विश्लेषक (यदि आपके पास एक है) या जिसे भी आवश्यकताएं मिलती हैं उसे ग्राहक के साथ बैठना पड़ता है और सभी आवश्यकताओं को प्राप्त करने का प्रयास करना पड़ता है, यहां तक ​​कि ग्राहक भी नहीं सोच सकते हैं। ग्राहक आमतौर पर वे सब कुछ नहीं जानते हैं जो वे चाहते हैं, एक महान व्यापार विश्लेषक उन्हें यह पता लगाने में मदद करेगा।


1

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

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

और यदि आपको कभी भी वापस आने के लिए किसी बहाने की आवश्यकता है, तो आप बीआरडी पर किसी भी तरह की देरी का आरोप लगा सकते हैं, कि क्लाइंट ने इस तरह के और इस तरह के फीचर आदि को शामिल नहीं किया है।

(बेशक, यह केवल एक बहाना है अगर आपको इसकी आवश्यकता है तो आपको हमेशा कुछ बदलने की योजना बनानी चाहिए )


1

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

एक ओर, कई विकास मॉडल विशेष रूप से आपके द्वारा वर्णित वातावरण में मदद करने के लिए डिज़ाइन किए गए हैं; इसलिए यदि आप स्वयं को अपने मॉडल का उल्लंघन करते हुए पाते हैं, तो या तो आप इसे सही तरीके से लागू नहीं कर रहे हैं, या आपको गलत मॉडल मिल गया है।

लेकिन दूसरी ओर, यदि आपके पास अपने नियमों का उल्लंघन करने के लिए एक उचित और समर्थन योग्य औचित्य है, और आप दिखा सकते हैं कि आपकी बदमाश विधि क्लीनर को अधिक बनाए रखने योग्य कोड का उत्पादन करती है, तो आपको समझदार मार्ग लेने से डरना नहीं चाहिए।

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