एक टीम में डिजाइन, दूसरे में कोडिंग


28

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

यह पहली बार है जब मैं इस विशेषताओं के साथ किसी परियोजना का सामना कर रहा हूं और मेरे लिए यह अजीब तरह का लगता है: प्रबंधक हमसे बहुत विस्तृत डिजाइन दस्तावेज बनाने की अपेक्षा करते हैं, ताकि अपतटीय टीम के लिए त्रुटि के लिए कोई स्थान न हो; मेरे नजरिए से वे हमें कागज़ में कोडिंग करवा रहे हैं जबकि हम इसे एक आईडीई में कर सकते हैं।

तो, मेरा सवाल यह है कि क्या यह दृष्टिकोण अच्छा है, या सही साबित हुआ है? हमारी परियोजना में सफल होने के लिए हमारी सॉफ्टवेयर प्रक्रिया के मुख्य विचार क्या हैं?



5
@ माइक: स्पेसक्राफ्ट सॉफ्टवेयर अधिकांश सॉफ्टवेयरों की तुलना में थोड़ा अलग है। इसमें हर समय पूरी तरह से काम करना पड़ता है, या जीवन की हानि और अत्यधिक महंगी संपत्ति हो सकती है। देखें fastcompany.com/28121/they-write-right-stuff
रॉबर्ट हार्वे

9
मुझे लगता है कि अपतटीय टीम सस्ती है, क्या यह डिजाइन टीम के आकार से दोगुना है? क्या इन-हाउस टीम पर इसके कुछ वास्तविक फायदे हैं? उदाहरण के लिए जब वे नहीं करते तो वे अंतिम उपयोगकर्ताओं की प्राकृतिक भाषा बोलते हैं? क्या उनके पास कुछ प्रकार की प्रतिभा है जो आपके पास घर में नहीं है? यदि नहीं, तो मुझे लगता है कि आपकी कंपनी पर PHB विषाक्तता का बुरा मामला है ।
ZJR

1
@ माइक: मुझे लगता है कि यह कहना अधिक सटीक होगा कि अधिकांश सॉफ़्टवेयर में बग की एक छोटी संख्या स्वीकार्य मानी जाती है, क्योंकि बग-मुक्त सॉफ़्टवेयर एक स्पर्शोन्मुख है और उन शेष बग्स को प्राप्त करना बहुत महंगा है।
रॉबर्ट हार्वे

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

जवाबों:


36

मेरी राय:

यदि आप सभी लोगों को अपतटीय लोगों को दस्तावेज और आरेख देंगे, तो आपके पास बहुत सारी गलतफहमी और निराशा होगी

मेरी सिफारिश

  • उन्हें इतने सारे दस्तावेज़ न दें, बल्कि उन्हें अपने डिजाइन लक्ष्यों में बदलने के लिए इंटरफेस और अमूर्त कक्षाएं दें

  • उन्हें एक ज्ञात नामकरण मानक का उपयोग करने की आवश्यकता है।

  • उन्हें यूनिट परीक्षणों का उपयोग करने की आवश्यकता है।

  • प्रक्रिया की देखरेख के लिए अपने डिजाइनरों / वास्तुविदों में से एक को अपने परिसर में भेजें, यह अभी भी घर में कोडिंग की तुलना में सस्ता होगा, लेकिन आपको बेहतर परिणाम मिलेंगे।


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

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

@ कीथ्स महान टिप्पणी। मैं आपसे 110% सहमत हूँ।
ट्यूलेंस कोरडोवा

2
उन्हें उन कक्षाओं और इंटरफेस का उपयोग करने के लिए मजबूर करना जिनके साथ आप आए बिना किसी भी कोड को लिखे बिना खुद को आपदा के लिए एक नुस्खा है।
माइक वेलर

2
@ यूफ़ोरिक लिखने abstract void calculateDroneTrajectoryBasedOnCNNNewsFeed()और वास्तव में इसे लागू करने के बीच एक लंबा खिंचाव है।
ट्यूलेंस कोर्डोवा

26

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

यह भी है कि आपके नियोक्ताओं ने आपको क्या करने के लिए कहा है।

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


क्या आप "बहुत विशिष्ट" पर थोड़ा और विस्तार कर सकते हैं? क्या मुझे शामिल विधि pseudocode के स्तर तक जाना है?
कार्लोस गावडिया-काल्डेरन

8
Pseudocode ऑफशोर टीम से कोड प्राप्त करने के आपके अवसरों को ठीक उसी तरह बेहतर बनाएगा जैसा आप चाहते हैं। जैसा कि दूसरों ने बताया है, ऑफशोरिंग कार्य को सफलतापूर्वक करने की प्रक्रिया केवल घर के सभी कामों को रखने की तुलना में अधिक महंगा हो सकती है। लेकिन यह आपका निर्णय नहीं है।
रॉबर्ट हार्वे

2
ऐसा नहीं होना चाहिए It's very expensive when it goes wrong. :-)
LarsTech

@LarsTech: यही कारण है कि इसे सही करने का अतिरिक्त खर्च उचित है।
रॉबर्ट हार्वे


16

आखिरी प्रोजेक्ट मैं सॉफ्टवेयर डिजाइनर का था। सारा विकास अपतटीय था। हम सफल रहे। तो यह प्रक्रिया काम कर सकती है।

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

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

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

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


क्या आप किसी विशेष चुस्त प्रक्रिया का उपयोग करते हैं? एक अनुरूप हो सकता है?
कार्लोस गावडिया-काल्डेरन

2
यह शुद्ध चुस्त नहीं था, नियोजित पुनरावृत्तियों की तरह। सब कुछ सामने की योजना बनाई गई थी और फिर 2 सप्ताह के पुनरावृत्तियों में हिस्सा लिया। हमने प्रत्येक हस्तक्षेप के दौरान चुस्त प्रक्रियाओं का उपयोग किया। उपयोग में लाए जाने वाले वेग और बर्न डाउन चार्ट, मानक दैनिक स्टैंड अप एक घंटे या दो फोन कॉल ऑफशोर। निश्चित रूप से अपतटीय के लिए फोन पर बहुत समय बिताते हैं, लेकिन संचार समय के लिए हमारे आदर्श विकास का दिन 6 घंटे का था।
जॉन रेन्नोर

2
स्वयं पर ध्यान दें: भविष्य के सॉफ्टवेयर पुनरावृत्तियों से मनोरंजक वाहनों को समाप्त करें।
रॉबर्ट हार्वे

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

1
@ जज - नहीं, टीम केवल स्वीकृत कहानियों और सुविधाओं (कार्यक्षमता) पर पहुंचाने के लिए जिम्मेदार है। भविष्य की कार्यक्षमता वितरित नहीं की जाती है, हालांकि सॉफ़्टवेयर का डिज़ाइन आमतौर पर किसी प्रकार के लचीलेपन की अनुमति देता है, लेकिन हम केवल वही प्रदान करते हैं जो इसके लिए कहा गया था।
जॉन रेनोर

2

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

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

  1. कंकाल कोड, सार्वजनिक इंटरफ़ेस, सेवा इंटरफ़ेस, आदि को परिभाषित करें और एक साथ समीक्षा करें
  2. दूसरे पक्ष के साथ स्वीकृति परीक्षणों को परिभाषित करें
  3. छोटी कहानियों के आधार पर बड़े दस्तावेज़ को छोटी कहानियों में विभाजित करें। बड़ा दस्तावेज़ पूरे सिस्टम की एक बड़ी तस्वीर है
  4. कहानियों के चेक पॉइंट सेट करें, एक सप्ताह या दो सप्ताह

1 और 2 वास्तव में विकास के बारे में है, यह सुनिश्चित करने के लिए कि दूसरा पक्ष अच्छी तरह से आवश्यकता को समझता है, और दोनों पक्ष एक ही पैटर्न का उपयोग कर रहे हैं। 3 और 4 फुर्तीली विकास पद्धति का एक हिस्सा है, लेकिन अपतटीय विकास के लिए, पूर्ण चुस्त प्रक्रिया का उपयोग करना कठिन है।


1

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

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

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

यदि आप मुझे अपना विनिर्देश देते हैं तो मैं पूछूंगा। यदि आप मुझे यूनिट टेस्ट देते हैं, तो मैं कोड और परीक्षण करूंगा।

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