2026 में हम कोड क्यों लिखते हैं
(softwaredoug.com)- software engineer की भूमिका अब सिर्फ code लिखने से आगे बढ़कर software factory को बनाना और बनाए रखना हो गई है, लेकिन system को समझने और बेहतर बनाने के लिए अब भी सीधे code के साथ काम करना ज़रूरी है
- prompts,
AGENTS.md, और knowledge base के ज़रिए agents को guide करके, और tests, linting, type systems, तथा evaluation के ज़रिए नतीजों को सुरक्षित रखकर, कम क्षमता वाले models से भी काफ़ी उपयोगी बदलाव करवाए जा सकते हैं - सीधे coding करने से आप English जैसे मध्यवर्ती स्तर से गुज़रे बिना execution environment में सोच सकते हैं, जिससे वे vulnerabilities, कमज़ोर tests, और अनावश्यक exceptions अधिक स्पष्ट दिखते हैं जो सिर्फ passive code review में छूट सकते हैं
- agents compiler से ज़्यादा किसी नए शामिल हुए intern जैसे होते हैं; वे मौजूदा code और अस्पष्ट requirements का सतर्कता से पालन करते हैं, और इंसानी एकबारगी गलतियों को भी wrapping और indirect layers के ज़रिए बढ़ा सकते हैं
- automation की productivity का लाभ उठाते हुए भी ownership और judgment बनाए रखने के लिए ज़रूरी है कि इंसान पहले खुद approaches आज़माएँ, patterns स्थापित करें, और फिर agents से उन्हें दोहरवाएँ
एजेंट्स के साथ काम करने वाली software factory
- software engineer अब सिर्फ software ही नहीं, बल्कि ऐसी assembly line भी बनाए रखते हैं जहाँ कोई भी prompt के ज़रिए बदलाव माँग सके और उसे तुरंत deploy किया जा सके
- prompts, skills,
AGENTS.md, और knowledge base के माध्यम से agents की सफलता के लिए ज़रूरी infrastructure पहले से तैयार किया जाता है - tests, linting, type systems, evaluation, और दूसरे AI की मदद से होने वाले automatic evaluation द्वारा नतीजों को बाद में सुरक्षित किया जाता है
- prompts, skills,
- अगर पर्याप्त constraints और ताज़ा context दिया जाए, तो कम बुद्धिमत्ता वाले models भी रास्ते से भटके बिना उपयोगी बदलाव कर सकते हैं; ऐसे में लग सकता है कि इंसानों को code पढ़ने या खुद लिखने की ज़रूरत नहीं रही
- लेकिन भले ही Fable-स्तर की बुद्धिमत्ता वाले agents मौजूद हों, सीधे coding करने से आप English जैसी मध्यवर्ती layer के बिना सीधे execution environment में सोच पाते हैं
- agents द्वारा बनाए गए diff और patches को सिर्फ निष्क्रिय रूप से पढ़ते रहने भर से system architecture के साथ गहरा जुड़ाव बनाना मुश्किल है
- code को सीधे संभालने पर यह महसूस होता है कि उसके ऊपर features जोड़ते समय क्या-क्या टूट सकता है
- code को व्यवस्थित करके और कई exceptions न जुड़ें ऐसी सुसंगत architectural principles को दस्तावेज़ित करके software factory को भी अधिक स्थिर बनाया जा सकता है
- debugging के दौरान test strategy की कमज़ोरियों को पहचानकर ठीक किया जाए, तो नए तरह के bugs की पूरी श्रेणी को रोका जा सकता है
- सीधे coding करना software को समझने का एकमात्र तरीका नहीं है, और न ही Magnetized Needle and a Steady Hand की तरह चरम manual काम पर अड़े रहने की ज़रूरत है
- भले ही वास्तविक code का ज़्यादातर हिस्सा AI बनाए, सीधे coding करना फिर भी एक उपयोगी tool बना रहता है
सीधे coding से बची रहने वाली सोचने की क्षमता और ownership
- अगर आप सिर्फ code पढ़ने और approve करने वाले reverse centaur की भूमिका तक सीमित रह जाएँ, तो concentration और ownership दोनों कम हो जाते हैं, low-quality code का review पार करना आसान हो जाता है, और बारीक tuning भी मुश्किल हो जाती है
- अगर details पर ध्यान न दिया जाए, तो vulnerabilities जमा होती जाती हैं, और लंबे समय में low-quality code agents पर भी बुरा असर डालता है
- अगर इंसान पहले खुद approaches आज़माएँ और फिर agents से स्थापित patterns दोहरवाएँ, तो वे नतीजों में लगातार शामिल और मालिकाना महसूस कर सकते हैं
- English एक underspecified language है, जो computation को सटीक रूप से व्यक्त करने के लिए पर्याप्त नहीं है
- algorithmic काम में ideas को executable steps के रूप में सोचना ज़रूरी होता है
- स्थिति के अनुसार design space वाले low-level languages या अधिक सीमित computational environment वाले high-level languages चुनकर आवश्यक precision को नियंत्रित किया जा सकता है
- अगर coding agents को compiler की तरह माना जाए, तो यह सोच बन सकती है कि खराब तरीके से लिखा code भी deploy कर देना ठीक है
- agents compiler से ज़्यादा नए शामिल हुए intern जैसे हैं
- वे मौजूदा code को पढ़ते हैं, जो अधूरा या निम्न-गुणवत्ता का हो सकता है, और अस्पष्ट change descriptions के आधार पर नए बदलाव बनाते हैं
- इंसान interns के समूह को अपनी सोच और पसंद पूरी तरह नहीं सौंपते; इसलिए उन्हें सिर्फ consumer बनकर नहीं रहना चाहिए, बल्कि सीधे शामिल होना चाहिए
- agents के लिए Boy Scout Rule को अपने-आप निभाना कठिन है, यानी code को उससे बेहतर स्थिति में छोड़ना जितना उन्होंने उसे पाया था; और यह ज़िम्मेदारी उन्हें सौंपना भी बोझिल लगता है
- वे मौजूदा change को यथासंभव सुरक्षित बनाने की दिशा में झुकते हैं और पुराने decisions को conservatively बनाए रखते हैं
- एक codebase में, जब एक इंसान ने अनजाने में कुछ state के लिए browser local storage का उपयोग किया, जबकि बाकी state backend database में रखी जा रही थी, तो agents ने उसी decision को बनाए रखने के लिए wrapping और indirect layers जोड़ दिए, जिससे code lines लगभग 3 गुना बढ़ गईं
- इस तरह की conservatism इंसानों के एकबारगी गलत फैसलों को बढ़ा सकती है
- code को सीधे हटाने और explore करने की प्रक्रिया, सिर्फ English में निर्देश देने की तुलना में, बेहतर architecture तक पहुँचने में मदद करती है
- code पर जितना अधिक ध्यान दिया जाए, उतनी ही सोचने की क्षमता, author होने की संवेदना, और software factory को चलाने की योग्यता मज़बूत होती है
- software factory में architectural patterns से लेकर algorithms और performance तक details महत्वपूर्ण होती हैं
- agents ने evaluation, measurement, और guardrails की ज़रूरत बढ़ा दी है, और व्यक्तिगत projects में भी CI को बाद का काम नहीं बल्कि शुरुआत में जोड़ने के लिए प्रेरित किया है
- इससे software development की स्थिति काफ़ी सुधरी है, लेकिन हर assembly line में अब भी कमज़ोरियाँ बनी हुई हैं
- car factory में भी कभी assembly line को खोलकर देखना पड़ता है, कभी internal combustion engine की details में उतरकर 10% सुधार निकालना पड़ता है, और कभी field issues जल्दी क्यों नहीं पकड़े गए यह जानने के लिए पूरे दिन brake pad tests को देखना पड़ता है
- software में भी details और overall structure को जोड़ने के लिए इस पर मनमानी सीमाएँ नहीं खींची जानी चाहिएँ कि आप किन चीज़ों को सीधे छू सकते हैं
2 टिप्पणियां
क्योंकि token की कीमत नहीं है :(
Hacker News की राय
अगर आप कोड लिख नहीं सकते, तो उसे रिव्यू भी नहीं कर सकते — यह बात साफ लगती है; फिर भी कुछ लोग और कंपनियाँ मानती हैं कि Claude लिख देगा और Codex रिव्यू कर देगा। लेकिन फिर भी परिणाम assembly या compiled binary में नहीं, बल्कि Python, Java जैसी high-level language में क्यों चाहिए? आखिरकार इंसान को कोड पढ़ पाने योग्य होना चाहिए
डेवलपर से उम्मीद करना कि वह कोड पढ़े, debug करे और तर्क लगाए, लेकिन उसी क्षमता को विकसित करने की ट्रेनिंग न देना — यह विरोधाभासी रवैया है
अगर पूरी रचनात्मकता LLM को सौंप दी जाए, तो क्या industry आगे भी विकसित हो पाएगी — इस पर संदेह है
इसका मतलब यह नहीं कि कोई एक तरीका बेहतर है; हो सकता है कम details पर ध्यान देने वाले लोग दुनिया चलाएँ, या हर समस्या में ज़रूरी सूक्ष्मता का स्तर अलग हो
compiler LLM को ऐसा कोड लिखने में मदद करता है जो सच में compile और run हो सके, लेकिन अगर machine code सीधे output किया जाए तो उसके चलने की संभावना बहुत कम होती है। और हाँ, अगर आप खुद कोड लिख ही नहीं सकते, तो रिव्यू करना और भी कठिन हो जाता है
“इतनी व्यापक और सटीक project spec, जिससे program generate किया जा सके, industry उसे क्या कहती है? Code” — CommitStrip
अगर सही तरह लिखा गया हो, तो code का सार यह होना चाहिए कि वह underlying business logic को सबसे सरल रूप में व्यक्त करे। यह ज़रूरी नहीं कि हर supporting layer का पूरा review किया जाए, लेकिन अगर code पढ़ा ही नहीं गया, तो business logic को भी पूरी तरह समझ लिया गया है — ऐसा कहना मुश्किल है
https://softwaredoug.com/blog/2026/07/04/write-code-not-specs
असली सवाल यह है कि manual coding के लिए पैसे कौन देगा। ग्राहक code के लिखे जाने या generate होने के लिए नहीं, बल्कि समस्या के समाधान के लिए पैसे देता है; इसलिए जो सबसे कम लागत और कम झंझट में समाधान देगा, वही काम ले जाएगा, और AI tools द्वारा timeline compress करने का फायदा नज़रअंदाज़ करना मुश्किल है
मैं 1990s से इस industry में हूँ, और औसत डेवलपर्स द्वारा औसत नतीजे बनाना हमेशा आम बात रही है। Handwritten code को हम ज़रूरत से ज़्यादा romanticize करते हैं, लेकिन असली codebases समय के साथ maintain करना मुश्किल और bugs से भरे हो जाते थे, और बुरी तरह किए गए projects कोई नई बात नहीं हैं
अभी हालात ऐसे हैं जैसे दोनों हाथ बाँधकर software factory बनाने की कोशिश की जा रही हो
फोकस करने और समझने के लिए सिर्फ दूर से agent को देखते रहना और code को passively पढ़ना काफ़ी नहीं है; code को खुद करके अनुभव करना पड़ता है। आखिरकार बात अपने mental model को train करने की है
Coding करते समय अवचेतन मन बार-बार ऐसे फ़ैसले करता है जैसे “यह सही लग रहा है”, और यह क्षमता सिर्फ दोहराव और गहरे focus से बनती है; सिर्फ code review या docs पढ़ने से इसकी सीमा है। ऐसा mental model बन जाए तो production incident में सिर्फ error message देखकर भी कारण तुरंत समझ में आ सकता है, लेकिन generated code में वही बात धीमी, conscious reasoning से देर तक खोजनी पड़ती है
अगर LLM सच में उपयोगी होना है, तो हमें मानना होगा कि वह पूरी code maintenance अपने ऊपर लेकर किसी external library की तरह काम कर सकता है; नहीं तो समस्याएँ लगातार आती रहेंगी
अभी नहीं पता कि कौन-सा पक्ष सही है; मैं अभी इस पर और समझ बना रहा हूँ
2026 में भी AI-generated code अब भी बहुत खराब है। चाहे Fable हो या custom Pi/opencode LeetCode harness, नतीजे भयानक हैं; और अगर आप अपने code और AI code की quality के बीच का फर्क नहीं पहचान पा रहे, तो यह अच्छी खबर नहीं है
एजेंट से Boy Scout नियमों का पालन करवाने के लिए profile execution, code coverage की जाँच, critical review, और report व follow-up tasks लिखने जैसी बातें नियमों में स्पष्ट रूप से डाल दी गई थीं। आज के cutting-edge LLMs मेरे साथ काम कर चुके 90% लोगों से कहीं बेहतर तरीके से ऐसे नियमों का पालन करते हैं, इसलिए यह बुरा है या नहीं, इस पर मुझे संदेह है
एजेंट conservative होता है, इसलिए वह इंसानी एकबारगी गलती को बढ़ा सकता है। इसे हल करने के कई तरीके हैं और हर किसी की सोच अलग होती है, इसलिए code पढ़े बिना काम करने का तरीका भी संभव है और सीधे पढ़कर-लिखकर काम करने का तरीका भी, लेकिन LLM से गुजरे बिना code की precision से मिलने वाला फायदा भी बड़ा है
मुझे code खुद लिखना पड़ता है, क्योंकि नहीं तो LLM जरूरत से बहुत ज्यादा code बना देता है। समस्या को पूरी तरह समझना और generalize करना जरूरी है, ताकि “Hello World” पर 10 हज़ार lines और 5 abstraction layers न चिपक जाएँ
LLM token predictor है, इसलिए जितनी ज्यादा problems solve करनी होंगी, उतने ज्यादा code tokens output करने की उसकी प्रवृत्ति होगी
समस्या रखने वाला पक्ष इंसान होता है, इसलिए अगर समस्या को समझा न जाए तो LLM X/Y problem में फँस सकता है और वास्तविक जरूरत से असंबंधित समस्या हल कर सकता है। LLM libraries या high-level languages की तरह गैर-मुख्य हिस्सों को बेहतर abstract करता है, लेकिन समस्या के core को अब भी औपचारिक रूप से व्यक्त करना पड़ता है
constraints एक-एक करके जोड़ते हुए मनचाहा परिणाम पाने वाली vibe coding भी आखिरकार ढीली-ढाली और अनौपचारिक programming ही है। बेहतर यही है कि समस्या के peripheral हिस्से LLM को दिए जाएँ और core को खुद लिखा और समझा जाए
ऊपर से देखें तो उसने request पूरी तरह solve कर दी, लेकिन code अनावश्यक और भद्दा था। Usage-based token बेचने वाली कंपनियों के पास ऐसी Rube Goldberg-शैली के solutions बनाने की आर्थिक प्रेरणा होती है जो समस्या को बस मोटे तौर पर हल करें लेकिन ज्यादा से ज्यादा tokens खपा दें, और tokens सिर्फ generation के समय नहीं, बल्कि बाद में नए bugs मिले हुए विशाल code को सँभालते समय भी ज्यादा खर्च होते हैं
जो लोग copy-paste code का मजाक उड़ाते थे, उनका अब ऐसे ही भद्दे तरीके से जोड़े गए code पर मोहित होना मजेदार लगता है
नवंबर 2022 के ChatGPT 3.5 से अब तक की प्रगति देखकर मुझे शक है कि क्या 4 साल बाद भी मैं code review कर रहा होऊँगा। AI के बारे में चरमपंथी न होते हुए भी, अगर अभी की रफ्तार बनी रहती है तो 5~10 साल बाद आज के रूप वाला software engineering और development काफी हद तक गायब हो सकता है
इंसानों के हिस्से शायद सिर्फ UI design बचे, और बाकी सब abstract होकर AI असली काम संभाल ले
वेब पहले ही काफी खराब है, कम से कम अभी जितना तो रहने दो कि हम अयोग्य इंसानों को दोष दे सकें
KPI के दबाव से अलग, मौका मिलते ही मैं code खुद लिखता हूँ, और AI से बस थोड़ा ज्यादा स्मार्ट code autocomplete जैसी उम्मीद रखता हूँ
मैं code खुद लिखता हूँ क्योंकि मुझे coding से प्यार है और इससे सच में खुशी मिलती है। जो काम पसंद है उसे छोड़ने की कोई वजह नहीं है