कोड समीक्षा और इकाई परीक्षण अभ्यास को आगे बढ़ाना


15

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

आप एक ऐसा तरीका कैसे बनाने जा रहे हैं ताकि कोड की समीक्षा और इकाई परीक्षण स्वाभाविक रूप से डेवलपर के प्रवाह में फिट हो सके?

इन दो क्षेत्रों में से एक प्रतिरोध यह है कि "हम हमेशा डेटलाइन पर चुस्त रहते हैं, इसलिए कोड समीक्षा और इकाई परीक्षण के लिए समय नहीं है"।

कोड समीक्षा के लिए एक और प्रतिरोध यह है कि वर्तमान में हम यह नहीं जानते कि यह कैसे करना है। क्या हमें प्रत्येक चेक-इन पर कोड की समीक्षा करनी चाहिए या किसी निर्दिष्ट तिथि पर कोड की समीक्षा करनी चाहिए?


निश्चित रूप से एक दिलचस्प सवाल है - यहाँ अन्य अनौपचारिक प्रश्न हैं, लेकिन उन्होंने प्रोग्रामर की तरफ से सभी से पूछा है, न कि लीड / पीएम।
माइकल के

जवाबों:


17

क्या आपकी टीम के सदस्य वास्तव में इस बात से सहमत हैं कि कोड समीक्षा और इकाई परीक्षण गुड थिंग्स हैं, बस इन के लिए कोई समय नहीं है?

या वे सिर्फ इसी बहाने से विचार को खारिज करने की कोशिश करते हैं?

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

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

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


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

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

'अभी शुरू करो' कहने के लिए +1। IME शिथिलता को मात देने का एकमात्र तरीका है।
माइकल के

5

क्लासिक समस्या। इसे सही करने के लिए कभी भी पर्याप्त समय नहीं, हमेशा काम को फिर से करने के लिए पर्याप्त समय। जब तक लोग सर्वोत्तम अभ्यास करना शुरू नहीं करेंगे, तब तक सर्वोत्तम अभ्यास करने के लिए पर्याप्त समय नहीं लगेगा। विशेष रूप से जीत विकास के बाहर के लोगों के लिए अदृश्य हैं।

कोड समीक्षा की कुंजी यह है कि आप यथासंभव कम से कम कोड की समीक्षा करना चाहते हैं। इस तरह इसकी समीक्षा के लिए समय निकालना आसान है, लोगों के दिमाग में यह कोड ताज़ा है, और सुझाए गए सुधारों को लागू करना आसान हो जाएगा। चरम में आप हर एक चेक-इन की समीक्षा करना चाहते हैं। इसे स्वचालित करने के लिए एक अच्छा उपकरण http://code.google.com/appengine/articles/rietveld.html है । यह टूल का एक प्रकार है जिसे Google आंतरिक रूप से प्रत्येक चेक-इन के साथ होने वाली कोड समीक्षा के लिए मजबूर करता है।

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

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


वास्तविक शोध परिणामों के लिए +1। क्या आपके पास IBM पृष्ठों का लिंक है?
l0b0

मेरे पास उनके लिए लिंक नहीं है, लेकिन कोड पूरा करता है।
btilly 14

3

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

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

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


मेरी चिंता यह है कि यदि आपने परीक्षण और समीक्षा के बिना 6 महीने का विकास किया है, तब तक आपको उन प्रथाओं को लागू करने की आवश्यकता होती है, तो वे कहते हैं कि उनके पास समय नहीं होगा क्योंकि उन्हें बग को ठीक करने की आवश्यकता है।
ग्रेविटन

बहुत कठोर जवाब!
मार्की

क्षमा करें, मैं शायद छह महीनों में स्पष्ट नहीं था। मेरा मतलब था कि छह परीक्षण और समीक्षा करने के बाद, मैट्रिक्स काफ़ी बेहतर हो जाता है। मुद्दा यह है कि किसी को लाभ प्राप्त करने के लिए बस परीक्षण शुरू करना होगा - परीक्षण द्वारा किए गए लाभ तुरंत नहीं देखे जाते हैं।
स्मिथ्को

1

विकासशील लोगों की इच्छा के विरूद्ध टीडीडी प्रस्तुत करना अलग है। टीडी को प्यार करना सीखना एक कठिन तरीका है।

चूंकि tdd एक हरे रंग के क्षेत्र में सबसे अधिक प्रभावशाली है (या कठिन, महंगा, अकुशल अगर परीक्षण बाद में खराब हो जाते हैं) तो मैं एक छोटी टीम के साथ शुरू करूँगा जो कुछ नया लागू करती है। यदि आप टीम में दो develloppers पाते हैं जो कि दूसरों के मुकाबले tdd का कम विरोध करते हैं जो कि एक अच्छा शुरुआती बिंदु है। ध्यान रखें कि tdd-developpers की उत्पादकता को नुकसान होगा जबकि वे tdd के साथ अनुभवहीन हैं।

यह tdd विकास एक कोडरव्यू के लिए एक अच्छा प्रारंभिक बिंदु है। चर्चा करें कि tdd ने प्रोग्राम आर्किटेक्चर को कैसे प्रभावित किया और यह सॉफ़्टवेयरमेन्टानेंस को कैसे आसान बनाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.