इन सवालों में से कई की तरह, मुझे लगता है कि जवाब है:
निर्भर करता है
यह मानने का कारण है कि स्थिति लेने के लिए कि प्रत्येक प्रोग्रामर को पता होना चाहिए कि कोड की हर पंक्ति गुमराह है।
अगर हम एक पल के लिए मान लें कि किसी को कोड के टुकड़े की गहरी समझ है, तो किसी ऐसे व्यक्ति की तुलना में 5 गुना तेजी से बदलाव होगा जो इसे बिल्कुल नहीं जानता है (मेरे अनुभव में विश्वास की एक विशाल छलांग नहीं) और इसमें लगभग एक महीने का समय लगता है कोडिंग अनुभव को एक काफी आकार के मॉड्यूल की अच्छी समझ प्राप्त करना (यह भी अनुचित नहीं है) तो हम कुछ (पूरी तरह से फर्जी और काल्पनिक) नंबर चला सकते हैं:
- प्रोग्रामर A: की गहरी समझ है
- प्रोग्रामर B: कोई नहीं
कहते हैं कि प्रोग्रामर A को प्रति दिन 1 यूनिट काम मिलता है। 5 कार्यदिवस के 4 सप्ताह में वह 20 इकाइयों को काम दे सकता है।
तो प्रोग्रामर बी, प्रति दिन 0.2 इकाइयों का काम शुरू कर रहा है, और अपने 20 वें दिन (21 वें दिन वे प्रोग्रामर ए के रूप में अच्छे हैं) पर काम के 0.96 इकाइयों के साथ समाप्त हो रहे हैं, उसी में 11.6 यूनिट काम पूरा करेंगे 20 दिन की अवधि। उस महीने के दौरान प्रोग्रामर बी ने प्रोग्रामर ए के साथ तुलना में 58% दक्षता हासिल की। हालांकि, अब आपके पास एक और प्रोग्रामर है जो उस मॉड्यूल के साथ-साथ पहले वाले को भी जानता है।
बेशक, एक सभ्य आकार की परियोजना पर, आपके पास हो सकता है ... 50 मॉड्यूल? तो उन सभी से परिचित होने में आपको लगभग 4 साल लगते हैं, और इसका मतलब है कि सीखने वाला प्रोग्रामर औसतन, प्रोग्रामर ए ... हम्म की तुलना में 58% दक्षता पर काम कर रहा है।
इसलिए इस परिदृश्य पर विचार करें: एक ही प्रोग्रामर, एक ही प्रोजेक्ट (A यह सब जानता है, और B इसे कोई भी नहीं जानता है।) कहते हैं कि वर्ष में 250 कार्य दिवस हैं। मान लें कि वर्कलोड को 50 मॉड्यूलों पर बेतरतीब ढंग से वितरित किया गया है। यदि हम दोनों प्रोग्रामर को समान रूप से विभाजित करते हैं, तो ए और बी दोनों को प्रत्येक मॉड्यूल पर 5 कार्य दिवस मिलते हैं। A प्रत्येक मॉड्यूल पर 5 यूनिट काम कर सकता है, लेकिन B केवल मेरे छोटे एक्सेल सिमुलेशन के अनुसार, प्रत्येक मॉड्यूल पर किए गए 1.4 यूनिट काम करता है। कुल (ए + बी) प्रति मॉड्यूल 6.4 यूनिट काम है। ऐसा इसलिए है क्योंकि B अपना अधिकांश समय बिना किसी कौशल के मॉड्यूल पर काम कर रहे हैं।
इस स्थिति में, मॉड्यूल के एक छोटे उपसमुच्चय पर B ध्यान केंद्रित करना अधिक इष्टतम है। यदि B केवल 25 मॉड्यूल पर ध्यान केंद्रित करता है, तो उन्हें प्रत्येक पर 10 दिन मिलते हैं, प्रत्येक पर 3.8 यूनिट काम करते हैं। प्रोग्रामर A तब प्रत्येक 25 मॉड्यूल पर 7 दिन बिता सकता है, जिस पर B काम नहीं कर रहा है, और 3 दिन प्रत्येक एक ही पर काम कर रहा है। B. कुल उत्पादकता 6.8 से 7 इकाइयों तक प्रति मॉड्यूल औसत 6.9 है, और यह काफी अधिक है। 6.4 यूनिट प्रति मॉड्यूल की तुलना में हमने ए और बी समान रूप से काम फैलाया।
जैसा कि हम उन मॉड्यूलों के दायरे को सीमित करते हैं जो B काम करता है, हम और भी अधिक दक्षता प्राप्त करते हैं (एक बिंदु तक)।
प्रशिक्षण
मैं यह भी तर्क दूंगा कि जो कोई मॉड्यूल के बारे में ज्यादा नहीं जानता है, वह उस व्यक्ति को बाधित करेगा जो अधिक अनुभव वाले किसी व्यक्ति की तुलना में बहुत अधिक करता है । तो ऊपर दिए गए इन नंबरों पर ध्यान नहीं दिया जाता है कि B जितना अधिक समय कोड पर खर्च करता है, उन्हें समझ में नहीं आता है, A का अधिक समय वे प्रश्न पूछकर उठाते हैं, और कभी-कभी बी ने जो किया उसे ठीक करने या उसका निवारण करने में मदद करते हैं। किसी को प्रशिक्षित करना एक समय लेने वाली गतिविधि है।
सर्वोतम उपाय
इसलिए मुझे लगता है कि इष्टतम समाधान जैसे प्रश्नों पर आधारित होना चाहिए:
- आपकी टीम कितनी बड़ी है? क्या यह समझ में आता है कि हर किसी को हर हिस्से पर प्रशिक्षित किया जाता है, या अगर हमारे पास 10 व्यक्ति टीम है, तो क्या हम यह सुनिश्चित कर सकते हैं कि प्रत्येक मॉड्यूल कम से कम 3 लोगों द्वारा जाना जाए? (10 प्रोग्रामर और 50 मॉड्यूल के साथ, प्रत्येक प्रोग्रामर को 3x कवरेज प्राप्त करने के लिए 15 मॉड्यूल जानना होगा।)
- आपका कर्मचारी कैसा है? यदि आप हर 3 साल में औसतन कर्मचारियों को बदल रहे हैं, और सिस्टम के हर कोने को जानने में इससे अधिक समय लगता है, तो वे खुद को वापस भुगतान करने के लिए प्रशिक्षण के लिए लंबे समय तक नहीं रहेंगे।
- क्या आपको वास्तव में एक समस्या का निदान करने के लिए एक विशेषज्ञ की आवश्यकता है? बहुत सारे लोग इस बहाने का उपयोग करते हैं, "क्या होगा अगर वह व्यक्ति छुट्टी पर जाता है", लेकिन मुझे कई बार एक प्रणाली में एक समस्या का निदान करने के लिए बुलाया गया है जिसका मुझे कोई अनुभव नहीं है। यह सच हो सकता है कि अनुभवी व्यक्ति इसे बहुत तेज़ी से पा सकता है, लेकिन इसका मतलब यह नहीं है कि आप उनके बिना एक या दो सप्ताह तक नहीं रह सकते। कुछ सॉफ्टवेयर सिस्टम इतने महत्वपूर्ण हैं कि समस्या का निदान 5 घंटे के बजाय 1 घंटे में किया जाना चाहिए या दुनिया समाप्त हो जाएगी। आपको इन जोखिमों का वजन करना होगा।
इसलिए मुझे लगता है कि "यह निर्भर करता है"। आप दो प्रोग्रामर के बीच 20 मॉड्यूल को बीच (10 प्रत्येक) के नीचे विभाजित नहीं करना चाहते हैं, क्योंकि तब आपके पास कोई लचीलापन नहीं है, लेकिन आप सभी 50 मॉड्यूल पर 10 प्रोग्रामर को पार नहीं करना चाहते हैं क्योंकि आप बहुत कम खो देते हैं दक्षता और आपको उतनी अतिरेक की आवश्यकता नहीं है।