तो PR उघडा ज्या कोडशी तुमचा रिव्ह्यूअर अजून परिचित झालेला नाही
मी अलीकडेच एका मोठ्या pull request (PR) चे पुनरावलोकन केले. त्यात कोड लिहिण्यासाठी AI चा वापर करण्यात आला होता. त्याने अशा एका मॉड्यूलमध्ये बदल केला होता जे इतर तीन फीचर्स वापरत होते. त्याचे वर्णन फक्त एक वाक्य होते. त्याने फाईलचे नाव दिले होते पण बदलाचे कारण दिले नव्हते.
कामाला सुरुवात करण्यापूर्वी बदल समजून घेण्यासाठी मला पंधरा मिनिटे खर्च करावी लागली. मला त्यामागचा हेतू शोधायचा होता. मला धोके (risks) शोधायचे होते. मला महत्त्वाच्या फाईल्स आणि अनावश्यक गोष्टी (noise) वेगळ्या करायच्या होत्या.
मला जाणीव झाली की मी यापूर्वी दुसऱ्या कोणाशीही असेच वागलो आहे.
जेव्हा तुम्ही कोड लिहिता, तेव्हा सर्व संदर्भ (context) तुमच्याकडे असतो. तुम्ही एखादे मॉड्यूल का वेगळे केले हे तुम्हाला माहित असते. तुम्ही आधी काय करण्याचा प्रयत्न केला हे तुम्हाला माहित असते. तुम्हाला कोणत्या भागांबद्दल शंका आहे, हे देखील तुम्हाला माहित असते.
बहुतेक लोक स्वतःसाठी वर्णन लिहितात. ते "Refactored service layer" किंवा "Fixed auth module" असे लिहितात. ही वर्णने अशा लोकांसाठी असतात ज्यांना आधीच संदर्भ माहित आहे.
चांगले वर्णन हे अशा व्यक्तीसाठी असते ज्याला काहीच माहित नाही.
वर्णन म्हणजे केवळ सारांश नाही. ती एक परीक्षा आहे. जर तुम्ही तुमचे काम स्पष्ट करू शकत नसाल, तर तुमचे काम तयार नाही.
मी आता प्रत्येक महत्त्वाच्या (non-trivial) PR साठी सहा भागांची रचना वापरतो:
• Intent: हे PR का आहे आणि ते कोणती समस्या सोडवते याचे स्पष्टीकरण द्या. जर तुम्ही हे लिहू शकत नसाल, तर थांबा. PR तयार नाही. • Major changes: आर्किटेक्चर किंवा सध्याच्या वर्तनावर (behavior) परिणाम करणाऱ्या निर्णयांची यादी करा. • Minor changes: क्लिनअप (cleanups) आणि नावातील बदलांची (renames) यादी करा. त्यांना स्ट्रक्चरल बदलांपासून वेगळे ठेवा. • Impact: हे बदल कोणत्या सिस्टम्सना स्पर्श करतात त्यांची यादी करा. त्याचा परिणाम कोठे कोठे होऊ शकतो (blast radius) याचा नकाशा द्या. • Evidence: तुम्ही काय रन केले आणि कोणते टेस्ट्स पास केले याची यादी करा. तुम्ही काम केले आहे याचा पुरावा द्या. • Uncertainties: तुम्हाला कोणत्या गोष्टींबद्दल शंका आहे ते सांगा.
जेव्हा तुम्ही तुमच्या शंका मान्य करता, तेव्हा तुम्ही रिव्ह्यूअरला मदत करता. त्यांना कुठे बारकाईने पाहायचे आहे हे समजते. ते व्यवस्थित काम करणाऱ्या भागांवर वेळ वाया घालवत नाहीत.
जर तुम्ही तुमच्या शंका सांगू शकत नसाल, तर तुम्ही तुमच्या कोडबद्दल पुरेसा सखोल विचार केलेला नाही.
PR उघडण्यापूर्वी तो योग्य आहे की नाही हे ठरवण्याचे हे शेवटचे पाऊल आहे.
ज्या रिव्ह्यूअरला तुमचा हेतू समजतो, तो कठीण प्रश्नांवर वेळ घालवतो. ज्या रिव्ह्यूअरला तुमचा हेतू ओळखण्यासाठी अंदाज लावावा लागतो, तो सोप्या प्रश्नांवर वेळ घालवतो. ते गोष्टी 'योग्य आहेत का' हे विचारण्याऐवजी 'या गोष्टी नक्की काय आहेत' हे विचारण्यात वेळ घालवतात.
अशा रिव्ह्यूअरसाठी लिहा जो तुमच्या कोडशी अजून परिचित झालेला नाही. असे लिहा की जणू तुम्ही प्रश्नांची उत्तरे देण्यासाठी तिथे नसाल. असे लिहा की जणू तुम्ही तीन दिवसांनंतर हे वाचत आहात आणि तुम्हाला त्या कामाची कोणतीही आठवण नाही.
जर वर्णन पुरेसे स्पष्ट असेल, तर PR तयार आहे.
PR सबमिट करा, तुमचा रिव्ह्यूअर अजून भेटलेला नाही
आपण सर्वजण या परिस्थितीतून गेलो आहोत. तुम्ही तासनतास, कदाचित दिवसभर तुमचा कोड पॉलिश करण्यासाठी घालवले आहेत. तुम्ही टेस्ट रन केल्या आहेत, लिंटिंग (linting) तपासले आहे आणि तुम्हाला खात्री आहे की तो आता 'परफेक्ट' आहे. पण त्यानंतर, संकोच निर्माण होतो. 'जर त्यांनी एखादी त्रुटी शोधली तर?' 'जर माझा दृष्टिकोन चुकीचा असेल तर?' 'जर मी असं दिसलो की मला काहीच माहित नाही तर?'
हा 'परफेक्शनिझम'चा (परिपूर्णतेचा ध्यास) सापळा आहे. आणि सॉफ्टवेअर डेव्हलपमेंटमध्ये उत्पादकता कमी करणारे हे सर्वात मोठे घटकंपैकी एक आहे.
खरी गोष्ट अशी आहे की, तुमच्या रिव्ह्यूअरने अजून तुमचा कोड पाहिलेला नाही. त्यांनी तुमची विचार प्रक्रिया, तुमचे संघर्ष किंवा तुमच्या निर्णयांमागचा संदर्भ पाहिलेला नाही. ते फक्त एका विशिष्ट वेळेचा नमुना (snapshot) पाहत आहेत.
तुम्ही तुमचा PR लवकर का सबमिट केला पाहिजे, याची काही कारणे खालीलप्रमाणे आहेत:
- उशिरा मिळवलेल्या परिपूर्णतेपेक्षा लवकर मिळालेला फीडबॅक अधिक चांगला असतो. जेव्हा तुम्ही फक्त ५० ओळींचा कोड लिहिला असेल, तेव्हा दिशा बदलणे खूप सोपे असते, ५०० ओळी लिहिल्या गेल्या असतील त्या तुलनेत.
- रिव्ह्यूअर्स तुम्हाला मदत करण्यासाठी असतात, केवळ जज करण्यासाठी नाही. एक चांगला रिव्ह्यूअर तुम्हाला यशस्वी होताना पाहू इच्छितो. त्यांना ज्ञान शेअर करायचे असते आणि कोडबेस निरोगी राहील याची खात्री करायची असते.
- लहान PR रिव्ह्यू करणे सोपे असते. मोठे, एकसंध (monolithic) PR भीतीदायक वाटतात आणि अनेकदा त्यांचे रिव्ह्यू वरवरचे होतात. लहान आणि केंद्रित PR ला योग्य लक्ष मिळते.
- ही शिकण्याची एक संधी आहे. तुमच्या PR वरील प्रत्येक कमेंट हा एक धडा आहे. तो आनंदाने स्वीकारा.
'परफेक्ट' क्षणाची वाट पाहणे थांबवा. परफेक्ट क्षण कधीच नसतो. फक्त 'आताचा' क्षण असतो. तुमचा PR सबमिट करा. संवाद सुरू होऊ द्या.
Optional learning community: https://t.me/GyaanSetuAi