2008-08-23 23 views
15
  • क्या आप कोड पीयर समीक्षाओं या अभ्यास जोड़ी प्रोग्रामिंग में भाग लेते हैं, या दोनों?
  • क्या आप इन प्रथाओं का उपयोग करके सॉफ्टवेयर गुणवत्ता में वृद्धि प्रदर्शित करने में सक्षम हैं?
  • अभ्यास के दौरान आपने क्या लाभ और कमी देखी है?
  • कार्यान्वयन के लिए आपको बाधाओं का सामना करना पड़ा था?

मेरे अपने मामले में, हमारी विकास टीम ने कई अलग-अलग सॉफ्टवेयर कलाकृतियों (आवश्यकताओं का विश्लेषण, परीक्षण योजना, कोड, आदि) की सहकर्मी समीक्षाओं का पीछा किया। पीयर प्रोग्रामिंग को एक विकल्प के रूप में भी नहीं माना जाता था।पीयर समीक्षा या जोड़ी प्रोग्रामिंग, या दोनों?

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

अब जब जीवन की अंगूठी में बग इंजेक्शन हो रही है तो इसमें कम दृश्यता नहीं है। और सहकर्मी समीक्षाओं को करने से टीम पर विशेषज्ञता बढ़ गई है ... जहां कोई भी वास्तव में सिस्टम के अपने विशेष क्षेत्र के बाहर घटकों की आवश्यकताओं/तर्क को नहीं जानता है।

अपने अनुभवों को जानने के लिए मूल्यवान होगा/पीयर समीक्षा या जोड़ी प्रोग्रामिंग, विशेष रूप से सफलता की कहानियां।

उत्तर

19

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

मुझे पीयर समीक्षा पसंद है जब हम दरवाजे पर अहंकार की जांच करते हैं। (इसमें मेरा शामिल है!) इस दुनिया में एक सीमित समय है, और केवल इतना ही है कि आप सीख सकते हैं और कर सकते हैं। एक अच्छी सहकर्मी समीक्षा के माध्यम से आप ज्ञान का विस्तार कर सकते हैं और कम समय सीमा में और अधिक कर सकते हैं। जब चीजें गुदा सिंटैक्स जांच में घट जाती हैं तो समस्याएं उत्पन्न होती हैं।

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

3

पीयर समीक्षा MANDATORY होना चाहिए।

आप विभिन्न आकारों और पुस्तकों को पढ़ और ढूंढ सकते हैं जो विभिन्न आकार की टीमों के भीतर पहुंचने के विभिन्न तरीकों पर चर्चा करते हैं, लेकिन आप अनुभवों के बारे में पूछताछ करते हैं।

व्यक्तिगत रूप से, मुझे लगता है कि सहकर्मी समीक्षा मजेदार होनी चाहिए। भोजन प्रदान किया गया और वायुमंडल को जीवंत बनाए रखा। इसे वास्तव में ऐसे समय के रूप में माना जाना चाहिए जहां डेवलपर्स/प्रोग्रामर एक-दूसरे से सीखने का मौका नहीं ले सकते हैं (और हम सभी जानते हैं कि प्रत्येक प्रोग्रामर एक सहज न्यायिक जीन के साथ कैसे पैदा होता है)। मैंने खुले के रूप में 1/3 या 1/4 वें होने के लिए समीक्षा व्यवस्थित करने की सराहना या सहायता करने के लिए प्रतिबद्ध किया है। इसका मतलब है कि जब समूह एक साथ आता है और एक व्यक्ति एक परियोजना प्रस्तुत करता है तो वे काम कर रहे हैं या यहां तक ​​कि समीक्षा भी कर रहे हैं जो वर्तमान परियोजना से भी संबंधित नहीं है (मुझे पता है कि यह समय सीमा के साथ मुश्किल है लेकिन इसके लिए प्रयास करें)।

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

अंततः, वास्तव में "समीक्षा" भाग आता है लेकिन यह एक अनिवार्य तथ्य है। आपके बेहतर डेवलपर खराब कोड देखेंगे और पर्याप्त समीक्षा के बाद यह खराब कोडर के लिए कदम उठाने या इसके बारे में भूलने का समय है।

यदि आप चीजों को सकारात्मक रखते हैं और इसे आमतौर पर एक महान अनुभव व्यवस्थित करते हैं।

लगभग जोड़ी प्रोग्रामिंग पर स्पर्श करना भूल गया। सेट अप करने के लिए यह मुश्किल है।जाहिर है आप अपने दो कमजोर प्रोग्रामर एक साथ काम नहीं कर सकते हैं या आप दस लाख टाइपराइटर के साथ दस लाख बंदरों की व्यवस्था भी कर सकते हैं। एक मजबूत व्यक्ति को कमजोर लोगों के साथ रखने और निजी तौर पर दोनों को प्रोत्साहन देने की कोशिश करें। जो कमजोर है उसे पता होना चाहिए कि सुधार को पुरस्कृत किया जा सकता है (यदि उन्हें इस तरह के प्रोत्साहन की आवश्यकता है) और मजबूत प्रोग्रामर को पता होना चाहिए कि असली नेता अच्छे सलाहकार के रूप में शुरू होते हैं। सुनिश्चित करें कि कमजोर देव टाइप कर रहा है। विपरीत नहीं है या यह प्रेजेंटेशन बन जाता है और "yawn" किसी को अनुभव से कुछ भी हासिल नहीं हो सकता है।

2

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

लेकिन तब से मैं ऑफ़लाइन कोड समीक्षाओं में बहुत से शामिल हूं।

परियोजना के आधार पर उन्हें "लाइव" शाखा में चेक करने से पहले या कुछ यादृच्छिक बिंदु पर चेक करने से पहले अनिवार्य किया गया है। 4 परियोजनाओं में से 3 में से उन्हें स्वीकार किया गया है, स्वीकार्य रूप से एक आवश्यक बुराई के रूप में, लेकिन बाद में एक मूल्यवान इनपुट के रूप में।

किसी भी कामकाजी समीक्षा का लाभ सभी को बेहतर कोड लिखना चाहिए और यहां तक ​​कि सर्वश्रेष्ठ कोडर सलाह दे सकते हैं (ईमानदार हो, अपने गर्म शॉट प्रोग्रामर वास्तव में पठनीय कोड लिखते हैं?) एक बार जब आप कम अनुभवी कर्मचारियों को यह कहने के लिए राजी कर सकते हैं कि वे कुछ समझ में नहीं आता - तुम दूर हो। कुछ गर्म शॉट & पफ हफ करेंगे लेकिन वास्तविक सर्वश्रेष्ठ लोग जो लिखा है उसके बारे में सोचेंगे और वास्तव में वेरिएबल नाम या लेआउट बदल देंगे - और शायद एक टिप्पणी भी जोड़ें।

चौथी परियोजना 'एक यादृच्छिक समय पर' एक प्रस्तावित योजना का उपयोग करती है और तकनीकी लीड अभी तक इसमें नहीं लाई गई है (टूटी हुई टीम?)


आपके द्वारा वर्णित दो अभ्यास औपचारिक दृष्टिकोण हैं। वे सभी व्यक्तित्वों और समूहों के लिए अच्छी तरह से काम नहीं करते हैं।

ऐसा कुछ करने का प्रयास करें जो आपको लगता है कि आपकी टीम वास्तव में कर सकती है और फिर देखें कि इसे बेहतर किया जा सकता है या नहीं।

बार जब आप अपने कोड पर आंखों की कि अतिरिक्त सेट पड़ा है मदद करने के लिए लोगों को जोड़ी के "कलंक" खत्म होने वापस देखने के लिए

4

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

10

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

कुछ बातों के लिए बाहर देखने के लिए:

  • यकीन है कि वरिष्ठ नागरिकों के जूनियर कार्यक्रम भी जाने बनाओ जब
  • आप युग्मन लोग छोटे कार्यों पर जोड़ी मत, आमतौर पर समय बरबाद करती
  • घड़ी कैसे जोड़े साथ पाने के (एक जोड़ी एक साथ मजबूर नहीं है)
  • याद जोड़े फेरबदल करने के लिए हर अब और फिर
  • समीक्षा एक अहंकार मैच मधुमक्खी मत - लोग दूसरों
  • कुचलने न दें
2

• हां, हमारी कंपनी सहकर्मी कोड समीक्षाओं का उपयोग करती है। हम उन्हें ओवर-द-कंधे की समीक्षा के रूप में संचालित करते हैं और परिवर्तनों की बेहतर समझ प्राप्त करने के लिए बैठक में भाग लेने के लिए टीम के परीक्षक को आमंत्रित करते हैं।

• कोड समीक्षा के लिए निश्चित लाभ हैं क्योंकि कई अध्ययन प्रदर्शित करने में सक्षम हैं। हमारी कंपनी के लिए, यह स्पष्ट था कि कोड की गुणवत्ता में वृद्धि हुई क्योंकि समर्थन कॉल की संख्या में कमी आई और रिपोर्ट की गई बग की संख्या भी कम हो गई। नोट: यहां कुछ लाभ स्क्रम को लागू करने और वाटरफॉल को त्यागने का परिणाम थे। नीचे स्क्रम पर अधिक।

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

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

स्क्रम स्क्रम पद्धति का उपयोग करने के लाभों में से एक यह है कि एक विकास चक्र ("स्प्रिंट") छोटा है। "स्प्रिंट" का समय-सीमा निर्धारित करता है कि आपके संगठन के लिए सबसे अच्छा क्या काम करता है और उसे कुछ परीक्षण और त्रुटि की आवश्यकता होगी, लेकिन वास्तव में चार सप्ताह के पुनरावृत्तियों से अधिक नहीं होना चाहिए। लाभ यह है कि डेवलपर्स को रोज़ाना संवाद करने और परियोजना में शुरुआती समस्याओं को संवाद करने की आवश्यकता होती है। इसे शुरू में हमारे विकास विभाग द्वारा अपनाया गया था और हमारी कंपनी के सभी क्षेत्रों में फैल गया है क्योंकि स्क्रम के लाभ बहुत दूर हैं। अधिक जानकारी के लिए, देखें: http://en.wikipedia.org/wiki/SCRUM या http://www.scrumalliance.org/। चूंकि विकास पुनरावृत्तियों छोटे होते हैं, कोड समीक्षा प्रक्रिया कोड के छोटे टुकड़ों की समीक्षा करती है, जिससे समीक्षा औपचारिक समीक्षा के घंटों या दिनों की तुलना में समस्याओं को खोजने की अधिक संभावना होती है।

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

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

0

जोड़ी प्रोग्रामिंग से जीथ्यूब पर पीआर समीक्षाओं में स्थानांतरित होने के बाद एक तुलनात्मक विश्लेषण।

फोकस पीआर समीक्षा प्रक्रिया में हमारी टीमों का पालन करने के चरण-दर-चरण में सूचीबद्ध है।

"कोड समीक्षा बनाम जोड़ी प्रोग्रामिंग" https://blog.mavenhive.in/pair-programming-vs-code-reviews-79f0f1bf926

संबंधित मुद्दे