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