उपयोगकर्ताओं को अपने साथ एक साथ आवश्यकताएं प्राप्त करने दें या उनका मार्गदर्शन करें?


16

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

1) उपयोगकर्ताओं को बताएं, "ठीक है, इसलिए मैं आपके लिए कुछ नहीं बना सकता हूं यदि आप अभी तक इसका वर्णन नहीं कर सकते हैं। कुछ हफ्तों में जब आप जानते हैं कि आप क्या चाहते हैं तो हम एक साथ वापस नहीं आते हैं"।

2) उपयोगकर्ताओं के साथ कुछ बार मिलें और उन्हें यह पता लगाने में मदद करें कि वे क्या अच्छा ओले सोक्रेटिक विधि के माध्यम से मार्गदर्शन करके चाहते हैं। "क्या आपको X को ट्रैक करने की आवश्यकता है?", "Y के बारे में कैसे?", "क्या आपको कार्यक्षमता Z की आवश्यकता है?"

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

मेरे लिए, यह विकास के सबसे चुनौतीपूर्ण पहलुओं में से एक है, और मुझे लगता है कि मैं इस भावना में अकेला नहीं हूं। आपके अनुभव में, इनमें से कौन सा विकल्प बेहतर काम करता है?


जिज्ञासु प्रश्न: आपको क्यों लगता है कि आवश्यकताओं का विश्लेषण किसी और की नौकरी है?
स्टीवन ए लोव

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

1
संदर्भ के लिए धन्यवाद, आपका प्रश्न अब बहुत अधिक समझ में आता है। एक तरफ ऐसा लगता है कि आपके आंतरिक व्यापार विश्लेषक अपना काम नहीं कर रहे हैं, दूसरी तरफ अगर वे डेवलपर्स नहीं हैं तो मैं उनके विश्लेषण को पूरा या सही होने पर भरोसा नहीं करूंगा - लेकिन यह सिर्फ मैं ;-)
स्टीवन ए। लोवे

जवाबों:


9

मुझे यह स्वीकार करना होगा कि कभी-कभी मैं विकल्प 3 चुनता हूं)

3) ग्राहकों को अस्पष्ट विचारों को सुनें, सप्ताह बिताने के विचार में उनकी मदद करें कि वे क्या चाहते हैं, यह जानने में उनकी मदद करें ... इसलिए यह पता लगाएं कि उन्हें क्या चाहिए, वह निर्माण करें, और आवश्यक के रूप में रिफ्लेक्टर करें।

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

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

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

मूल प्रश्न के संदर्भ में; मुझे लगता है कि यह संदर्भ पर बहुत कुछ निर्भर करता है। यदि क्लाइंट के साथ फंस गया (यानी यह एक कार्य अनुबंध के माध्यम से है जो मैं बंधा हुआ हूं, या कोई वैकल्पिक काम नहीं है) तो # 2 पवित्र दृष्टिकोण है। अन्यथा एक उच्च संभावना है कि एक सप्ताह में आपको एक अद्भुत और विस्तृत कल्पना के साथ प्रस्तुत किया जाएगा ... जो एक प्रोग्रामर के रूप में आपके लिए पूरी तरह से बेकार है।

ऊपर बताई गई (# 3) जैसी ही समस्या और जो आपको वैसे भी # 2 करने के लिए छोड़ देती है।


1
+1: "आवश्यक", "वांछित" और "वैकल्पिक" के बारे में काल्पनिक रूप से बात करना बहुत सारे लोगों के लिए लगभग असंभव है। एक ठोस कार्यान्वयन के बारे में बात करना बहुत आसान है।
S.Lott

मैं "आवश्यक", "वांछित" और "वैकल्पिक" के खिलाफ गैर-परक्राम्य, यथार्थवादी $ (या समय) आंकड़े डाल रहा हूं, यह एक ह्यूग मदद है ......
मैट्नज़

@mattnz: यह कुछ उपयोगकर्ताओं के लिए "यथार्थवादी" होने की कोशिश करने के लिए काम कर सकता है। ठोस कार्यान्वयन पर बातचीत करना और भी आसान है। उपयोगकर्ता वास्तविक कंक्रीट सुविधाओं को जोड़ने, बदलने या हटाने के लिए कह सकते हैं। कम काल्पनिक। कम "यथार्थवादी"। अधिक वास्तविक, मूर्त और ठोस।
10.11

27

यदि आप सिर्फ एक प्रोग्रामर बनना चाहते हैं, तो आप तब तक प्रतीक्षा करें जब तक किसी और ने यह पता नहीं लगा लिया कि ग्राहक को क्या चाहिए और फिर कोड

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

ADDENDUM: इस प्रक्रिया को "सिस्टम विश्लेषण और डिजाइन" उर्फ ​​परामर्श कहा जाता है, और इसे कभी भी मुफ्त में नहीं किया जाना चाहिए


1
+1 द फ्री बिट के लिए: कभी भी एक दोस्त के लिए घंटों वेबसाइट लेआउट के उस जोड़े को करने में चूसा मत हो ....
एरैंट

1
"कभी भी मुफ्त में नहीं किया जाना चाहिए" एक और प्रश्न आईएमओ के विस्तार के लायक है।
एंडी तजहोनो

7

प्रोग्रामिंग उपयोगकर्ताओं की समस्याओं को हल करने के बारे में है। तो मेरे लिए, "अतिरिक्त" प्रयास और दर्द में काम करने के लिए, हमारे उपयोगकर्ताओं को एक संतोषजनक समाधान प्राप्त करने के लिए, लगभग हमेशा "अतिरिक्त" परेशानी से बचने पर जीतता है, और अंत में कुछ भी उपयोगी नहीं देता है।

(बेशक, वहाँ वास्तविक उपयोगकर्ता हैं जिनके पास वास्तव में कोई सुराग नहीं है कि वे क्या चाहते हैं, और कोई भी प्रयास उन्हें ऐसी स्थिति में नहीं पहुंचा सकता है जहां वे कोई सार्थक निर्णय ले सकें। लेकिन मेरा मानना ​​है कि ज्यादातर मामलों में उनके पास है। एक वास्तविक समस्या, वे इसे हल करने के लिए प्रयास और नकदी खर्च करने के लिए तैयार हैं, और वे खुश होंगे यदि हम उन्हें काम करने वाले समाधान के करीब लाने में मदद कर सकते हैं।)

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

वास्तविक कौशल सही समय के लिए सही दृष्टिकोण चुनने में है।

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

इसे "अतिरिक्त" प्रयास के रूप में देखा जा सकता है जो वापस भुगतान नहीं करता है - हालांकि, मैं इसे दो कारणों से निवेश के रूप में देखना पसंद करता हूं:

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

3

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

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

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

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

किसी भी मामले में: कोड का एक टुकड़ा फिर से लिखना आवश्यकताओं के एक टुकड़े को फिर से लिखना नहीं पड़ता है।

पीएस शायद आपको लगता है कि मैं झरना विधि की वकालत कर रहा हूं। मैं 'बड़े डिज़ाइन अप फ्रंट' का विश्वास नहीं कर रहा हूँ, लेकिन मेरा मानना ​​है कि डोमेन विश्लेषण का प्रयास कार्यान्वयन प्रयास के अनुपात में होना चाहिए। व्यक्ति कई चक्र (प्रोटोटाइप, रिलीज उम्मीदवार, आदि) बना सकता है।


2

निश्चित रूप से विकल्प 2 जब तक कि आपके उपयोगकर्ता डेवलपर्स नहीं हैं (तब भी विकल्प 2 की आवश्यकता हो सकती है)।

अधिकांश सॉफ्टवेयर विकास जीवनचक्रों में से अधिकांश आवश्यकता एकत्रित करने पर ध्यान केंद्रित करते हैं। न केवल अधिकांश उपयोगकर्ता यह नहीं जानते हैं कि वे क्या चाहते हैं, वे यह भी नहीं जानते कि क्या संभव है, इसलिए उपयोगकर्ता को यह समझने के लिए कि उपयोगकर्ता की जरूरत है एक महत्वपूर्ण सॉफ्टवेयर विकास कार्य है।


2

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

आप विकल्प # 2 में कूदना नहीं चाहते हैं जब वे मुश्किल से यह बता सकते हैं कि वे क्या चाहते हैं क्योंकि यह पूरी प्रक्रिया को धीमा और अधिक निराशाजनक बना देगा (जब तक कि उनके पास आपके पास आने पर वे क्या चाहते हैं इसका बहुत स्पष्ट विचार नहीं है, लेकिन मेरे अनुभव में यह बहुत दुर्लभ है)। उन्हें अपने विचारों को एक साथ लाने के लिए बनाओ। क्या उन्होंने कागज पर कुछ लिखा है, वर्णन करें कि यदि संभव हो तो वे मौजूदा प्रणालियों के संदर्भ में क्या चाहते हैं (पूर्व।) हम चाहते हैं कि एक वेबसाइट blahblah.com जैसी हो, लेकिन इन अंतरों के साथ ... हम एक उपकरण चाहते हैं जो उत्पाद X की तरह टास्क ए करता है। , लेकिन UI को टास्क B ... "भी करना चाहिए। फिर यह एक अच्छा समय है कि वे उस विशिष्ट आवश्यकताओं को परिष्कृत करना शुरू करें जो आप सिस्टम के निर्माण के लिए उपयोग कर सकते हैं।


2

सामान्य तौर पर, ग्राहक आपके पास यह जानने के लिए आएंगे कि यह क्या है कि उन्हें लगता है कि उन्हें ज़रूरत है। दुर्भाग्य से, यह वही है जो वे आपको बताएंगे कि समस्या का वर्णन करने के बजाय वे समाधान का नेतृत्व करेंगे जो उन्हें लगता है कि आप प्रदान करेंगे।

किसी ऐसी चीज़ को डिज़ाइन करने के लिए, जो उनकी ज़रूरतों को पूरा करेगी, आपको उन ज़रूरतों को पहचानना होगा और ऐसा करने के लिए, किसी को क्लाइंट को नीचे रखना होगा और उन ज़रूरतों को दूर करना होगा। अगर कोई और नहीं कर सकता है, तो आपको करना चाहिए। (यदि कोई और सोचता है कि वे कर सकते हैं, तो आपको उनके साथ बैठना पड़ सकता है और वास्तविक जरूरतों को बाद में निकालना होगा ...)

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

याद रखें, आप विकास चक्र में दोषों को जल्द से जल्द पकड़ना चाहते हैं। यदि आप कोडिंग या परीक्षण के बजाय आवश्यकताओं के दौरान उन्हें पकड़ सकते हैं, तो आप अपने आप को बहुत समय बचा लेंगे।


2

विकल्प 1 कुछ काम करने से बचने का एक शानदार तरीका है। मैंने इसका उपयोग तब किया है जब मुझे विश्वास था कि काम अनावश्यक है या मेरे पास करने के लिए अधिक महत्वपूर्ण चीजें हैं।

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

दूसरे, उपयोगकर्ताओं को जरूरी नहीं पता है कि उन्हें क्या चाहिए, और आमतौर पर वे नहीं जानते कि वे क्या चाहते हैं, किसी भी कार्रवाई योग्य अर्थ में।

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

उपयोगकर्ताओं को कुछ देने का एकमात्र तरीका यह है कि उन्हें अपनी पसंद के अनुसार काम करना चाहिए।

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