आपका काम ऐसा कोड देना है जिसके काम करने की पुष्टि हो चुकी हो
(simonwillison.net)- AI-सहायित development environment में कम अनुभवी इंजीनियरों द्वारा बिना सत्यापित बड़े PR सबमिट करने के मामले बढ़ रहे हैं
- डेवलपर का मुख्य काम सिर्फ कोड लिखना नहीं, बल्कि ऐसा कोड देना है जिसके काम करने का प्रमाण हो
- इसके लिए manual test और automated test के दो चरण अनिवार्य रूप से पूरे करने चाहिए
- coding agent को भी इस तरह सेट करना चाहिए कि वह अपने किए गए बदलावों को खुद verify करे
- आखिरकार ज़िम्मेदारी इंसानी डेवलपर की ही होती है, और केवल वही कोड सच में मूल्यवान है जिसमें सत्यापन के प्रमाण शामिल हों
बिना सत्यापित कोड सबमिट करने की समस्या
- LLM टूल्स का उपयोग करने वाले जूनियर इंजीनियरों द्वारा बहुत बड़े, बिना सत्यापित PR सबमिट करने और code review पर निर्भर रहने के उदाहरण बताए गए हैं
- इसे असभ्य, अक्षम, और डेवलपर की ज़िम्मेदारी से बचने वाला व्यवहार कहा गया है
- सॉफ़्टवेयर इंजीनियर की भूमिका सिर्फ कोड बनाना नहीं, बल्कि ऐसा कोड देना है जिसके काम करने का प्रमाण हो
- बिना सत्यापित कोड को reviewer पर बोझ डालने जैसा माना जाता है
कोड के काम करने को साबित करने के दो चरण
- पहला चरण manual test है, जिसमें खुद यह जांचना ज़रूरी है कि कोड सही तरह से काम कर रहा है
- सिस्टम को शुरुआती स्थिति में सेट करना, बदलाव लागू करना, और फिर नतीजे को verify करना इस प्रक्रिया का हिस्सा है
- terminal commands और output को code review comments में जोड़कर या screen recording video के ज़रिए इसका प्रमाण दिया जा सकता है
- सामान्य स्थिति में काम करने की पुष्टि के बाद edge case test करके समस्याएं खोजनी चाहिए
- दूसरा चरण automated test है, जिसे LLM टूल्स की प्रगति के कारण अनिवार्य प्रक्रिया के रूप में रेखांकित किया गया है
- बदलावों के साथ automated tests भी शामिल होने चाहिए, और अगर implementation वापस लिया जाए तो tests fail होने चाहिए
- test लिखने की प्रक्रिया manual test जैसी ही होती है, और test harness integration की क्षमता महत्वपूर्ण है
- सिर्फ automated tests को पर्याप्त मानकर manual test छोड़ देना गलत तरीका बताया गया है
coding agent की भूमिका और सत्यापन
- 2025 में LLM क्षेत्र का एक बड़ा रुझान coding agents की तेज़ बढ़त है, जिनमें Claude Code और Codex CLI प्रमुख उदाहरण हैं
- ये कोड चलाकर समस्याओं को खुद ठीक कर सकते हैं
- coding agent को भी अपने बदलावों को साबित करना चाहिए, और manual तथा automated tests करने चाहिए
- CLI tools के मामले में agent को खुद commands चलाने के लिए प्रशिक्षित किया जा सकता है, या Click के CLIRunner जैसे सिस्टम से इसे automate किया जा सकता है
- CSS बदलावों के लिए screenshot capture के ज़रिए नतीजों की पुष्टि करने की व्यवस्था की जा सकती है
- अगर प्रोजेक्ट में पहले से tests मौजूद हैं, तो agent उन्हें बढ़ा सकता है या उन्हीं patterns का फिर से उपयोग कर सकता है
- test code की संरचना और गुणवत्ता agent द्वारा बनाए जाने वाले tests की गुणवत्ता पर सीधे असर डालती है
- test code के प्रति सौंदर्यबोध को senior engineer की पहचान करने वाली अहम क्षमता बताया गया है
इंसानी ज़िम्मेदारी और कोड का मूल्य
- कंप्यूटर ज़िम्मेदारी नहीं ले सकते, यह भूमिका इंसानों को ही निभानी होगी
- LLM द्वारा बड़े patches बनाना अब अपने आप में कोई खास मूल्यवान काम नहीं रह गया है
- असली मूल्य ऐसा कोड देने में है जिसके काम करने का प्रमाण हो
- PR सबमिट करते समय यह दिखाने वाले प्रमाण ज़रूर शामिल होने चाहिए कि कोड सही तरह से काम करता है
4 टिप्पणियां
मैं इससे बहुत सहमत हूँ। मौजूदा PR-आधारित कोड की जिम्मेदारी maintainer और reviewer पर डाल दी जाती है। बिना review किए गए LLM कोड को submit करने वाले व्यक्ति के लिए कोई disadvantage नहीं है।
Google codebase में contribute करके देखें तो contributor के credit जैसी चीज़ें मापी जाती हैं, और लगता है कि दूसरे open source प्रोजेक्ट्स / कंपनियाँ भी ऐसी चीज़ें अपनाने लगेंगी। मुझे लगता है कि trust और भी ज़्यादा महत्वपूर्ण asset बन जाएगा।
ओह, तो Google ऐसा कॉन्सेप्ट इस्तेमाल करता है।
Hacker News की राय
हाल में एक निराशाजनक किस्सा बार-बार दिख रहा है। LLM टूल्स से ताकत पाए जूनियर इंजीनियर बड़े, बिना टेस्ट किए हुए PR अपने सहकर्मियों या open source maintainers के पास फेंक देते हैं, और उम्मीद करते हैं कि code review बाकी सब संभाल लेगा। इससे भी बुरा यह है कि ऐसा व्यवहार सिर्फ जूनियर ही नहीं, सीनियर डेवलपर्स में भी दिख रहा है
अच्छा PR लिखने के नियम सिर्फ AI-generated code पर नहीं, हर स्थिति पर लागू होते हैं। मैं PR description लिखते समय मौजूदा behavior, बदलाव की वजह, और क्या बदला है—इन सबको क्रम से लिखता हूँ। reviewer's बोझ कम करने के लिए test करने का तरीका, screenshots, और E2E test commands तक शामिल करता हूँ। इससे async collaboration या अलग time zone में काम करने वाली टीमों को भी मदद मिलती है
इंजीनियर का असली काम requirement को समझना, उसे logical flow में बदलना, trade-offs को संतुलित करना, और नतीजे की जिम्मेदारी लेना है। code generate कर देना या random PR फेंक देना, इन बुनियादी बातों की कमी का लक्षण है। coding agents उल्टा हमें engineering की असल प्रकृति फिर से याद दिलाने का मौका दे रहे हैं
testing ज़रूरी है, लेकिन पर्याप्त नहीं। code को logically verify भी करना पड़ता है। testing सिर्फ खास input और environment में सही behavior दिखाती है
मैं testing को obligation की तरह नहीं देखता। मैं यह सिर्फ इसलिए करता हूँ क्योंकि मैं सच में देखना चाहता हूँ कि code काम करता है। अगर code को चलते देखना आपको exciting नहीं लगता, तो शायद यह पेशा आपके लिए नहीं है
मैंने सुना है कि LLM की वजह से जूनियर बड़े PR फेंक रहे हैं, लेकिन हमारे संगठन में अभी तक ऐसा नहीं हुआ है
“तुम्हारा काम code को proven state में देना है” इस बात से मैं सहमत नहीं हूँ। असली काम business problems solve करना है। हाँ, ज़्यादातर मामलों में वह code तक पहुँचता है, लेकिन यह फर्क महत्वपूर्ण है
अपनी पिछली नौकरी में मैं जापान की एक high-quality hardware manufacturer में काम करता था। QA department अगर कोई bug पकड़ लेता, तो product release रोक दी जाती थी। इसलिए हर development department ने अपना QC team बना लिया और pre-testing को मजबूत किया। नतीजे में software की verification बहुत गहराई से होती थी
आजकल काम का मतलब tickets बंद करना रह गया है। code quality metrics में नहीं दिखती, इसलिए वह महत्वहीन बन जाती है। मैं ऐसे system का हिस्सा नहीं बनना चाहता। अब craftsmanship गायब हो रही है, और सबको बस सस्ता plywood और glue चाहिए
“proven code” का मतलब ही असली मुद्दा है। कई बार LLM द्वारा बनाए गए tests जोड़कर भी बड़े PR submit कर दिए जाते हैं। मैं भी personal projects में vibe coding करता हूँ, लेकिन team level पर ऐसा करना बुरी आदत है। engineers को hire करने का कारण उनकी expertise खरीदना है