किन परिस्थितियों में - यदि कोई है - क्या प्रोग्रामर को एक टीम में जोड़ने से वास्तव में पहले से ही देर हो चुकी परियोजना के विकास में तेजी आती है?
किन परिस्थितियों में - यदि कोई है - क्या प्रोग्रामर को एक टीम में जोड़ने से वास्तव में पहले से ही देर हो चुकी परियोजना के विकास में तेजी आती है?
जवाबों:
सटीक परिस्थितियां स्पष्ट रूप से आपकी परियोजना (जैसे विकास दल, प्रबंधन शैली, प्रक्रिया परिपक्वता, विषय वस्तु की कठिनाई, आदि) के लिए बहुत विशिष्ट हैं। इसे थोड़ा और बेहतर बनाने के लिए हम इसके बारे में कुछ भी बोल सकते हैं, लेकिन ओवरसिमलाइजेशन को पार करने के लिए, मैं आपके बारे में कुछ बताने जा रहा हूं:
किसी भी परिस्थिति में, यदि कोई हो, टीम के सदस्यों को एक सॉफ्टवेयर डेवलपमेंट प्रोजेक्ट में जोड़ सकता है जो वास्तविक जहाज तारीख में कमी के साथ गुणवत्ता के स्तर के बराबर परिणाम में देर से चल रहा है अगर मौजूदा टीम को पूरा होने तक काम करने की अनुमति थी?
ऐसी कई चीजें हैं जो मुझे लगता है कि आवश्यक हैं , लेकिन पर्याप्त नहीं हैं, इसके लिए (कोई विशेष क्रम में नहीं):
पहली चीजों में से एक पर चर्चा की जानी चाहिए कि क्या जहाज की तारीख हो सकती है खिसकाया सकता है, क्या सुविधाओं में कटौती की जा सकती है, और यदि दोनों के कुछ संयोजन आपको अपने मौजूदा कर्मचारियों के साथ रिलीज को संतुष्ट करने की अनुमति देंगे। कई बार इसके दो फीचर्स ऐसे होते हैं जो वास्तव में उस टीम के संसाधनों को रोक रहे हैं जो निवेश के बराबर मूल्य नहीं देगा। इसलिए अपनी परियोजना की प्राथमिकताओं को किसी अन्य चीज से पहले एक गंभीर समीक्षा दें।
यदि उपरोक्त पैराग्राफ का परिणाम पर्याप्त नहीं है, तो ऊपर दी गई सूची पर जाएं। यदि आपने शेड्यूल स्लिप को जल्दी पकड़ा है, तो सही समय पर सही टीम के सदस्यों का जुड़ाव रिलीज को बचा सकता है। दुर्भाग्य से, आप अपने अपेक्षित जहाज की तारीख के जितना करीब होंगे, लोगों को जोड़ने के साथ उतनी ही चीजें गलत हो सकती हैं। एक बिंदु पर, आप "पॉइंट ऑफ़ नो रिटर्न" को पार कर लेंगे जहाँ कोई भी परिवर्तन (वर्तमान विकास शाखा को शिपिंग के अलावा) आपकी रिहाई को नहीं बचा सकता है।
मैं आगे और आगे बढ़ सकता था लेकिन मुझे लगता है कि मैंने प्रमुख बिंदुओं को मारा। प्रोजेक्ट के बाहर और अपने करियर के संदर्भ में, कंपनी की भविष्य की सफलता, आदि में से एक चीज़ जो आपको निश्चित रूप से करनी चाहिए, यह पता लगाना चाहिए कि आपको देर क्यों हुई, अगर कुछ भी आपको पहले से सतर्क किया जा सकता था, और आपको किन उपायों की ज़रूरत है भविष्य में इसे रोकने के लिए। एक देर से परियोजना आमतौर पर होती है क्योंकि आप या तो थे:
उम्मीद है की वो मदद करदे!
यह तभी मदद करता है जब आपके पास संसाधन-संचालित परियोजना हो।
उदाहरण के लिए, इस पर विचार करें:
आपको एक बड़े पोस्टर को पेंट करने की आवश्यकता है, 4 से 6 मीटर की दूरी पर कहें। एक पोस्टर जो बड़ा है, आप संभवतः उसके सामने दो या तीन लोगों को रख सकते हैं, और उन्हें समानांतर में पेंट कर सकते हैं। हालाँकि, इसके सामने 20 लोगों को रखने से काम नहीं चलेगा। इसके अतिरिक्त, आपको कुशल लोगों की आवश्यकता होगी, जब तक कि आप एक भद्दा पोस्टर नहीं चाहते हैं।
हालाँकि, यदि आपका प्रोजेक्ट तैयार-मुद्रित पत्रों (जैसे कि आप सही जीत गए हैं ) के साथ लिफाफे को सामान करने के लिए है, तो आप जितने अधिक लोगों को जोड़ते हैं, यह उतना ही तेज़ होता है। काम के ढेर को हटाने में कुछ ओवरहेड है, इसलिए आपको उस बिंदु तक लाभ नहीं मिल सकता है जहां आपके पास एक व्यक्ति पीआर है। लिफाफा, लेकिन आप केवल 2 या 3 लोगों की तुलना में बहुत अधिक लाभ प्राप्त कर सकते हैं।
इसलिए यदि आपकी परियोजना को आसानी से छोटे टुकड़ों में विभाजित किया जा सकता है, और अगर टीम के सदस्य जल्दी (जैसे ... तुरंत) गति प्राप्त कर सकते हैं, तो अधिक लोगों को जोड़ने से यह तेजी से बढ़ेगा, एक बिंदु तक।
अफसोस की बात है कि हमारी दुनिया में बहुत सी परियोजनाएं ऐसी नहीं हैं, जिसके कारण पौराणिक मानव-मासिक पुस्तक के बारे में डॉक्यूमेंट की टिप वास्तव में अच्छी सलाह है।
हो सकता है कि निम्नलिखित शर्तें लागू हों:
मैं आपको पहली बार इन सभी को एक साथ देखने का मौका देता हूँ।
पौराणिक मानव-माह के अनुसार, लोगों को देर से प्रोजेक्ट में जोड़ने का मुख्य कारण बाद में ओ (एन ^ 2) संचार हेडहेड है।
मैंने इसके लिए एक प्राथमिक अपवाद का अनुभव किया है: यदि एक परियोजना पर केवल एक ही व्यक्ति है, तो यह लगभग हमेशा बर्बाद होता है। एक दूसरे को जोड़ना लगभग हर बार इसे गति देता है। ऐसा इसलिए है क्योंकि संचार नहीं है यही कारण है कि भूमि के ऊपर यह अपने विचारों को स्पष्ट और कम बेवकूफ गलतियाँ करने के लिए एक उपयोगी अवसर है - उस मामले में।
इसके अलावा, जैसा कि आप स्पष्ट रूप से जानते थे कि जब आपने अपना प्रश्न पोस्ट किया था, तो पौराणिक मानव-माह से सलाह केवल देर से परियोजनाओं पर लागू होती है । यदि आपका प्रोजेक्ट पहले ही समाप्त नहीं हुआ है, तो यह बहुत संभव है कि लोगों को जोड़ना बाद में नहीं बनेगा। यह मानते हुए कि आप इसे ठीक से करते हैं, बिल्कुल।
यदि मौजूदा प्रोग्रामर पूरी तरह से अक्षम हैं, तो सक्षम प्रोग्रामर को जोड़ने में मदद मिल सकती है।
मैं एक ऐसी स्थिति की कल्पना कर सकता हूं, जहां आपके पास एक बहुत ही मॉड्यूलर प्रणाली थी, और मौजूदा प्रोग्रामर (एस) बहुत अलग-थलग मॉड्यूल पर भी शुरू नहीं हुए थे । उस स्थिति में, परियोजना के उस हिस्से को एक नए प्रोग्रामर को सौंपना मदद कर सकता है।
मूल रूप से पौराणिक मानव महीना संदर्भ सही हैं, मेरे द्वारा बनाए गए जैसे वंचित मामलों को छोड़कर। श्री ब्रूक्स ने यह दिखाने के लिए ठोस शोध किया कि एक निश्चित बिंदु के बाद, एक परियोजना में नए प्रोग्रामर को जोड़ने की नेटवर्किंग और संचार लागत किसी भी लाभ को आगे बढ़ाएगी जो आप उनकी उत्पादकता से प्राप्त करते हैं।
प्रोग्रामर को जोड़ने के बजाय, कोई प्रशासनिक मदद को जोड़ने के बारे में सोच सकता है। कुछ भी जो विकर्षणों को दूर करेगा, फोकस में सुधार करेगा, या प्रेरणा में सुधार सहायक हो सकता है। इसमें प्रणाली और प्रशासन दोनों शामिल हैं, साथ ही साथ लंच पाने की अधिक अभियुक्त चीजें भी शामिल हैं।
जाहिर है कि हर परियोजना अलग है लेकिन अधिकांश विकास नौकरियों को डेवलपर्स के बीच एक निश्चित राशि के सहयोग का आश्वासन दिया जा सकता है। जहां यह मामला है मेरा अनुभव यह रहा है कि ताजा संसाधन वास्तव में अनजाने में उन लोगों को धीमा कर सकते हैं जिन पर वे भरोसा कर रहे हैं कि उन्हें गति में लाने के लिए और कुछ मामलों में यह आपके प्रमुख लोग हो सकते हैं (संयोग से यह आमतौर पर 'प्रमुख' लोग होंगे एक newb को शिक्षित करने का समय)। जब वे गति करने के लिए होते हैं , तो कोई गारंटी नहीं होती है कि उनका काम बाकी टीम के साथ स्थापित 'नियमों' या 'कार्य संस्कृति' में फिट होगा। तो फिर, यह अच्छे से अधिक नुकसान कर सकता है। ताकि एक तरफ, ये ऐसी परिस्थितियां हैं जहां यह फायदेमंद हो सकता है:
1) नए संसाधन में एक तंग कार्य है जिसे अन्य डेवलपर्स के साथ न्यूनतम सहभागिता की आवश्यकता होती है और एक कौशल सेट जिसे पहले से ही प्रदर्शित किया गया है। (अर्थात, मौजूदा कोड को एक नए प्लेटफ़ॉर्म पर पोर्ट करना, बाह्य रूप से एक मृत मॉड्यूल को फिर से बेचना जो वर्तमान में मौजूदा कोड बेस में बंद है)।
2) परियोजना को इस तरह से प्रबंधित किया जाता है कि टीम के अन्य वरिष्ठ सदस्यों को नएब को गति प्रदान करने में सहायता करने के लिए साझा किया जा सकता है और उनके काम को सुनिश्चित करने के तरीके के साथ उन्हें सलाह दी जाती है कि जो पहले से ही किया गया है, उसके अनुरूप है।
3) टीम के अन्य सदस्य बहुत धैर्यवान हैं।
मुझे लगता है कि काम के अंत में लोगों को जोड़ने से चीजों को गति मिल सकती है अगर:
काम समानांतर में किया जा सकता है।
अतिरिक्त संसाधनों द्वारा बचाई गई राशि, परियोजना में अनुभव किए गए लोगों द्वारा अनुभव की गई चीजों को समझाने के लिए खोए गए समय से अधिक है।
संपादित करें: मैं उल्लेख करना भूल गया, इस तरह की बात बहुत बार नहीं होती है। आमतौर पर यह काफी सीधा फॉरवर्ड सामान होता है, जैसे एडमिन स्क्रीन जो एक टेबल पर साधारण CRUD होता है। इन दिनों इस प्रकार के उपकरण ज्यादातर वैसे भी ऑटोजेनरेटेड हो सकते हैं।
हालांकि इस तरह के काम को संभालने वाले प्रबंधकों से सावधान रहें। यह बहुत अच्छा लगता है, लेकिन वास्तव में यह परियोजना के किसी भी महत्वपूर्ण समय को ट्रिम करने के लिए पर्याप्त नहीं है।
मुख्य रूप से मैं उन चीजों के बारे में सोच रहा हूं जो उन्हें वर्तमान में विकसित हो रहे लोगों के रास्ते से बाहर रहने देती हैं। मैं पौराणिक मानव-महीने से सहमत हूं, लेकिन मुझे भी लगता है कि हर चीज के अपवाद हैं।
मुझे लगता है कि एक टीम में लोगों को जोड़ने से परियोजना को खुद से जोड़ने से ज्यादा एक परियोजना को गति मिल सकती है।
मैं अक्सर कई समवर्ती परियोजनाओं के होने की समस्या में भागता हूं। यदि मैं अकेले उस परियोजना पर ध्यान केंद्रित कर सकता हूं, तो उन परियोजनाओं में से कोई एक तेजी से पूरा हो सकता है। टीम के सदस्यों को जोड़कर, मैं अन्य परियोजनाओं से संक्रमण कर सकता था।
बेशक, यह मानता है कि आपने सक्षम, स्व-प्रेरित डेवलपर्स को काम पर रखा है, जो बड़ी परियोजनाओं को प्राप्त करने में सक्षम हैं और स्वतंत्र रूप से सीखते हैं। :-)
यदि अतिरिक्त संसाधन आपकी मौजूदा टीम के पूरक हैं तो यह आदर्श हो सकता है। उदाहरण के लिए, यदि आप अपना प्रोडक्शन हार्डवेयर सेट करने वाले हैं और यह सत्यापित करते हैं कि डेटाबेस वास्तव में केवल अच्छे परिणाम देने के विपरीत है (जो कि आपकी टीम डोमेन विशेषज्ञ के रूप में जानती है) एक अच्छे dba से समय उधार ले रही है जो परियोजना पर काम कर रहा है तुम्हारा बहुत प्रशिक्षण लागत के बिना टीम को गति कर सकते हैं
सीधे शब्दों में कहें। यह बचे हुए समय और उत्पादकता की तुलना करने के लिए नीचे आता है, आप किसी ऐसे व्यक्ति से प्राप्त करेंगे जो गति के लिए आने के लिए अतिरिक्त संसाधन लेता है और उत्पादक हो सकता है और मौजूदा संसाधनों द्वारा उन्हें पढ़ाने में लगाए गए समय को घटाता है। प्रमुख कारक (महत्व के क्रम में):
जहां एक टीम पहले से ही प्रोग्रामिंग को पेयर करने के लिए उपयोग की जाती है, फिर दूसरे डेवलपर को जोड़ दिया जाता है को जो पहले से ही जोड़ी बनाने में कुशल हो, परियोजना को धीमा नहीं कर सकता है, खासकर अगर विकास एक टीडीडी शैली के साथ आगे बढ़ रहा है।
नया डेवलपर धीरे-धीरे अधिक उत्पादक बन जाएगा क्योंकि वे कोड बेस को अधिक समझते हैं, और किसी भी गलतफहमी को बहुत जल्दी या तो अपनी जोड़ी से पकड़ा जाएगा, या हर सूट चेक-इन से पहले चलाए जाने वाले टेस्ट सूट द्वारा और आदर्श रूप से एक चेक होना चाहिए कम से कम हर दस मिनट में)।
हालांकि, अतिरिक्त संचार ओवरहेड्स के प्रभावों को ध्यान में रखा जाना चाहिए। यह महत्वपूर्ण है कि परियोजना के मौजूदा ज्ञान को बहुत अधिक न बढ़ाया जाए।