जोड़ी स्वैपिंग: पेशेवरों और विपक्ष क्या हैं?


15

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

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

दोनों दावे उचित लगते हैं; प्रबंधन के दृष्टिकोण से ऐसा लगता है कि आप स्थिरता और गुणवत्ता दोनों में वृद्धि प्राप्त करते हैं, और इस तरह के लगातार गमागमन के कारण ज्यादातर एजाइल / एक्सपी पुस्तकों में मानक सिद्धांत है जो मैंने देखा है।

इसलिए, जब वास्तव में व्यवहार में आते हैं, तो लोग वास्तव में जोड़ी से स्वैप करने के बारे में क्या सोचते हैं

  • एक प्रोग्रामर की बात?
  • एक प्रबंधक की बात?

तथा

  • जब कोई एक जोड़ी पर / बंद होने पर क्या निर्धारित करता है?

क्या यह "पेयर प्रोग्रामिंग" के समान है?
रॉबर्ट हार्वे

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

महान प्रश्न के लिए +1। अफसोस की बात है, मुझे लगता है कि एक ऐसी दुकान ढूंढना काफी कठिन है जो नियमित रूप से जोड़ी बनाती है, अकेले जोड़े की अदला-बदली के लिए पर्याप्त डेटा है। उम्मीद है कि मैं इस बारे में गलत हूं और आपको कुछ अच्छी प्रतिक्रियाएं मिल रही हैं, मुझे कुछ सुनने में बहुत दिलचस्पी है।
जेसी मैककुलोच

2
मुझे व्यक्तिगत रूप से जोड़ी की अदला-बदली बहुत विचलित करने वाली लगेगी। इतने अलग-अलग व्यक्तित्वों और कौशल के स्तर के साथ इस तरह के करीबी मामलों में निपटने की कोशिश बहुत अधिक संज्ञानात्मक असंगति पैदा करेगी।
रॉबर्ट हार्वे

@ जेसे मैककुलोच - मैं एक ऐसे स्थान पर काम करता हूं जहां केवल जोड़ी के कार्यक्रम और स्वैप बहुत अधिक होते हैं, जैसा कि किताबों को कहना चाहिए कि एक टीम चाहिए। मैंने शुद्ध एकल वातावरण में भी काम किया है और इसलिए इसके विपरीत कुछ अच्छे परिप्रेक्ष्य हैं। हालाँकि, मैं अन्य लोगों की राय सुनना चाहूंगा, क्योंकि मैं यह देखना चाहता हूं कि क्या वे मुझे बहुत प्रभावित किए बिना अपने से मेल खाते हैं।

जवाबों:


4

जोड़ी प्रोग्रामिंग मुश्किल है।

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

मैंने पाया है कि ऐसे वातावरण में भी जहाँ युग्मन किया जाता है, जोड़ी की अदला-बदली लागत के लायक नहीं है। हालाँकि, यह हमारे कार्यों के कारण हो सकता है ~ ~ 1.5 दिन से अधिक नहीं। हमें कार्य को तोड़ने का एक बड़ा फायदा मिला ~ ~ 1.5 दिनों के काम से बड़ा कोई नहीं। लंबे समय तक चलने वाले कार्यों के संदर्भ में जोड़ी की अदला-बदली अधिक मायने रखती है।


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

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

@William Pietri: मेरे अनुभव में जोड़ी बनाना शिक्षण का अच्छा प्रारूप नहीं है। मुझे किसी को ले जाने और कोड के माध्यम से चलने में कोई समस्या नहीं है, जो उन्हें समझाए कि क्या चल रहा है। हालाँकि, यह जोड़ी प्रोग्रामिंग नहीं है।
डायटबुद्ध

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

@ दिदिबुद्ध: मेरे लिए काम करता है! मेरे लिए एक नई भाषा, रूपरेखा या पुस्तकालय सीखने का सबसे तेज़ तरीका उन लोगों के साथ जोड़ी बनाना है जो इसे अच्छी तरह से जानते हैं। और मुझे पता है कि जोड़ी बनाने की तुलना में गति बढ़ाने के लिए कोई बेहतर तरीका नहीं है। उदाहरण के लिए, यह अनुभव पर है: slesinsky.org/brian/code/starting_xp.html
विलियम

3

मैं प्रोग्रामर और मैनेजर दोनों हूं। यहाँ मेरा ले रहा है:

नियमित स्वैपिंग बढ़िया है। मैं प्रति दिन 2-4 बार स्वैप करने का पक्ष लेता हूं, जो कि लगभग उतना ही तेज है जितना मुझे लगता है कि आप जा सकते हैं। हमारे लिए, यह प्राकृतिक ब्रेकिंग पॉइंट पर आता है: आम तौर पर दोपहर और दोपहर के भोजन के बाद। हर दिन या दो को बदलना शायद ठीक है, लेकिन मैं इससे बहुत लंबे समय तक चलने के बारे में चिंता करूंगा। (मैंने एक स्थान को हर छह सप्ताह में शायद ही कभी स्वैप करने के बारे में सुना है, जो मुझे लगता है कि पागल है। इतने समय के बाद आप एक संत को मारने के लिए तैयार होंगे।)

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

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

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


मेरे लिए मेरा कहना है कि स्वैपिंग केवल तभी अच्छी है जब a) मैं उस आदमी के साथ कोडिंग का आनंद नहीं ले रहा हूं जिसके साथ मैं कोडिंग कर रहा हूं, b) मुझे वह कहानी पसंद नहीं है जिस पर मैं काम कर रहा हूं (जैसे कि एक ropey को ठीक करना) पुरानी मेमोरी बग)। अन्यथा मैं शुरू से अंत तक बने रहना चाहता हूं। व्यक्तिगत रूप से मुझे लगता है कि जोड़ी की अदला-बदली कोड की गुणवत्ता को कम कर देती है क्योंकि अच्छे कोड में एक ही स्पष्ट दृष्टि होनी चाहिए, जितने अधिक लोग एक ही हिस्से पर काम करते हैं, उतनी ही अधिक दृष्टिहीन हो जाती है। ज्ञान साझा करने के लिए, मैं कहूंगा कि अधिकांश लोगों को इस बात का थोड़ा सा पता है कि क्या चल रहा है, लेकिन कोई भी वास्तव में कुछ भी नहीं समझता है।

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

1

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

ऐसा क्यों है कि हम हर दो / चार घंटे में जोड़े नहीं बदलते हैं? खैर, वास्तव में मैं उन टीमों में रहा हूं जो इसका अभ्यास भी करती हैं। यह निश्चित रूप से रास्ता कूलर और अधिक उत्पादक है। लेकिन यहां सौदा है, जोड़े को स्वैप करने का समय अंतराल एक नियम नहीं होना चाहिए, यह अपने आप ही होना चाहिए; इसके बाद ही प्रबंधक या व्यवसाय इसके लाभ देख सकते हैं।

मैंने इसे देखा और अनुभव किया है। मैं अब इसका प्रचारक हूं। इसका कोई सिद्धांत नहीं है। बल्कि इसकी पूरी तरह से व्यावहारिक :) हैप्पी पिंग-पोंग जोड़ी और स्वैपिंग जोड़ी।


1
काश मैं अब पूरी तरह से इस राय में परिवर्तित हो गया कि जोड़ी प्रोग्रामिंग सामान्य रूप से एक बुरा विचार है; जोड़ी प्रोग्रामिंग में लगातार जोड़ी गमागमन बस बातें बदतर बना देता है। मैंने सभी सिद्धांत को सुना है और इसे व्यवहार में बहुत प्रयास किया है और मुझे लगता है कि यह अविश्वसनीय रूप से अक्षम है, एकल प्रोग्रामिंग की तुलना में बहुत अधिक उबाऊ और निराशाजनक है और निम्न गुणवत्ता कोड में परिणाम है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.