प्रश्न और लागू संदर्भ
आपके पास एक अपरिचित पुल रिक्वेस्ट (pull request) की समीक्षा करने के लिए 30 मिनट हैं। बताएं कि आप इसके उद्देश्य का पुनर्निर्माण कैसे करते हैं, समीक्षा को किस क्रम में व्यवस्थित करते हैं, ब्लॉकिंग फीडबैक को नॉन-ब्लॉकिंग फीडबैक से कैसे अलग करते हैं, ऐसी टिप्पणियाँ कैसे लिखते हैं जिन पर लेखक कार्रवाई कर सके, और approve, comment तथा request changes में से कैसे चुनाव करते हैं।
यह बैकएंड, फ्रंटएंड, मोबाइल, इन्फ्रास्ट्रक्चर और इंजीनियरिंग-प्रबंधन भूमिकाओं के लिए एक सामान्य सॉफ्टवेयर-इंजीनियरिंग इंटरव्यू प्रश्न है। इसे मौखिक प्रक्रिया प्रश्न के रूप में या दिए गए डिफ (diff) की लाइव समीक्षा के रूप में पूछा जा सकता है। दोनों प्रारूप यह परखते हैं कि क्या आप समय सीमा के भीतर उपयोगकर्ताओं और सिस्टम के लिए सबसे महत्वपूर्ण समस्याओं को खोज सकते हैं, बजाय इसके कि आप केवल फ़ॉर्मेटिंग संबंधी त्रुटियों की संख्या बढ़ाने पर ध्यान दें।
मान लें कि आप पुल-रिक्वेस्ट का विवरण, जुड़ा हुआ रिक्वायरमेंट, बदली गई फाइलें और टेस्ट परिणाम देख सकते हैं, लेकिन आप कोडबेस को नहीं जानते हैं और लेखक से लगातार सवाल नहीं पूछ सकते हैं। यदि इंटरव्यूअर अलग शर्तें देता है, तो समीक्षा करने से पहले जोखिम और दायरे को पुनर्गठित करें।
इंटरव्यूअर क्या मूल्यांकन करता है
पहला संकेत यह है कि क्या आप यह पुनर्निर्मित करते हैं कि परिवर्तन से क्या अपेक्षित है। किसी रिक्वायरमेंट, API अनुबंध (contract), या विफलता सीमा (failure boundary) के बिना, टिप्पणियाँ केवल व्यक्तिगत पसंद बनकर रह जाती हैं। एक मजबूत उत्तर पुल-रिक्वेस्ट के संदर्भ और आस-पास के कोड को पढ़ता है, व्यवहार में बदलाव की पहचान करता है, और उसके बाद ही पंक्ति-दर-पंक्ति आगे बढ़ता है।
दूसरा संकेत प्राथमिकता तय करना है। शुद्धता (correctness), डेटा करप्शन, सुरक्षा, ऑथराइजेशन, कॉनकरेंसी (concurrency), और कम्पैटिबिलिटी आमतौर पर नामकरण (naming) या लेआउट से पहले ध्यान देने योग्य हैं। इंटरव्यूअर यह देखना चाहता है कि क्या आप इसके परिणाम बता सकते हैं और उच्चतम जोखिम वाले पथ पर समय व्यतीत कर सकते हैं।
तीसरा संकेत साक्ष्य है। "यह एक बग हो सकता है" केवल एक सुराग है। उच्च-गुणवत्ता वाला फीडबैक ट्रिगर करने वाली स्थिति, देखने योग्य परिणाम और इसे सत्यापित करने का एक तरीका प्रदान करता है। जब संदर्भ अनुपलब्ध हो, तो यह किसी अनुमान को ब्लॉकिंग निष्कर्ष के रूप में प्रस्तुत करने के बजाय एक सटीक प्रश्न पूछता है।
अंत में, इंटरव्यूअर समीक्षा निर्णय और संचार का मूल्यांकन करता है। आवश्यक सुधारों, वैकल्पिक सुझावों, स्पष्टीकरण प्रश्नों और छोटी-मोटी टिप्पणियों (nits) को अलग करें। सारांश में बताएं कि आपने क्या कवर किया, क्या असत्यापित रह गया, और आपने परिवर्तन स्वीकृत क्यों किए या बदलावों का अनुरोध क्यों किया। लेखक की क्षमता के बजाय कोड और उसके प्रभाव पर चर्चा करें।
उत्तर देने से पहले स्पष्ट करने योग्य प्रश्न
- क्या यह मौखिक प्रक्रिया संबंधी प्रश्न है या लाइव डिफ समीक्षा? पहले वाले के लिए, एक पुन: प्रयोज्य (reusable) पद्धति प्रस्तुत करें। दूसरे के लिए, पद्धति बताने में कुछ सेकंड लगाएं और फिर चेकलिस्ट दोहराने के बजाय इसे वास्तविक कोड पंक्तियों पर लागू करें।
- क्या संदर्भ उपलब्ध है? एक रिक्वायरमेंट, API अनुबंध और आस-पास का कोड आपको व्यवहार सत्यापित करने में मदद करता है। किसी पृथक फ़ंक्शन के साथ, धारणाएं बताएं और अज्ञात अनुबंधों को प्रश्नों में बदलें।
- क्या यह परिवर्तन किसी उच्च जोखिम वाले डोमेन को प्रभावित करता है? भुगतान (payments), ऑथराइजेशन, गोपनीयता, माइग्रेशन और सार्वजनिक API साक्ष्य के स्तर को बढ़ाते हैं और इसके लिए डोमेन विशेषज्ञों की आवश्यकता हो सकती है। कम जोखिम वाला आंतरिक टूल तेज़ वृद्धिशील सुधार का समर्थन कर सकता है।
- इंटरव्यूअर किन डिलिवरेबल्स की अपेक्षा करता है? इनलाइन टिप्पणियों, सारांश, अनुमोदन निर्णय और परीक्षण अनुशंसाओं के लिए अलग-अलग समय आवंटन की आवश्यकता होती है। 30 मिनट खर्च करने से पहले आउटपुट की पुष्टि करें।
- क्या यह सामान्य कार्य है या कोई आपातकालीन फिक्स? एक आपात स्थिति संकीर्ण पैच और बाद के अनुवर्ती कार्य को उचित ठहरा सकती है। यह किसी ज्ञात सुरक्षा या डेटा-करप्शन जोखिम को अनदेखा करने को उचित नहीं ठहराती है।
- क्या आप प्रत्येक प्रभावित डोमेन के लिए योग्य हैं? यदि परिवर्तन में क्रिप्टोग्राफी, गोपनीयता, या आपकी विशेषज्ञता से बाहर का डेटाबेस माइग्रेशन शामिल है, तो जो आप कर सकते हैं उसकी समीक्षा करें और केवल आत्मविश्वास के आधार पर स्वीकृत करने के बजाय एक योग्य समीक्षक का अनुरोध करें।
30-सेकंड उत्तर का ढाँचा
"मैं सबसे पहले पुल रिक्वेस्ट का लक्ष्य, व्यवहार परिवर्तन और विफलता प्रभाव स्थापित करता हूँ, फिर दो चरणों (passes) में समीक्षा करता हूँ। पहला पास शुद्धता, सुरक्षा, डेटा, कॉनकरेंसी और कम्पैटिबिलिटी को प्राथमिकता देते हुए परिवर्तन सीमा, डेटा प्रवाह और उच्च-जोखिम वाले पथों का नक्शा बनाता है। दूसरा पास एज केस, एरर हैंडलिंग, टेस्ट, ऑब्जर्वेबिलिटी, परफॉरमेंस और मेंटेनबिलिटी की जाँच करता है। प्रत्येक टिप्पणी गंभीरता, ट्रिगर, परिणाम और अपेक्षित परिणाम बताती है। एक पुनरुत्पादनीय (reproducible) ब्लॉकर का अर्थ है request changes; सुझाव और nits अनुमोदन (approve) के साथ दिए जा सकते हैं। मैं समीक्षा किए गए दायरे, असत्यापित जोखिमों और अपने निर्णय के कारण के साथ समाप्त करता हूँ।"
चरण-दर-चरण गहन उत्तर
सबसे पहले आधार रेखा (baseline) स्थापित करें। शीर्षक, विवरण, जुड़े हुए रिक्वायरमेंट, API या डेटा-मॉडल परिवर्तन और मौजूदा टेस्ट पढ़ें। अनुबंध को एक वाक्य में दोबारा कहें: "यह परिवर्तन इन मौजूदा गारंटियों को बनाए रखते हुए इन परिस्थितियों में इस उपयोगकर्ता को एक नया व्यवहार देता है।" यदि आप वह वाक्य नहीं लिख सकते हैं, तो पंक्ति-स्तरीय टिप्पणियों से पहले संदर्भ प्राप्त करें क्योंकि आपके पास अभी तक शुद्धता का कोई मानक नहीं है।
इसके बाद परिवर्तन सीमा (change boundary) का नक्शा बनाएं। केवल हाइलाइट की गई पंक्तियों के बजाय इनपुट, स्थिति परिवर्तन (state changes), बाहरी दुष्प्रभावों (side effects) और रिटर्न पथों का अनुसरण करें। किन कॉलर्स को नया पैरामीटर मिलता है? क्या डेटाबेस राइट और संदेश भेजना एक ही विफलता सीमा के भीतर हैं? क्या कोई सार्वजनिक प्रतिक्रिया, इवेंट प्रारूप, या कॉन्फ़िगरेशन डिफ़ॉल्ट बदला है? इस पास का आउटपुट यह मॉडल तैयार करता है कि इनपुट कहाँ प्रवेश करता है, यह किन ट्रस्ट सीमाओं को पार करता है, क्या स्थिति बदलती है, और यह कैसे विफल हो सकता है।
30 मिनट के एक नमूना समय-बॉक्स के लिए, उद्देश्य के लिए 3 मिनट, सीमाओं और उच्च-जोखिम पथों के लिए 7 मिनट, विस्तृत निरीक्षण के लिए 12 मिनट, टेस्ट और परिचालन सुरक्षा उपायों के लिए 5 मिनट, और टिप्पणियों तथा निर्णय के लिए 3 मिनट का उपयोग करें। यह डिफ के आकार और जोखिम के अनुसार समायोजित करने के लिए एक व्यावहारिक आवंटन है। इसका उद्देश्य पहले 20 मिनट नामकरण पर बर्बाद करने से रोकना है।
पहले पास में इस जोखिम क्रम का उपयोग करें:
- व्यवहार और शुद्धता: क्या मुख्य पथ अनुबंध को संतुष्ट करता है? खाली इनपुट, डुप्लिकेट अनुरोध, आंशिक विफलता और पुन: प्रयासों (retries) के साथ क्या होता है?
- सुरक्षा और डेटा: क्या ट्रस्ट सीमा पार करने से पहले ऑथराइजेशन होता है? क्या संवेदनशील डेटा उजागर हुआ है? क्या विफलता से नुकसान, दोहराव या अपरिवर्तनीय स्थिति उत्पन्न हो सकती है?
- कॉनकरेंसी और कम्पैटिबिलिटी: क्या एक साथ आने वाले अनुरोध किसी इनवेरिएंट (invariant) को तोड़ सकते हैं? क्या पुराने क्लाइंट, पुराना डेटा और रोलिंग परिनियोजन (rolling deployment) के दौरान मिश्रित संस्करण अभी भी काम करते हैं?
- आर्किटेक्चर सीमा: क्या जिम्मेदारी सही घटक में है, या क्या यह परिवर्तन किसी मौजूदा प्रतिबंध को बायपास करता है और स्थिति की नकल करता है?
दूसरा पास कार्यान्वयन विवरण की जांच करता है: नियंत्रण प्रवाह और एरर प्रसार, संसाधन क्लीनअप, क्वेरी या लूप स्केल, लॉग और मेट्रिक्स, क्या कोड गलत होने पर टेस्ट वास्तव में विफल होंगे, और क्या नाम और टिप्पणियाँ भविष्य के पाठकों की मदद करती हैं। फ़ॉर्मेटिंग और स्वचालित रूप से ठीक होने वाली शैली को अंत में रखें ताकि टूल द्वारा पकड़ी जा सकने वाली छोटी-मोटी त्रुटियाँ (nits) मानवीय निर्णय का स्थान न लें।
प्रत्येक निष्कर्ष के लिए, सत्यापित करें कि क्या परिवर्तन ने इसे पेश किया या उजागर किया है। यदि नया कोड items[0] को पढ़ता है जब खाली items मान्य हैं, तो यह एक ठोस रीग्रेशन (regression) है। यदि उसी फ़ाइल में असंबंधित पूर्व-मौजूदा जटिलता शामिल है, तो इसे तकनीकी ऋण (debt) के रूप में उल्लेख करें या अनुवर्ती कार्य बनाएं, जब तक कि इस परिवर्तन के साथ इसकी बातचीत सुरक्षा या शुद्धता जोखिम पैदा न करे। एक समीक्षा बिना किसी सीमा के विस्तारित नहीं हो सकती।
चार टिप्पणी उद्देश्यों का उपयोग करें:
- Blocker: साक्ष्य अनुबंध का उल्लंघन, गलत परिणाम, सुरक्षा समस्या, डेटा करप्शन, या अस्वीकार्य कम्पैटिबिलिटी जोखिम दिखाते हैं। इसे मर्ज करने से पहले हल किया जाना चाहिए।
- Question: संदर्भ जो निष्कर्ष को बदल सकता है वह गायब है। उत्तर चिंता को बंद कर सकता है या इसे ब्लॉकर में पदोन्नत कर सकता है।
- Suggestion: एक डिज़ाइन, मेंटेनबिलिटी, या परिचालन सुधार जो सार्थक है, जबकि वर्तमान कार्यान्वयन अभी भी मर्ज बार को पूरा करता है।
- Nit: एक गैर-अवरोधक पठनीयता या संगति विवरण जिसे फ़ॉर्मेटिंग या स्टैटिक एनालिसिस द्वारा आदर्श रूप से संभाला जाना चाहिए।
एक कार्रवाई योग्य टिप्पणी में "लेबल + स्थिति + परिणाम + अपेक्षित परिणाम" होता है, जिसके बाद उपयोगी होने पर एक संभावित दिशा दी जाती है। उदाहरण के लिए:
Blocker: जब अनुरोधitems=[]की अनुमति देता है, तो यहाँitems[0].idपढ़ने से एरर थ्रो होती है और बैच एंडपॉइंट 500 लौटाता है। कृपया लूप से पहले खाली ऐरे को संभालें और एक रीग्रेशन टेस्ट जोड़ें; खाली परिणाम लौटाना है या 400, यह API अनुबंध पर निर्भर करता है।
यदि आप नहीं जानते कि खाली इनपुट वैध है या नहीं, तो इसे एक प्रश्न बनाएं: "क्या API अनुबंध खाली ऐरे की अनुमति देता है? वर्तमान पथ 500 लौटाता है; यदि इसकी अनुमति है, तो इसे स्पष्ट हैंडलिंग और एक टेस्ट की आवश्यकता है।" यह किसी आवश्यकता का आविष्कार किए बिना साक्ष्य की रिपोर्ट करता है।
समीक्षा निर्णय के साथ समाप्त करें। जब कोई ब्लॉकर अनसुलझा हो तो request changes चुनें। जब आवश्यक संदर्भ गायब हो तो अनुमोदन के पीछे अनिश्चितता को छिपाने के बजाय एक टिप्पणी (comment) सबमिट करें। जब केवल गैर-अवरोधक सुझाव शेष हों तो Approve करें, और बताएं कि वे मर्ज की शर्तें नहीं हैं। सारांश में समीक्षा किए गए दायरे, प्रमुख निष्कर्षों, रनटाइम या टेस्ट साक्ष्य, अनकवर डोमेन और अंतिम स्थिति का उल्लेख होना चाहिए।
ग्रीन CI यह साबित नहीं करता कि समीक्षा पूरी हो गई है। परीक्षण महत्वपूर्ण शाखा को छोड़ सकते हैं, और स्थिर उपकरण उत्पाद अनुबंध को नहीं जानते हैं। इसके विपरीत, मानव समीक्षा को निष्पादन योग्य परीक्षणों की जगह नहीं लेनी चाहिए। दोनों को कनेक्ट करें: टिप्पणी में एक विफल स्थिति की पहचान करें और एक ऐसे चेक का अनुरोध करें जो सुधार से पहले विफल हो और बाद में पास हो जाए।
उच्च-गुणवत्ता वाला नमूना उत्तर
"मैं पंक्ति-स्तरीय गलतियों की खोज से शुरुआत नहीं करूँगा। मैं पुल-रिक्वेस्ट विवरण, जुड़े हुए रिक्वायरमेंट और इंटरफ़ेस परिवर्तनों को पढूँगा, फिर लक्ष्य और उस पुराने व्यवहार को दोहराऊँगा जो सही रहना चाहिए। यदि संदर्भ अनुपलब्ध है, तो मैं अनुमानों को ब्लॉकर्स के रूप में प्रस्तुत करने के बजाय मान्यताओं की सूची बनाऊँगा।
30 मिनट के भीतर, मैं दो पासों का उपयोग करूँगा। पहला एंट्री पॉइंट, स्थिति परिवर्तन, बाहरी दुष्प्रभावों और रिटर्न पथों का अनुसरण करता है, जो शुद्धता, सुरक्षा, डेटा करप्शन, कॉनकरेंसी और कम्पैटिबिलिटी को प्राथमिकता देता है। दूसरा एज केस, एरर हैंडलिंग, परफॉरमेंस, लॉग, टेस्ट और मेंटेनबिलिटी को कवर करता है। स्टाइल सबसे अंत में आती है, और केवल तभी जब टूलिंग ने किसी ऐसी समस्या को कवर नहीं किया जो वास्तव में समझ को प्रभावित करती है।
प्रत्येक निष्कर्ष को तीन प्रश्नों का उत्तर देना चाहिए: इसे क्या ट्रिगर करता है, इसका परिणाम क्या है, और इसे कैसे सत्यापित किया जाए। मैं आवश्यक सुधारों को Blocker, छूटे हुए संदर्भ को Question, गैर-अवरोधक सुधारों को Suggestion, और पॉलिश को Nit के रूप में लेबल करता हूँ। उदाहरण के लिए, यदि एक खाली-ऐरे पथ पहले तत्व को पढ़ता है, भले ही API खाली इनपुट स्वीकार करता हो, तो मैं केवल 'संभावित नल समस्या' लिखने के बजाय यह समझाऊँगा कि यह 500 लौटाता है और स्पष्ट हैंडलिंग तथा एक रीग्रेशन टेस्ट का अनुरोध करूँगा।
सबमिट करने से पहले, मैं जाँचता हूँ कि प्रत्येक टिप्पणी इस डिफ से संबंधित है, मैंने पसंद को नियम में नहीं बदला है, और कोई आवश्यक डोमेन समीक्षक छूटा नहीं है। एक पुनरुत्पादनीय सुरक्षा, डेटा या शुद्धता की समस्या request changes की ओर ले जाती है; केवल सुझाव अनुमोदन (approve) के साथ जा सकते हैं। मेरा सारांश कवर की गई फाइलों, टेस्ट साक्ष्य, असत्यापित क्षेत्रों और निर्णय के तर्क को सूचीबद्ध करता है ताकि लेखक को अगला कदम पता हो और बाद के समीक्षकों को पता चले कि मैंने वास्तव में क्या समीक्षा की है।"
सामान्य गलतियाँ
- डिफ खोलना और पंक्ति दर पंक्ति टिप्पणी करना → बिना उद्देश्य या अनुबंध के, वैध ट्रेड-ऑफ भी गलतियाँ लगते हैं → पहले लक्ष्य, व्यवहार परिवर्तन और विफलता सीमा को दोबारा स्पष्ट करें।
- खोज के क्रम में टिप्पणी करना → नामकरण विवरण डेटा-करप्शन या ऑथराइजेशन जोखिमों को दबा सकते हैं → कार्यान्वयन पॉलिश से पहले जोखिम पास चलाएं।
- केवल "यह एक बग हो सकता है" लिखना → लेखक के पास ट्रिगर का अभाव होता है और वह सुधार को सत्यापित नहीं कर सकता → स्थिति, परिणाम, साक्ष्य और अपेक्षित परिणाम बताएं।
- प्रत्येक टिप्पणी को अनिवार्य बनाना → लेखक मर्ज बार को व्यक्तिगत पसंद से अलग नहीं कर पाता → Blocker, Question, Suggestion और Nit को स्पष्ट रूप से लेबल करें।
- विस्तृत दिखने के लिए एक लंबी चेकलिस्ट दोहराना → डेटा प्रवाह पर लागू नहीं की गई सूची बहुत कम समझ प्रदर्शित करती है → एक महत्वपूर्ण पथ का पता लगाएं और शेष कवरेज की व्याख्या करें।
- यह मांग करना कि सभी पुरानी समस्याओं को ठीक किया जाए → पुल रिक्वेस्ट बिना किसी सीमित जोखिम या सत्यापन के विस्तारित होती है → रीग्रेशन को मौजूदा तकनीकी ऋण से अलग करें, सिवाय वहाँ के जहाँ वे सुरक्षा या शुद्धता के मुद्दे में मिल जाते हैं।
- ग्रीन CI को अनुमोदन साक्ष्य मानना → परीक्षण गलत अनुबंध को एनकोड कर सकते हैं या किसी शाखा को छोड़ सकते हैं → जाँचें कि क्या वे मुख्य प्रतिकूल उदाहरण के लिए विफल होते हैं और छूटे हुए रीग्रेशन टेस्ट का अनुरोध करें।
- कोड के बजाय लेखक पर टिप्पणी करना → यह रक्षात्मकता पैदा करता है और कोई तकनीकी औचित्य प्रदान नहीं करता है → अच्छे इरादे मानते हुए कोड, स्थिति और प्रभाव का वर्णन करें।
- अपनी विशेषज्ञता से बाहर अनुमोदन करना → अनुमोदन गलत आश्वासन पैदा करता है → अपने कवरेज का उल्लेख करें और एक डोमेन समीक्षक का अनुरोध करें।
अनुवर्ती प्रश्न और उत्तर
अनुवर्ती 1: क्या होगा यदि लेखक आपके Blocker पर विवाद करता है?
सत्यापन योग्य अनुबंध और परिणाम पर वापस लौटें। जांचें कि क्या आप इनपुट, जोखिम या रिलीज स्थितियों के बारे में असहमत हैं, और जब संभव हो तो न्यूनतम पुनरुत्पादन (reproduction) का उपयोग करें। यदि साक्ष्य सर्वसम्मति नहीं बनाते हैं, तो कोड के मालिक या डोमेन के मालिक से निर्णय लेने के लिए कहें और पुल रिक्वेस्ट में किसी भी मौखिक निष्कर्ष को रिकॉर्ड करें। असहमति को अनिश्चित काल तक न रहने दें।
अनुवर्ती 2: यदि पुल रिक्वेस्ट इतनी बड़ी है कि 30 मिनट में समाप्त नहीं हो सकती तो क्या होगा?
पूर्ण कवरेज का दिखावा न करें। जोखिम के आधार पर एंट्री पॉइंट, डेटा परिवर्तन और सार्वजनिक अनुबंधों का चयन करें; बताएं कि आपने किन फाइलों की पंक्ति-दर-पंक्ति समीक्षा की, स्कैन किया, या कवर नहीं किया; फिर विभाजन या अतिरिक्त डोमेन समीक्षकों का अनुरोध करें। अनुमोदन की स्थिति वास्तव में किए गए कवरेज से मेल खानी चाहिए।
अनुवर्ती 3: क्या होगा यदि आपको डिफ के बाहर कोई गंभीर पूर्व-मौजूदा समस्या मिलती है?
पहले यह निर्धारित करें कि क्या यह परिवर्तन इसे ट्रिगर करता है या बढ़ाता है। जब यह इंटरैक्शन वर्तमान रिलीज़ के लिए सुरक्षा, डेटा या शुद्धता का जोखिम पैदा करता है, तो ब्लॉक करें। यदि यह स्वतंत्र है, तो साक्ष्य रिकॉर्ड करें, उच्च-प्राथमिकता वाला अनुवर्ती कार्य बनाएं, और इस पुल रिक्वेस्ट में असीमित रीफैक्टरिंग को बाध्य करने के बजाय मालिक को सूचित करें।
अनुवर्ती 4: क्या आप पूर्ण परीक्षणों के बिना किसी आपातकालीन फिक्स को स्वीकृत कर सकते हैं?
ठीक न करने की तत्काल लागत, पैच संकीर्ण है या नहीं, रोलबैक या फीचर-स्विच पथ, और उपलब्ध सबसे छोटे लक्षित सत्यापन को स्थापित करें। एक स्पष्ट आपातकालीन प्रक्रिया अनुवर्ती कवरेज को स्वीकार कर सकती है, लेकिन एक ज्ञात सुरक्षा, डेटा-करप्शन, या अपरिवर्तनीय जोखिम के लिए अभी भी एक उच्च अनुमोदन बार की आवश्यकता होती है। समय सीमा इसे स्वचालित रूप से अनुमोदित नहीं करती है।
अनुवर्ती 5: आप उस डोमेन की समीक्षा कैसे करते हैं जिसे आप नहीं जानते हैं?
सामान्य नियंत्रण प्रवाह, एरर हैंडलिंग, परीक्षण और इंटरफ़ेस परिवर्तनों की जाँच जारी रखें, साथ ही यह भी चिह्नित करें कि आप किसका निर्णय लेने के लिए अयोग्य हैं। क्रिप्टोग्राफी, गोपनीयता, माइग्रेशन या जटिल कॉनकरेंसी के लिए उपयुक्त मालिक का अनुरोध करें। आंशिक समीक्षा केवल तभी मूल्यवान होती है जब इसे पूर्ण अनुमोदन के रूप में प्रस्तुत न किया जाए।
अनुवर्ती 6: क्या टेस्ट कवरेज व्यापक होने पर भी आपको प्रत्येक पंक्ति को पढ़ने की आवश्यकता है?
हाँ, एक अलग फ़ोकस के साथ। परीक्षण एनकोड किए गए मामलों के लिए निष्पादन योग्य साक्ष्य प्रदान करते हैं; समीक्षा अभी भी यह पूछती है कि क्या आवश्यकता सही है, क्या जोखिम छूट रहे हैं, क्या डिज़ाइन अनावश्यक जटिलता जोड़ता है, और क्या लॉगिंग या कम्पैटिबिलिटी उपयुक्त है। समीक्षा में पाए गए महत्वपूर्ण प्रतिकूल उदाहरणों को परीक्षणों में बदलें ताकि भविष्य की शुद्धता समीक्षक की स्मृति पर निर्भर न रहे।