14 पॉइंट द्वारा GN⁺ 7 시간 전 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • "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 टिप्पणियां

 
GN⁺ 7 시간 전
Reddit प्रतिक्रियाएँ
  • आवाज़ वैसी लगती है जैसे Mark Hamill आम तौर पर विलेन की आवाज़ निकालते हैं

    • यहाँ तो लगभग Joker वाली दिशा में जा रहे हैं। क्या वे पहले से भी किसी कार्टून किरदार की तरह बोलते थे?
    • Incredibles में पापा के इंश्योरेंस कंपनी मैनेजर की आवाज़ जैसी लगती है
    • मुझे तो कॉमेडियन Lewis Black वाली वाइब ज़्यादा आई। लगा अभी गुस्से भरा लंबा भाषण फूट पड़ेगा, लेकिन आखिर तक नहीं हुआ, थोड़ा अफसोस रहा
    • मुझे Matrix में Neo से पूछताछ वाला सीन ज़्यादा याद आया। कुछ “Hello Mr Anderson” जैसा एहसास
  • यह सच में एक ऐसे डेवलपर जैसा लगता है जिसने बहुत उतार-चढ़ाव देखे हों

    • सही है। अब शायद मैं फिर कभी 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 को लगातार जाँचते रहने का तरीका

    • सच कहें तो, क्या code पहले भी ज़्यादातर boilerplate नहीं था? शानदार algorithms लिखना अच्छा है, लेकिन आखिर में उसे product में लपेटना पड़ता है, और CRUD, permissions, UI, multi-platform support, payments वगैरह जोड़ने ही पड़ते हैं
    • लोग ऐसे बात कर रहे हैं मानो large language models कोई high-level DSL को भरोसेमंद तरीके से actual code में बदलने वाला transpiler हों, जबकि ऐसा बिल्कुल नहीं है
      ये बेहद 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 सही है या नहीं
    • बीच में अभी कुछ और चरण बाकी हैं
    • यह कुछ वैसा लगता है जैसे अभी-अभी हम उस दौर से निकले हों जब ज़्यादातर assembly ही boilerplate होती थी
  • जब 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 है

    • इस बहस में सब लोग यह भूल जाते हैं कि लक्ष्य यह नहीं है कि vibe coding के आने से एक दिन पहले जो काम हो रहा था, वही काम अब उसी तरह code करके किया जाए
      हम पहले ही अभी record मात्रा में software बना रहे हैं, और यह और तेज़ होगा। हम पहले से ज़्यादा code लिखेंगे, और भले हम बहुत तेज़ हो जाएँ, आखिर में ज़्यादा लोग किसी न किसी रूप में software के साथ काम करेंगे। क्योंकि output बहुत सस्ता हो गया है, और यह Jevons paradox के काफ़ी करीब है
      यह सोचना कि “इस बार सब अलग है” अहंकारी बात है, और बहुत समझदार लोगों के लिए भी यह कल्पना करना मुश्किल होता है कि multi-dimensional exponential growth का मतलब क्या होता है। सिर्फ large language models ही बेहतर नहीं हो रहे
      इसलिए मुझे यह बात सही लगती है
    • तो यही तर्क बोलचाल पर भी लगाकर समझाओ ज़रा
    • वह तो यहाँ तक कह रहा था कि code नहीं, सिर्फ tests review करने चाहिए, जो मुझे लगभग भ्रम जैसा लगता है। ऐसा लगता है जैसे वह सिर्फ hobby projects की बात कर रहा हो जो कभी actual production में deploy ही नहीं होंगे
    • Uncle Bob ने अभी जो बातें कही हैं, उन पर एक tweet भी किया था
  • यही 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 भर से काम नहीं चलेगा

    • वह तो मैंने literally खुद बनाया है
    • तुम्हें क्यों लगता है कि वह व्यंग्य या irony में नहीं बोल रहा था? Tools अभी उस तरह उपयोगी बनने से बहुत दूर हैं जैसा बताया गया है
  • यह ऐसा लगता है जैसे Matrix में यही आदमी Agent हो

    • तुम्हारा मतलब The Architect नहीं था?
  • AI को सही तरह guide करने के लिए top-tier technical depth चाहिए। बस AI से कहते रहो कि code जोड़ता जाए, तो चीज़ maintainable नहीं रहती
    ऊपर से, मैंने अभी तक AI-only तरीके से चलने वाला एक भी market-level product नहीं सुना है। तो ज़रा शांत रहो

  • अगला कदम शायद human brain की भी vibe coding ही होगा

 
nodelay 5 시간 전

reddit की राय काफ़ी नकारात्मक या तंज़ भरी लगती है.
असल में AI की वजह से test coverage, E2E Test जैसी वे चीज़ें, जिन्हें अब तक टालते आए थे, अब पक्के तौर पर आगे बढ़ रही हैं, तो ऐसे माहौल में यह रवैया उल्टा कुछ ज़्यादा ही cynical लगता है.