Uncle Bob: "खुद कोड लिखने का दौर खत्म हो चुका है"
(reddit.com)- "Clean Code" के लिए मशहूर Uncle Bob ने घोषणा की कि AI अब डेवलपर्स की तुलना में दबदबे के साथ कहीं तेज़ी से कोड लिखने वाले दौर में पहुंच चुका है, और डेवलपर्स से अपनी भूमिका बदलने का आह्वान किया
- जो काम पहले एक दिन लेता था, उसे AI सिर्फ 5 मिनट में पूरा कर सकता है, इसलिए वह दौर खत्म हो चुका है जब डेवलपर खुद हाथ से कोड लिखते थे
- लेकिन इससे डेवलपर्स को बेहद बड़ी ताकत मिलती है, और वे अब ऐसे काम कर सकते हैं जिनकी पहले कल्पना भी नहीं की जा सकती थी
- टेस्ट कवरेज पहले दर्दनाक काम था, लेकिन अब डेवलपर AI को टेस्ट कवरेज सुनिश्चित करने का निर्देश दे सकते हैं, और mutation tester की मदद से टेस्ट की वास्तविक प्रभावशीलता को परख सकते हैं
- cyclomatic complexity विश्लेषण टूल्स के साथ मिलाकर AI को यह निर्देश दिया जा सकता है कि वह कोड क्वालिटी को पहले से कहीं ऊंचे स्तर तक ले जाए
संलग्न वीडियो की स्क्रिप्ट
> सच का सामना करें। AI आपसे कई गुना तेज़ कोड लिखता है। जिस काम में आपको एक दिन लगता, AI उसे 5 मिनट में खत्म कर देता है। बात खत्म। वह दौर खत्म हो गया जब आप खुद कोड लिखते थे। मुझे पता है। इसे स्वीकार कीजिए।
>
> लेकिन बात यह है कि यही चीज़ आपको बेहद बड़ी ताकत देती है। क्योंकि अब आप वे काम कर सकते हैं जिनके बारे में पहले सपने में भी नहीं सोच सकते थे।
>
> उदाहरण के लिए test coverage के बारे में सोचिए। मुझे पता है यह कितना पीड़ादायक रहा है। वे सारे परेशान करने वाले टेस्ट आपको खुद लिखने पड़ते थे। लेकिन सिर्फ टेस्ट होने का मतलब यह भी नहीं था कि कोड सही से काम करता है। आप code coverage चलाकर हल्का-सा मुस्कुराते हुए कहते थे, "ठीक है, लेकिन इसका मतलब यह नहीं कि कोड काम करता है… बस इतना कि वह execute हुआ है।"
>
> अब इसे ठीक किया जा सकता है। क्योंकि अब आपके पास horsepower है। AI से कहिए कि कोड को कवर करे, फिर mutation tester चलाइए। हां, वह एक टूल है। वह टूल भी AI से बनवाया जा सकता है। 5 मिनट में बन जाएगा। फिर AI से वह टूल चलवाइए। वह टूल source code में बदलाव करता है और सारे टेस्ट चलाता है। अगर टेस्ट fail नहीं होते? तो ऐसे टेस्ट लिखे जाते हैं जो उन्हें fail कराएं। तब आपके पास असली test coverage होगा.
>
> कसम से, तब आपके पास सचमुच असली test coverage होगा।
>
> और जानते हैं आप और क्या कर सकते हैं? आप कोड की quality का analysis कर सकते हैं। आप cyclomatic complexity देखने वाला टूल लिख सकते हैं। सच तो यह है कि ऐसा एक शानदार टूल पहले से मौजूद है। 20 साल पुराना टूल। उसका नाम CRAP है। अच्छा नाम है। मुझे नहीं पता यह किसका संक्षेप है। और जानना भी नहीं चाहता। यह test coverage और cyclomatic complexity के संयोजन पर आधारित है। आप AI से कह सकते हैं कि CRAP score को 5 से नीचे, 4 से नीचे ले आए। तब AI बड़े functions को छोटे-छोटे हिस्सों में बांट देगा और सबको टेस्ट से कवर कर देगा।
>
> ज़रा सोचिए, आपके पास कितनी ताकत है। आप कोड क्वालिटी को उस स्तर तक ले जा सकते हैं जो पहले कभी देखा नहीं गया।
>
> मुझे पता है। मैं वही बूढ़ा Clean Code वाला आदमी हूं। लेकिन मैं ईमानदारी से कहूंगा। अगर आप AI से भरपूर काम लें, तो आप कोड को कहीं ज़्यादा, कहीं ज़्यादा साफ़ बना सकते हैं।
2 टिप्पणियां
Reddit प्रतिक्रियाएँ
आवाज़ वैसी लगती है जैसे Mark Hamill आम तौर पर विलेन की आवाज़ निकालते हैं
यह सच में एक ऐसे डेवलपर जैसा लगता है जिसने बहुत उतार-चढ़ाव देखे हों
if (f == -1) { printf("open failed\n"); exit(1); }जैसा कोड नहीं लिखूँगाAI उसे मेरे बदले लिख देगा, और हर संभावित failure reason के लिए अलग error type और message भी जोड़ देगा, meaningful parameters के साथ। AI मेरी तरह आलसी नहीं है, इसलिए अब मैं file handling logic पर फोकस कर सकता हूँ
लगता है अब हम उस दौर में पहुँच रहे हैं जहाँ ज़्यादातर code boilerplate code होगा। असली ज़रूरत है requirements को अच्छे से बताने की क्षमता, और generated code की security (OWASP) व performance को लगातार जाँचते रहने का तरीका
ये बेहद non-deterministic हैं, और latest models का performance भी दिन में कभी “ठीक-ठाक” से लेकर “लगभग बेकार” तक डोलता रहता है
Natural language पहले भी, अब भी, और आगे भी अस्पष्ट और धुंधली रहेगी, इसलिए संभव है कि यह समस्या कभी सच में हल न हो। इसी वजह से “हम्म, X को Y में जोड़ो और Z में डालो, अच्छे से सोच लेना” कहने के बजाय हम math formulas इस्तेमाल करते हैं
मैं अभी भी Claude के साथ permissions को ठीक से handle कराने का तरीका निकालने पर काम कर रहा हूँ, और जिस तरह उसने नया action/permission change implement किया, वह “ऊपरी तौर पर चलता है लेकिन कभी न कभी टूटेगा” वाले code का परफेक्ट उदाहरण था
Claude code अच्छा लिखता है, लेकिन हमेशा अच्छा code नहीं लिखता
AI के बारे में समझने वाली बात यह है कि “सोचने” में वह इंसानों से बेहतर नहीं है, बस तेज़ है। कहो तो अक्सर वह वही तरीका अपनाता है जो ज़्यादातर लोग अपनाते, और code में वह अक्सर अच्छा नहीं होता
पहले भी कई developers रखकर उन्हें अपनी जरूरत बता देने पर bug से भरा result मिल जाता था, और एक नया change तीन दूसरी जगहें तोड़ देता था। Claude को खुला छोड़ दो तो वह भी वही करता है। मैंने खुद देखा है, और जवाब हमेशा यही रहा: जाकर लिखे गए code को पढ़ो और उसे कम टूटने वाला व ज़्यादा robust बनाने के लिए refactor करने को कहो
जब तक Claude से code लिखवा रहे हो, तब तक यह समझने की क्षमता ज़रूरी रहेगी कि वह code ठीक है या नहीं। जैसे आप उससे resume या accounting material लिखवा सकते हो, लेकिन output को check तो करना ही पड़ेगा
हम पहले जैसे तरीके से code नहीं लिखेंगे, लेकिन generated output को पढ़कर अपने अनुभव के आधार पर review करने की क्षमता फिर भी चाहिए होगी
समस्या यह है कि हर कोई सोचता है, “मुझे English आती है, इसलिए मैं Claude से program बनवा सकता हूँ।” लेकिन सिर्फ English आने से आप Claude से Hawking radiation को खारिज करने वाली PhD thesis नहीं लिखवा सकते। क्योंकि आपके पास यह जाँचने का कोई तरीका ही नहीं होगा कि result सही है या नहीं
जब Microsoft ने scaffolding शुरू की थी तब से आज programmers की संख्या ज़्यादा है। जब Basic जैसी languages ने assembler की जगह इंसानों द्वारा पढ़े जा सकने वाले commands लिखवाने शुरू किए थे, तब भी उस दौर से ज़्यादा programmers थे जब उससे पहले punch cards पर code डाला जाता था
कंप्यूटरों को हमेशा ऐसे instruction sets से program किया जाता रहा है जो धीरे-धीरे कम restrictive और पढ़ने-लिखने में आसान होते गए हैं
Bob Martin एक सम्मानित व्यक्ति हैं, लेकिन इस बार मुझे लगता है वे गलत हैं। लोग अब भी computers के लिए instructions लिखेंगे। बस वे किसी सीमित और बहुत specific instruction set में नहीं, बल्कि कहीं कम restrictive और कहीं ज़्यादा human-readable language में लिखेंगे
कुछ भी खत्म नहीं हुआ है। अभी तो बस शुरुआत हुई है। Programming ने एक नई language जारी की है, और उसका नाम English है
हम पहले ही अभी record मात्रा में software बना रहे हैं, और यह और तेज़ होगा। हम पहले से ज़्यादा code लिखेंगे, और भले हम बहुत तेज़ हो जाएँ, आखिर में ज़्यादा लोग किसी न किसी रूप में software के साथ काम करेंगे। क्योंकि output बहुत सस्ता हो गया है, और यह Jevons paradox के काफ़ी करीब है
यह सोचना कि “इस बार सब अलग है” अहंकारी बात है, और बहुत समझदार लोगों के लिए भी यह कल्पना करना मुश्किल होता है कि multi-dimensional exponential growth का मतलब क्या होता है। सिर्फ large language models ही बेहतर नहीं हो रहे
इसलिए मुझे यह बात सही लगती है
यही bubble का peak है, है न? मैं अभी यहीं यह घोषणा करता हूँ ☎️
वह जिस तरह की बात कर रहा है, उसके लिए software quality metrics, professional testing, और code quality की वर्षों की समझ चाहिए
अभी वैसे tools पर्याप्त नहीं हैं। कम से कम उनका व्यापक adoption तो नहीं हुआ है। यह भी पक्का नहीं कि industry उन्हें अपनाएगी
CI/CD practices को लागू करना उतना मुश्किल भी नहीं था, फिर भी बहुत सी कंपनियों ने सब कुछ adopt नहीं किया और बस ज़्यादा लोग रखकर inefficient तरीके से काम जारी रखा। जब तक AI यह सब default रूप से handle नहीं करेगा, आगे भी यही होगा। मौजूदा Claude Code, Cursor, Codes tools भर से काम नहीं चलेगा
यह ऐसा लगता है जैसे Matrix में यही आदमी Agent हो
AI को सही तरह guide करने के लिए top-tier technical depth चाहिए। बस AI से कहते रहो कि code जोड़ता जाए, तो चीज़ maintainable नहीं रहती
ऊपर से, मैंने अभी तक AI-only तरीके से चलने वाला एक भी market-level product नहीं सुना है। तो ज़रा शांत रहो
अगला कदम शायद human brain की भी vibe coding ही होगा
reddit की राय काफ़ी नकारात्मक या तंज़ भरी लगती है.
असल में AI की वजह से test coverage, E2E Test जैसी वे चीज़ें, जिन्हें अब तक टालते आए थे, अब पक्के तौर पर आगे बढ़ रही हैं, तो ऐसे माहौल में यह रवैया उल्टा कुछ ज़्यादा ही cynical लगता है.