कोड समीक्षा क्या वे वास्तव में सच में चुस्त काम करते हैं?


13

इसलिए मैंने एक बड़ी कॉर्प के लिए काम करना शुरू किया। जिनके नाम में 3 अक्षर हैं, और वे एजाइल बनने की कोशिश कर रही हैं, लेकिन उनके पास बहुत सारी प्रक्रियाएँ हैं, जो मुझे नहीं लगता कि एजाइल हैं।

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

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

यहाँ मेरी विकास प्रक्रिया है और मेरे आखिरी स्टार्टअप पर ... बहुत फुर्तीली है।

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

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

तो इस प्रकार की विकास प्रक्रिया के साथ, अत्यधिक फुर्तीली, कोड समीक्षा समय की बर्बादी नहीं होगी? मतलब अगर मेरे पास कोई दूसरा डेवलपर था या दो मेरे कोड की समीक्षा करते हैं, लेकिन तब वह कोड 3 बार बदल जाता है इससे पहले कि वह दरवाजे से बाहर निकल जाए, क्योंकि सभी यूआई / यूएक्स सुधारों के कारण, क्या हम पहले 3 बार अपना समय बर्बाद नहीं कर रहे हैं, उन्होंने इसकी समीक्षा की। उस कोड के रूप में कोड / घटक / यूआई स्क्रैप किया गया था?

इस प्रक्रिया के साथ हमारे पास कई गुणवत्ता के मुद्दे कभी नहीं थे और हां अगर एक डेवलपर ने सभी ज्ञान छोड़ दिया, तो वह दरवाजे से बाहर चला गया, लेकिन हमने हमेशा स्मार्ट डेवलपर्स को इसे लेने और अधिग्रहण करने के लिए पाया।

और हाँ, हमारे पास बहुत सारे परीक्षक हैं क्योंकि उन्हें 3 या 4 बार चीजें फिर से बनानी पड़ सकती हैं। कृपया यह भी पूछने पर मत चूके कि सभी UI / UX में बदलाव क्यों होता है ... कि कैसे चीजें पूरी की जाती हैं ... तो यही कारण है कि ऐप UI / UX के लिए बहुत सारे पुरस्कार जीतता है और उपयोगकर्ता इसके लिए मार करेंगे एप्लिकेशन। विचार प्रक्रिया यह है कि अगर मैं किसी चीज़ में 2% सुधार कर सकता हूं क्योंकि मेरे पास एक अतिरिक्त घंटा है तो इसे करें। उपयोगकर्ता अधिक खुश होंगे, जिसका अर्थ है अधिक $ या उपयोगकर्ता। और हां, हमारे उपयोगकर्ता लगातार बदलते ऐप के साथ ठीक हैं, क्योंकि दिन के बाद से ही यह किया जाता है ताकि वे इसे खराब या नकारात्मक न देखें।

आशा है कि यह पोस्ट धूमधाम से नहीं आया है, लेकिन मैं अभी यह नहीं देख सकता कि कोड समीक्षा कैसे बेकार नहीं हैं। हो सकता है कि समीक्षा किए गए कोड में हमारे सभी कोड का 2% बग हो। प्रत्येक रिलीज में हमें कोड समीक्षा के माध्यम से 3 बग मिल सकते हैं। तो यह 3 से 5 बग ढूंढने के लिए प्रति डेवलपर प्रति रिलीज़ (40 x 40 = 160 घंटे) कोड समीक्षा के 40 घंटे तक समाप्त होता है? संभावना 50% उन 3 से 5 कीड़े वैसे भी क्यूए द्वारा उठाए गए होंगे। क्या यह बेहतर नहीं होगा कि प्रति 40 घंटे प्रति डेवलपर एक नई सुविधा जोड़कर या मौजूदा लोगों को सुधार कर?


@DeadMG: यूजर एक्सपीरियंस
स्टीवन ए। लोवे

4
@ user25702: आप जिस प्रक्रिया का वर्णन करते हैं वह फुर्तीली नहीं लगती, यह आरयूपी / सर्पिल की तरह लगती है। विशेष रूप से "हमारे विकास के हफ्तों के दौरान कई बार हम हितधारकों के साथ फिर से सत्र पकड़ते हैं, यह देखने के लिए कि क्या वे अभी भी सुविधाओं / कार्यों / यूएक्स / यूआई से सहमत हैं, अभी भी एक फिट और लक्ष्य पर हैं।" चंचल विरोधी है; आरयूपी / सर्पिल दृष्टिकोण से जुड़ी चलती-लक्ष्य समस्याओं से बचने के लिए पुनरावृत्ति के दौरान सुविधाओं को जमे हुए हैं। आपके नाममात्र के प्रश्न के रूप में, मुझे यहां कोड समीक्षाओं में बहुत अधिक मूल्य नहीं दिखाई देते हैं यदि और केवल यदि आप निश्चित हैं कि कीड़े क्यूए द्वारा पाए गए हैं।
स्टीवन ए लोवे

1
8 सप्ताह की पुनरावृत्तियां चुस्त नहीं हैं और निश्चित रूप से "चरम चुस्त" नहीं हैं।
मार्टिन विकमैन

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

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

जवाबों:


13

कुछ चीजें हैं जो कोड समीक्षाएं आपके लिए कर सकती हैं, और कुछ चीजें जो वे नहीं कर सकती हैं। कोड समीक्षा के पक्ष में तर्क :

  • सामूहिक स्वामित्व
  • कीड़े (QC) खोजें
  • संगत शैली लागू करें (QA)
  • सलाह

कई फुर्तीली प्रक्रियाएं उन विभिन्न तरीकों से निपटती हैं:

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

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


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

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

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

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

11

क्या कोड समीक्षा केवल कीड़े खोजने के लिए है? आपको लगता है कि यह सच है और मुझे नहीं लगता।

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


4

जोड़ी प्रोग्रामिंग कोड समीक्षाओं के लिए एक्सपी उत्तर है। अनिवार्य रूप से, कोड की प्रत्येक पंक्ति की समीक्षा की जाती है जैसा कि लिखा गया है। यह चरम पर ले जाया कोड समीक्षा है।


7
मैं इसके साथ दृढ़ता से बहस करूंगा। ज़रूर, इसकी समीक्षा दो लोगों द्वारा की जा रही है, लेकिन वे लोग आम तौर पर उसी पृष्ठ पर हैं जिस पर कोड लिखा जा रहा है। एक कोड की समीक्षा आपके कोड को देखने और "doh! उस मामले को संभालने के बारे में भूल गया" के मुद्दों के प्रकार के बारे में कोई और है - XP वास्तव में उस के साथ मदद नहीं करता है।
बिली ओनली

4

कोड समीक्षाएं और परीक्षण अक्सर एक ही प्रकार के बग को पकड़ नहीं पाते हैं, और कोड की समीक्षा के द्वारा पकड़े गए बग को ठीक करने में आसानी होती है, क्योंकि बग का स्थान ज्ञात होता है।

आप यह नहीं जान सकते कि क्या कोड बग मुक्त है क्योंकि यह बिना किसी रिकॉर्ड के साथ परीक्षण पास करता है। "परीक्षण केवल बग की उपस्थिति को साबित कर सकता है, अनुपस्थिति को नहीं।" (डिज्कस्ट्रा?)

कोड की समीक्षा भी कोड शैली को समान रखती है, और उन स्थानों को खोजने में सक्षम है जहां कोड अच्छा नहीं है, लेकिन अभी के लिए काम करना होता है। यह सड़क के नीचे रखरखाव की लागत बचाता है।

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


2

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

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

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


1

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

यहां तक ​​कि यूपी / सर्पिल के तहत मैं एक विशिष्ट प्रक्रिया के एक बड़े प्रशंसक के रूप में "कोड की समीक्षा" नहीं कर रहा था, क्योंकि मुझे लगता है कि जिस प्रकार के मुद्दों की संभावना है, वे बाद में मिल सकते हैं यदि वे उसी ऊर्जा के बजाय कुछ अपफ्रंट में निवेश किए गए हों। सहयोग और कुछ सरल स्वचालन।

मैंने महसूस किया कि क्योंकि वहाँ था: - डिजाइन की कुछ साझा समीक्षा (आमतौर पर यूएमएल में कम से कम एक व्हाइटबोर्ड पर व्यक्त की जाती है) का मतलब बड़े पैमाने पर डिजाइन के मुद्दे या एपीआई के खराब उपयोग आदि से बहुत सारे कोड लिखे जाने से पहले पकड़े जाते हैं। - FxCop, CheckStyle, FindBugs (या समान) स्वचालित निरंतर एकीकरण के साथ चलने वाले नामकरण, शैलीगत, दृश्यता, कोड दोहराव, आदि को पकड़ने के लिए बनाता है।

हम पहले असफल होने में सक्षम थे और एक बहाव कोड की तुलना में फीडबैक जल्दी प्राप्त कर सकते थे, जो कि आदतों का उत्पादन होता था।

मैं यह नहीं कह रहा हूं कि यह समय की बर्बादी है और एक बार अपने कोडबेस पर एक बार जरूर गौर करें, लेकिन कोड की समीक्षा करना किसी बुलाए गए कदम के लिए कुछ किया जाना चाहिए जैसा लगता है कि यह प्रगति में बहुत काम करता है जो हो सकता था बेहतर निरीक्षण / सहयोग के साथ अपस्ट्रीम से परहेज किया।


0

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

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

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

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

चीजें पूर्ण राज्य में परीक्षकों के पास होनी चाहिए। जितना संभव हो उतना परीक्षण स्वचालित होना चाहिए, ताकि परीक्षक समय के बाद उसी सामान को वापस नहीं ले रहे हैं।

यूआई / यूएक्स को कुछ परीक्षण समय की आवश्यकता होती है, लेकिन सामने के छोर पर डिजाइन / विकास विशेषज्ञों को कम करना चाहिए। इसके लिए स्क्रीन के सामने एक चेहरा भी होना चाहिए। हालाँकि, मैंने जितने भी एप्लिकेशन में काम किया है, वह कोड का अपेक्षाकृत छोटा हिस्सा था।

परिवर्तनों को लागू करने की लागत (बग फिक्स सहित) आम तौर पर हर चरण के लिए ऊपर जाती है जो इसके माध्यम से जाती है। विकास में बग ढूंढना आम तौर पर उन्हें खोजने के बाद उन्हें ठीक करने की तुलना में सस्ता है।

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