पेअर प्रोग्रामिंग: Difference between revisions

From Vigyanwiki
(Text)
(Text)
Line 28: Line 28:


==टीम-निर्माण और संचार==
==टीम-निर्माण और संचार==
[[File:Pair programming 1.jpg|thumb|दो सहकर्मियों की पेअर प्रोग्रामिंग, 2007]]पेअर प्रोग्रामिंग टीम के सदस्यों को शीघ्रता से साझा करने की अनुमति देती है, जिससे उनके एजेंडे एक-दूसरे से छिपे होने की संभावना कम हो जाती है। इससे पेअर प्रोग्रामरों को अधिक आसानी से संवाद करना सीखने में मदद मिलती है। इससे परियोजना के भीतर संचार बैंडविड्थ और आवृत्ति बढ़ जाती है, जिससे टीम के भीतर समग्र सूचना प्रवाह बढ़ जाता है।<ref name="costs-benefits"/>
[[File:Pair programming 1.jpg|thumb|दो सहकर्मियों की पेअर प्रोग्रामिंग, 2007]]पेअर प्रोग्रामिंग टीम के सदस्यों को शीघ्रता से साझा करने की अनुमति देती है, जिससे उनके एजेंडे एक-दूसरे से छिपे होने की संभावना कम हो जाती है। इससे पेअर प्रोग्रामरों को अधिक आसानी से संवाद करना सीखने में मदद मिलती है। "इससे प्रोजेक्ट के भीतर संचार बैंडविड्थ और आवृत्ति बढ़ जाती है, जिससे टीम के भीतर समग्र सूचना प्रवाह बढ़ जाता है।"<ref name="costs-benefits"/>




==अध्ययन==
==अध्ययन==
पेअर प्रोग्रामिंग के अनुभवजन्य अध्ययन और मेटा-विश्लेषण दोनों हैं। अनुभवजन्य अध्ययन उत्पादकता के स्तर और कोड की गुणवत्ता की जांच करते हैं, जबकि मेटा-विश्लेषण परीक्षण और प्रकाशन की प्रक्रिया द्वारा शुरू किए गए पूर्वाग्रहों पर ध्यान केंद्रित कर सकते हैं।
पेअर प्रोग्रामिंग के अनुभवजन्य अध्ययन और मेटा-विश्लेषण दोनों हैं। अनुभवजन्य अध्ययन सर्जनात्मकता के स्तर और कोड की गुणवत्ता की जांच करते हैं, जबकि मेटा-विश्लेषण परीक्षण और प्रकाशन की प्रक्रिया द्वारा शुरू किए गए पूर्वाग्रहों पर ध्यान केंद्रित कर सकते हैं।


एक मेटा-विश्लेषण में पाया गया कि जोड़े आम तौर पर अकेले काम करने वाले प्रोग्रामर की तुलना में अधिक डिज़ाइन विकल्पों पर विचार करते हैं, सरल, अधिक रखरखाव योग्य डिज़ाइन पर पहुंचते हैं, और डिज़ाइन दोषों को पहले ही पकड़ लेते हैं। हालाँकि, इसने चिंता जताई कि इसके निष्कर्ष पेअर प्रोग्रामिंग पर प्रकाशित अध्ययनों के बीच [[प्रकाशन पूर्वाग्रह]] के संकेतों से प्रभावित हो सकते हैं। इससे यह निष्कर्ष निकला कि पेअर प्रोग्रामिंग समान रूप से लाभकारी या प्रभावी नहीं है।<ref name="hannay-meta">{{cite journal
एक मेटा-विश्लेषण में पाया गया कि जोड़े प्रायः अकेले काम करने वाले प्रोग्रामर की तुलना में अधिक डिज़ाइन विकल्पों पर विचार करते हैं, सरल, अधिक रखरखाव योग्य डिज़ाइन पर पहुंचते हैं, और डिज़ाइन दोषों को पहले ही पकड़ लेते हैं। हालाँकि, इसने चिंता जताई कि इसके निष्कर्ष "पेअर प्रोग्रामिंग पर प्रकाशित अध्ययनों के बीच [[प्रकाशन पूर्वाग्रह]] के संकेतों" से प्रभावित हो सकते हैं। इससे यह निष्कर्ष निकला कि "पेअर प्रोग्रामिंग समान रूप से लाभकारी या प्रभावी नहीं है"।<ref name="hannay-meta">{{cite journal
| last = Hannay
| last = Hannay
| first = Jo E.
| first = Jo E.
Line 45: Line 45:
|date=July 2009
|date=July 2009
| doi = 10.1016/j.infsof.2009.02.001}}</ref>
| doi = 10.1016/j.infsof.2009.02.001}}</ref>
हालाँकि पेअर प्रोग्रामर किसी कार्य को एकल प्रोग्रामर की तुलना में तेजी से पूरा कर सकते हैं, लेकिन मानव-घंटे|व्यक्ति-घंटे की कुल संख्या बढ़ जाती है।<ref name="ijhcs"/>एक प्रबंधक को काम को तेजी से पूरा करने और कोडिंग की उच्च लागत के मुकाबले परीक्षण और डिबगिंग समय को कम करने के बीच संतुलन बनाना होगा। इन कारकों का सापेक्षिक महत्व परियोजना और कार्य के अनुसार भिन्न-भिन्न हो सकता है।


युग्मन का लाभ उन कार्यों पर सबसे अधिक होता है जिन्हें प्रोग्रामर शुरू करने से पहले पूरी तरह से नहीं समझते हैं: यानी, चुनौतीपूर्ण कार्य जिनमें रचनात्मकता और परिष्कार की आवश्यकता होती है, और विशेषज्ञों की तुलना में नौसिखियों के लिए।<ref name='ijhcs'>{{cite journal
हालाँकि पेअर प्रोग्रामर किसी कार्य को एकल प्रोग्रामर की तुलना में तेजी से पूरा कर सकते हैं, लेकिन मानव-घंटे की कुल संख्या बढ़ जाती है।<ref name="ijhcs" /> एक प्रबंधक को काम को तेजी से पूरा करने और कोडिंग की उच्च लागत के मुकाबले परीक्षण और डिबगिंग समय को कम करने के बीच संतुलन बनाना होगा। इन कारकों का सापेक्षिक महत्व प्रोजेक्ट और कार्य के अनुसार भिन्न-भिन्न हो सकता है।
 
युग्मन का लाभ उन कार्यों पर सबसे अधिक होता है जिन्हें प्रोग्रामर शुरू करने से पहले पूरी तरह से नहीं समझते हैं: यानी, विशेषज्ञों की तुलना में नौसिखियों के लिए चुनौतीपूर्ण कार्य जिनमें रचनात्मकता और व्यवहार कुशल की आवश्यकता होती है।<ref name="ijhcs">{{cite journal
| last = Lui
| last = Lui
| first = Kim Man
| first = Kim Man
Line 63: Line 64:
| archive-date = 2011-07-20
| archive-date = 2011-07-20
| url-status = dead
| url-status = dead
}}</ref> पेअर प्रोग्रामिंग जटिल प्रोग्रामिंग कार्यों पर उच्च गुणवत्ता और शुद्धता प्राप्त करने में सहायक हो सकती है, लेकिन इससे विकास प्रयास (लागत) में भी काफी वृद्धि होगी।<ref name="hannay-meta"/>
}}</ref> पेअर प्रोग्रामिंग जटिल प्रोग्रामिंग कार्यों पर उच्च गुणवत्ता और शुद्धता प्राप्त करने में सहायक हो सकती है, लेकिन इससे विकास प्रयास (लागत) में भी काफी वृद्धि होगी।<ref name="hannay-meta" />


सरल कार्यों पर, जिन्हें पेअर पहले से ही पूरी तरह से समझती है, पेअर बनाने से उत्पादकता में शुद्ध गिरावट आती है।<ref name="ijhcs"/><संदर्भ नाम = अरिशोलम 2007 65-86 >{{cite journal
सरल कार्यों पर, जिन्हें जोड़ी पहले से ही पूरी तरह से समझती है, जोड़ी बनाने से रचनात्मकता में शुद्ध गिरावट आती है।<ref name="ijhcs" /><संदर्भ नाम = अरिशोलम 2007 65-86 >{{cite journal
| last = Arisholm
| last = Arisholm
| first = Erik
| first = Erik
Line 80: Line 81:
| archive-url = https://web.archive.org/web/20101029033020/http://simula.no/research/se/publications/Arisholm.2006.2/simula_pdf_file
| archive-url = https://web.archive.org/web/20101029033020/http://simula.no/research/se/publications/Arisholm.2006.2/simula_pdf_file
| archive-date = 2010-10-29
| archive-date = 2010-10-29
| url-status = dead}}</ref> इससे कोड विकास का समय कम हो सकता है लेकिन प्रोग्राम की गुणवत्ता कम होने का जोखिम भी है।<ref name="hannay-meta"/>जब नौसिखिया-नौसिखिया पेअर का उपयोग उन्हें प्रशिक्षित करने के लिए एक संरक्षक की पर्याप्त उपलब्धता के बिना किया जाता है, तो उत्पादकता भी गिर सकती है।<ref>{{cite web|last=Stephens|first=Matt |author2=Doug Rosenberg |title=Will Pair Programming Really Improve Your Project?|url=http://www.methodsandtools.com/archive/archive.php?id=10| access-date = 28 May 2011}}</ref>
| url-status = dead}}<nowiki></ref></nowiki> इससे कोड विकास का समय कम हो सकता है लेकिन प्रोग्राम की गुणवत्ता कम होने का जोखिम भी है।<ref name="hannay-meta" />जब नौसिखिया-नौसिखिया जोड़ी का उपयोग उन्हें प्रशिक्षित करने के लिए एक संरक्षक की पर्याप्त उपलब्धता के बिना किया जाता है, तो रचनात्मकता भी गिर सकती है।<ref>{{cite web|last=Stephens|first=Matt |author2=Doug Rosenberg |title=Will Pair Programming Really Improve Your Project?|url=http://www.methodsandtools.com/archive/archive.php?id=10| access-date = 28 May 2011}}</ref>
[[GitHub Copilot]] जैसे AI सहायता टूल का उपयोग करने वाले प्रोग्रामर के एक अध्ययन में पाया गया कि जबकि कुछ प्रोग्रामर ने AI सहायता को पेअर प्रोग्रामिंग के समान माना है, व्यवहार में ऐसे टूल का उपयोग प्रोग्रामर अनुभव के संदर्भ में बहुत अलग है, जिसमें मानव प्रोग्रामर को ऐसा करना पड़ता है। ड्राइवर और नेविगेटर भूमिकाओं के बीच बार-बार परिवर्तन।<ref>{{cite journal |last1=Sarkar |first1=Advait |last2=Gordon |first2=Andrew D. |last3=Negreanu |first3=Carina |last4=Poelitz |first4=Christian |last5=Ragavan |first5=Sruti S. |last6=Zorn |first6=Ben |title=What is it like to program with artificial intelligence? |journal=Psychology of Programming Interest Group |date=2022 |url=https://www.ppig.org/papers/2022-ppig-33rd-sarkar/ |access-date=27 March 2023}}</ref>
[[GitHub Copilot]] जैसे AI सहायता टूल का उपयोग करने वाले प्रोग्रामर के एक अध्ययन में पाया गया कि जबकि कुछ प्रोग्रामर ने AI सहायता को पेअर प्रोग्रामिंग के समान माना है, व्यवहार में ऐसे टूल का उपयोग प्रोग्रामर अनुभव के संदर्भ में बहुत अलग है, जिसमें मानव प्रोग्रामर को ऐसा करना पड़ता है। ड्राइवर और नेविगेटर भूमिकाओं के बीच बार-बार परिवर्तन।<ref>{{cite journal |last1=Sarkar |first1=Advait |last2=Gordon |first2=Andrew D. |last3=Negreanu |first3=Carina |last4=Poelitz |first4=Christian |last5=Ragavan |first5=Sruti S. |last6=Zorn |first6=Ben |title=What is it like to program with artificial intelligence? |journal=Psychology of Programming Interest Group |date=2022 |url=https://www.ppig.org/papers/2022-ppig-33rd-sarkar/ |access-date=27 March 2023}}</ref>




Line 94: Line 96:
:विशेषज्ञ-नौसिखिया पेअर विशेषज्ञ के लिए नौसिखिए को सलाह देने के कई अवसर पैदा करती है। यह पेअर नए विचारों को भी पेश कर सकती है, क्योंकि नौसिखिए द्वारा स्थापित प्रथाओं पर सवाल उठाने की अधिक संभावना है। विशेषज्ञ, जिसे अब स्थापित प्रथाओं की व्याख्या करने की आवश्यकता है, उन पर सवाल उठाने की भी अधिक संभावना है। हालाँकि, इस पेअर में, एक डरा हुआ नौसिखिया निष्क्रिय रूप से मास्टर को देख सकता है और सार्थक रूप से भाग लेने में संकोच कर सकता है। साथ ही, कुछ विशेषज्ञों के पास रचनात्मक नौसिखिया भागीदारी की अनुमति देने के लिए आवश्यक धैर्य नहीं हो सकता है।<ref>{{cite book|title=जोड़ी प्रोग्रामिंग प्रकाशित|author1=Williams, L. |author1-link=Laurie Williams (software engineer) |author2=Kessler, R.  |name-list-style=amp |publisher=Addison-Wesley Professional |location=Boston |date=2003|url=https://books.google.com/books?id=LRQhdlrKNE8C|isbn=9780201745764  }}</ref>
:विशेषज्ञ-नौसिखिया पेअर विशेषज्ञ के लिए नौसिखिए को सलाह देने के कई अवसर पैदा करती है। यह पेअर नए विचारों को भी पेश कर सकती है, क्योंकि नौसिखिए द्वारा स्थापित प्रथाओं पर सवाल उठाने की अधिक संभावना है। विशेषज्ञ, जिसे अब स्थापित प्रथाओं की व्याख्या करने की आवश्यकता है, उन पर सवाल उठाने की भी अधिक संभावना है। हालाँकि, इस पेअर में, एक डरा हुआ नौसिखिया निष्क्रिय रूप से मास्टर को देख सकता है और सार्थक रूप से भाग लेने में संकोच कर सकता है। साथ ही, कुछ विशेषज्ञों के पास रचनात्मक नौसिखिया भागीदारी की अनुमति देने के लिए आवश्यक धैर्य नहीं हो सकता है।<ref>{{cite book|title=जोड़ी प्रोग्रामिंग प्रकाशित|author1=Williams, L. |author1-link=Laurie Williams (software engineer) |author2=Kessler, R.  |name-list-style=amp |publisher=Addison-Wesley Professional |location=Boston |date=2003|url=https://books.google.com/books?id=LRQhdlrKNE8C|isbn=9780201745764  }}</ref>
;नौसिखिया–नौसिखिया
;नौसिखिया–नौसिखिया
:नौसिखिया-नौसिखिया पेअर स्वतंत्र रूप से काम करने वाले दो नौसिखियों की तुलना में काफी बेहतर परिणाम दे सकती है, हालांकि इस अभ्यास को आम तौर पर हतोत्साहित किया जाता है क्योंकि नौसिखियों के लिए उचित रोल मॉडल के बिना अच्छी आदतें विकसित करना कठिन होता है।<ref name="costs-benefits" />
:नौसिखिया-नौसिखिया पेअर स्वतंत्र रूप से काम करने वाले दो नौसिखियों की तुलना में काफी बेहतर परिणाम दे सकती है, हालांकि इस अभ्यास को प्रायः हतोत्साहित किया जाता है क्योंकि नौसिखियों के लिए उचित रोल मॉडल के बिना अच्छी आदतें विकसित करना कठिन होता है।<ref name="costs-benefits" />





Revision as of 15:10, 5 July 2023

पेअर प्रोग्रामिंग

पेअर प्रोग्रामिंग एक सॉफ्टवेयर डेवलपमेंट तकनीक है जिसमें दो कंप्यूटर प्रोग्रामर एक वर्कस्टेशन पर एक साथ काम करते हैं। एक, ड्राइवर, कोड लिखता है जबकि दूसरा, पर्यवेक्षक या नेविगेटर,[1] कोड टाइप करते समय कोड की प्रत्येक पंक्ति की समीक्षा करता है। दोनों प्रोग्रामर बार-बार भूमिकाएँ बदलते हैं।

समीक्षा करते समय, पर्यवेक्षक कार्य की "रणनीतिक" दिशा पर भी विचार करता है, सुधार के लिए विचार लाता है और संभावित भविष्य की समस्याओं के समाधान पर भी विचार करता है। इसका उद्देश्य ड्राइवर को सुरक्षा जाल और मार्गदर्शक के रूप में पर्यवेक्षक का उपयोग करते हुए, वर्तमान कार्य को पूरा करने के "सामरिक" पहलुओं पर अपना सारा ध्यान केंद्रित करने के लिए मुक्त करना है।

अर्थशास्त्र

व्यक्तिगत रूप से काम करने वाले प्रोग्रामर की तुलना में पेअर प्रोग्रामिंग से कोड वितरित करने के लिए आवश्यक मानव-घंटे बढ़ जाते हैं।[2]हालाँकि, परिणामी कोड में कम दोष होते हैं।[3] कोड विकास समय के साथ-साथ, क्षेत्र समर्थन लागत और गुणवत्ता आश्वासन जैसे अन्य कारक भी निवेश पर लाभ में सम्मिलित होते हैं। पेअर प्रोग्रामिंग सैद्धांतिक रूप से प्रोग्रामों में दोषों को कम करके इन खर्चों की भरपाई कर सकती है।[3]

ग़लतियाँ होने पर उन्हें रोकने के अलावा, अन्य अमूर्त लाभ भी निहित हो सकते हैं। उदाहरण के लिए, एक साथ काम करते समय फोन कॉल या अन्य विकर्षणों को अस्वीकार करने का शिष्टाचार, सहमत अंतराल पर कम विराम लेना, या फोन कॉल का जवाब देने के लिए साझा विराम लेना (लेकिन चूंकि कोई इंतजार कर रहा है तो जल्दी से काम पर लौटना)। टीम के एक सदस्य का ध्यान अधिक हो सकता है और यदि उनका ध्यान भटक जाता है तो वे दूसरे को प्रेरित करने या जगाने में मदद कर सकते हैं और वह भूमिका समय-समय पर बदल सकती है। एक सदस्य को किसी विषय या तकनीक का ज्ञान हो सकता है जो दूसरे को नहीं है, जो समाधान खोजने या परीक्षण करने में होने वाली देरी को खत्म कर सकता है, या बेहतर समाधान की अनुमति दे सकता है, इस प्रकार अकेले काम करने की तुलना में पेअर प्रोग्रामिंग प्रोग्रामर के कौशल सेट, ज्ञान और अनुभव को प्रभावी ढंग से बढ़ा सकता है। इनमें से प्रत्येक अमूर्त लाभ, और कई अन्य, को सटीक रूप से मापना चुनौतीपूर्ण हो सकता है लेकिन अधिक कुशल कार्य घंटों में योगदान दे सकता है।[citation needed]

डिज़ाइन गुणवत्ता

दो प्रोग्रामर वाले सिस्टम में तीन कारणों से समस्याओं के अधिक विविध समाधान उत्पन्न करने की अधिक क्षमता होती है:

  1. प्रोग्रामर कार्य में विभिन्न पूर्व अनुभव लाते हैं;
  2. वे कार्य से संबंधित जानकारी का अलग-अलग तरीकों से आकलन कर सकते हैं;
  3. वे अपनी कार्यात्मक भूमिकाओं के आधार पर समस्या के प्रति भिन्न-भिन्न संबंधों में खड़े होते हैं।

लक्ष्यों और योजनाओं को साझा करने के प्रयास में, जब प्रोग्रामर के बीच कोई टकराव उत्पन्न होता है, तो उन्हें खुलकर साझा कार्रवाई पर बातचीत करनी चाहिए। ऐसा करने में, वे अकेले प्रोग्रामर की तुलना में समस्या को हल करने के कई तरीकों पर विचार करते हैं। यह प्रोग्राम की डिज़ाइन गुणवत्ता में उल्लेखनीय रूप से सुधार करता है क्योंकि इससे खराब विधि का चयन करने की संभावना कम हो जाती है।[4]


संतुष्टि

2000 के पेअर प्रोग्रामर के एक ऑनलाइन सर्वेक्षण में, 96% प्रोग्रामर ने कहा कि उन्हें अकेले प्रोग्रामिंग की तुलना में पेअर प्रोग्रामिंग में काम करने में अधिक आनंद आया। इसके अलावा, 95% ने कहा कि जब उन्होंने जोड़ी प्रोग्राम किया तो वे अपने काम में अधिक आश्वस्त थे। हालाँकि, चूंकि सर्वेक्षण स्व-चयनित पेअर प्रोग्रामर के बीच था, इसमें उन प्रोग्रामर को सम्मिलित नहीं किया गया था जिन्हें पेअर प्रोग्राम के लिए मजबूर किया गया था।[5]


सीखना

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


टीम-निर्माण और संचार

दो सहकर्मियों की पेअर प्रोग्रामिंग, 2007

पेअर प्रोग्रामिंग टीम के सदस्यों को शीघ्रता से साझा करने की अनुमति देती है, जिससे उनके एजेंडे एक-दूसरे से छिपे होने की संभावना कम हो जाती है। इससे पेअर प्रोग्रामरों को अधिक आसानी से संवाद करना सीखने में मदद मिलती है। "इससे प्रोजेक्ट के भीतर संचार बैंडविड्थ और आवृत्ति बढ़ जाती है, जिससे टीम के भीतर समग्र सूचना प्रवाह बढ़ जाता है।"[3]


अध्ययन

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

एक मेटा-विश्लेषण में पाया गया कि जोड़े प्रायः अकेले काम करने वाले प्रोग्रामर की तुलना में अधिक डिज़ाइन विकल्पों पर विचार करते हैं, सरल, अधिक रखरखाव योग्य डिज़ाइन पर पहुंचते हैं, और डिज़ाइन दोषों को पहले ही पकड़ लेते हैं। हालाँकि, इसने चिंता जताई कि इसके निष्कर्ष "पेअर प्रोग्रामिंग पर प्रकाशित अध्ययनों के बीच प्रकाशन पूर्वाग्रह के संकेतों" से प्रभावित हो सकते हैं। इससे यह निष्कर्ष निकला कि "पेअर प्रोग्रामिंग समान रूप से लाभकारी या प्रभावी नहीं है"।[7]

हालाँकि पेअर प्रोग्रामर किसी कार्य को एकल प्रोग्रामर की तुलना में तेजी से पूरा कर सकते हैं, लेकिन मानव-घंटे की कुल संख्या बढ़ जाती है।[2] एक प्रबंधक को काम को तेजी से पूरा करने और कोडिंग की उच्च लागत के मुकाबले परीक्षण और डिबगिंग समय को कम करने के बीच संतुलन बनाना होगा। इन कारकों का सापेक्षिक महत्व प्रोजेक्ट और कार्य के अनुसार भिन्न-भिन्न हो सकता है।

युग्मन का लाभ उन कार्यों पर सबसे अधिक होता है जिन्हें प्रोग्रामर शुरू करने से पहले पूरी तरह से नहीं समझते हैं: यानी, विशेषज्ञों की तुलना में नौसिखियों के लिए चुनौतीपूर्ण कार्य जिनमें रचनात्मकता और व्यवहार कुशल की आवश्यकता होती है।[2] पेअर प्रोग्रामिंग जटिल प्रोग्रामिंग कार्यों पर उच्च गुणवत्ता और शुद्धता प्राप्त करने में सहायक हो सकती है, लेकिन इससे विकास प्रयास (लागत) में भी काफी वृद्धि होगी।[7]

सरल कार्यों पर, जिन्हें जोड़ी पहले से ही पूरी तरह से समझती है, जोड़ी बनाने से रचनात्मकता में शुद्ध गिरावट आती है।[2]<संदर्भ नाम = अरिशोलम 2007 65-86 >Arisholm, Erik; Hans Gallis; Tore Dybå; Dag I.K. Sjøberg (February 2007). "सिस्टम जटिलता और प्रोग्रामर विशेषज्ञता के संबंध में जोड़ी प्रोग्रामिंग का मूल्यांकन". IEEE Transactions on Software Engineering. 33 (2): 65–86. doi:10.1109/TSE.2007.17. S2CID 9889035. Archived from the original on 2010-10-29. Retrieved 2008-07-21.</ref> इससे कोड विकास का समय कम हो सकता है लेकिन प्रोग्राम की गुणवत्ता कम होने का जोखिम भी है।[7]जब नौसिखिया-नौसिखिया जोड़ी का उपयोग उन्हें प्रशिक्षित करने के लिए एक संरक्षक की पर्याप्त उपलब्धता के बिना किया जाता है, तो रचनात्मकता भी गिर सकती है।[8] GitHub Copilot जैसे AI सहायता टूल का उपयोग करने वाले प्रोग्रामर के एक अध्ययन में पाया गया कि जबकि कुछ प्रोग्रामर ने AI सहायता को पेअर प्रोग्रामिंग के समान माना है, व्यवहार में ऐसे टूल का उपयोग प्रोग्रामर अनुभव के संदर्भ में बहुत अलग है, जिसमें मानव प्रोग्रामर को ऐसा करना पड़ता है। ड्राइवर और नेविगेटर भूमिकाओं के बीच बार-बार परिवर्तन।[9]


गैर-निष्पादन के संकेतक

ऐसे संकेतक हैं कि कोई पेअर अच्छा प्रदर्शन नहीं कर रही है:[opinion]

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

युग्मन विविधताएँ

विशेषज्ञ-विशेषज्ञ
विशेषज्ञ-विशेषज्ञ पेअर उच्चतम उत्पादकता के लिए स्पष्ट विकल्प प्रतीत हो सकती है और अच्छे परिणाम दे सकती है, लेकिन यह अक्सर समस्याओं को हल करने के नए तरीकों में बहुत कम अंतर्दृष्टि प्रदान करती है, क्योंकि दोनों पक्षों द्वारा स्थापित प्रथाओं पर सवाल उठाने की संभावना नहीं है।[2];विशेषज्ञ-नौसिखिया
विशेषज्ञ-नौसिखिया पेअर विशेषज्ञ के लिए नौसिखिए को सलाह देने के कई अवसर पैदा करती है। यह पेअर नए विचारों को भी पेश कर सकती है, क्योंकि नौसिखिए द्वारा स्थापित प्रथाओं पर सवाल उठाने की अधिक संभावना है। विशेषज्ञ, जिसे अब स्थापित प्रथाओं की व्याख्या करने की आवश्यकता है, उन पर सवाल उठाने की भी अधिक संभावना है। हालाँकि, इस पेअर में, एक डरा हुआ नौसिखिया निष्क्रिय रूप से मास्टर को देख सकता है और सार्थक रूप से भाग लेने में संकोच कर सकता है। साथ ही, कुछ विशेषज्ञों के पास रचनात्मक नौसिखिया भागीदारी की अनुमति देने के लिए आवश्यक धैर्य नहीं हो सकता है।[10]
नौसिखिया–नौसिखिया
नौसिखिया-नौसिखिया पेअर स्वतंत्र रूप से काम करने वाले दो नौसिखियों की तुलना में काफी बेहतर परिणाम दे सकती है, हालांकि इस अभ्यास को प्रायः हतोत्साहित किया जाता है क्योंकि नौसिखियों के लिए उचित रोल मॉडल के बिना अच्छी आदतें विकसित करना कठिन होता है।[3]


दूरस्थ युग्म प्रोग्रामिंग

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

  • संपूर्ण-स्क्रीन साझाकरण सॉफ़्टवेयर[13][14][self-published source?]
  • टर्मिनल मल्टीप्लेक्सर्स
  • विशिष्ट वितरित संपादन उपकरण
  • ऑडियो चैट प्रोग्राम या वीओआईपी सॉफ्टवेयर तब मददगार हो सकते हैं जब स्क्रीन शेयरिंग सॉफ्टवेयर दो-तरफा ऑडियो क्षमता प्रदान नहीं करता है। हेडसेट का उपयोग प्रोग्रामर के हाथों को मुक्त रखता है
  • क्लाउड विकास वातावरण
  • सहयोगात्मक पेअर प्रोग्रामिंग सेवाएँ

यह भी देखें

संदर्भ

  1. Williams, Laurie (February 19–20, 2001). जोड़ी प्रोग्रामिंग को एक सॉफ्टवेयर विकास प्रक्रिया में एकीकृत करना. 14th Conference on Software Engineering Education and Training. Charlotte. pp. 27–36. doi:10.1109/CSEE.2001.913816. ISBN 0-7695-1059-0. One of the programmers, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects, and also thinks strategically about the direction of the work.
  2. 2.0 2.1 2.2 2.3 2.4 Lui, Kim Man (September 2006). "Pair programming productivity: Novice–novice vs. expert–expert" (PDF). International Journal of Human–Computer Studies. 64 (9): 915–925. CiteSeerX 10.1.1.364.2159. doi:10.1016/j.ijhcs.2006.04.010. Archived from the original (PDF) on 2011-07-20. Retrieved 2012-11-18.
  3. 3.0 3.1 3.2 3.3 3.4 Cockburn, Alistair; Williams, Laurie (2000). "जोड़ी प्रोग्रामिंग की लागत और लाभ" (PDF). Proceedings of the First International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2000).
  4. Flor, Nick V.; Hutchins, Edwin L. (1991). "Analyzing Distributed Cognition in Software Teams: A Case Study of Team Programming During Perfective Software Maintenance". In Koenemann-Belliveau, Jürgen; Moher, Thomas G.; Robertson, Scott P. (eds.). Empirical Studies of Programmers: Fourth Workshop. Ablex. pp. 36–64. ISBN 978-0-89391-856-9.
  5. 5.0 5.1 Williams, Laurie; Kessler, Robert R.; Cunningham, Ward; Jeffries, Ron (2000). "जोड़ी प्रोग्रामिंग के मामले को मजबूत करना" (PDF). IEEE Software. 17 (4): 19–25. CiteSeerX 10.1.1.33.5248. doi:10.1109/52.854064.
  6. 6.0 6.1 Williams, Laurie; Upchurch, Richard L. (2001). "छात्र जोड़ी प्रोग्रामिंग के समर्थन में". ACM SIGCSE Bulletin. 33 (1): 327–31. doi:10.1145/366413.364614.
  7. 7.0 7.1 7.2 Hannay, Jo E.; Tore Dybå; Erik Arisholm; Dag I.K. Sjøberg (July 2009). "The Effectiveness of Pair Programming: A Meta-Analysis". Information and Software Technology. 51 (7): 1110–1122. doi:10.1016/j.infsof.2009.02.001.
  8. Stephens, Matt; Doug Rosenberg. "Will Pair Programming Really Improve Your Project?". Retrieved 28 May 2011.
  9. Sarkar, Advait; Gordon, Andrew D.; Negreanu, Carina; Poelitz, Christian; Ragavan, Sruti S.; Zorn, Ben (2022). "What is it like to program with artificial intelligence?". Psychology of Programming Interest Group. Retrieved 27 March 2023.
  10. Williams, L. & Kessler, R. (2003). जोड़ी प्रोग्रामिंग प्रकाशित. Boston: Addison-Wesley Professional. ISBN 9780201745764.
  11. Flor, Nick V. (2006). "विश्व स्तर पर वितरित सॉफ्टवेयर विकास और जोड़ी प्रोग्रामिंग". Communications of the ACM. 49 (10): 57–8. doi:10.1145/1164394.1164421. S2CID 8963421.
  12. Schümmer, Till; Stephan Lukosch (September 2009). "Understanding Tools and Practices for Distributed Pair Programming" (PDF). Journal of Universal Computer Science. 15 (16): 3101–3125. Retrieved 2010-04-30.
  13. Agile Ajax: Pair Programming with VNC Archived 2008-04-02 at the Wayback Machine[self-published source]
  14. Pair Programming – The Ultimate Setup and the other options we tried. – Jonathan Cogley's Blog


बाहरी संबंध