• जब AI एजेंट कोड लिखने के केंद्र में आ रहे हैं, तो testing, documentation, static typing जैसी पहले की ‘वैकल्पिक’ best practices अब अनिवार्य तत्व बन रही हैं
  • 100% code coverage की मांग की जा रही है, ताकि कोड की हर लाइन वास्तव में verify हो और executable examples से समर्थित हो
  • directory structure और file naming को स्पष्ट बनाकर LLM के लिए codebase को navigate करना आसान किया जाता है, और छोटे-छोटे files की संरचना को प्रोत्साहित किया जाता है
  • तेज़, ephemeral, और concurrent development environments बनाए जाते हैं, ताकि कई agents parallel में काम कर सकें
  • static type systems और automated quality control tools के जरिए ऐसा code ecosystem बनाए रखना मुख्य है, जिस पर AI भरोसा कर सके

AI और ‘अच्छे कोड’ की अनिवार्यता

  • लंबे समय से developers testing, documentation, छोटे modules, static typing को अच्छे कोड का मानक मानते रहे हैं, लेकिन व्यवहार में इन्हें अक्सर छोड़ दिया जाता था
  • लेकिन AI एजेंट अपने-आप कोड को अच्छी तरह व्यवस्थित नहीं कर पाते, इसलिए ये best practices अब अनिवार्य हो गई हैं
  • agents गलत दिशा में काम न करें, इसके लिए स्पष्ट guardrails सेट करना और उन्हें सख्ती से लागू करना ज़रूरी है
  • मजबूत guardrails हों तो LLM सही रास्ते की ओर converge करता है, जबकि अधूरे environment में वह समस्याओं को और बढ़ा देता है

100% code coverage

  • टीमें 100% code coverage को अनिवार्य बना रही हैं; इसका मकसद सिर्फ bugs रोकना नहीं, बल्कि agent द्वारा लिखे गए हर कोड के व्यवहार को verify करना है
  • 95% या 99.99% coverage में untested code का स्रोत अस्पष्ट रह सकता है, लेकिन 100% पर हर unverified line को साफ़ तौर पर पहचाना जा सकता है
  • coverage report को test किए जाने वाले कार्यों की सूची की तरह इस्तेमाल किया जाता है, और LLM को code change करते समय executable example ज़रूर देना चाहिए
  • इस approach के अतिरिक्त लाभों में unreachable code हटाना, edge cases को स्पष्ट करना, और code review की efficiency बढ़ाना शामिल है

namespace और file structure

  • agents file system के माध्यम से codebase को navigate करते हैं, इसलिए directory structure और file names एक महत्वपूर्ण interface की भूमिका निभाते हैं
  • ./billing/invoices/compute.ts जैसा स्पष्ट path, ./utils/helpers.ts की तुलना में कहीं अधिक जानकारी देता है
  • छोटे और अच्छी तरह परिभाषित file units को प्राथमिकता देनी चाहिए, ताकि LLM पूरे file को context में load कर सके और performance degradation से बचा जा सके
  • ऐसी संरचना agent की खोज-गति और accuracy दोनों को बेहतर बनाती है

तेज़, ephemeral, और concurrent development environments

  • पारंपरिक single development environment की जगह, agent-आधारित development में कई processes को parallel में manage करने वाला मॉडल अपनाया जा रहा है
  • Fast: testing और verification प्रक्रियाएँ तेज़ चलनी चाहिए; टीमें 10,000 से अधिक assertions को 1 मिनट के भीतर पूरा करने के लिए optimization कर रही हैं
    • उच्च स्तर की parallelization, मजबूत isolation, और third-party call caching layer के जरिए गति हासिल की जाती है
  • Ephemeral: new-feature <name> कमांड से 1–2 सेकंड में नया environment तैयार, auto-configuration और agent execution के साथ
    • यदि manual setup की ज़रूरत पड़े, तो उपयोग की आवृत्ति तेज़ी से गिरती है; इसलिए पूर्ण automation मुख्य है
  • Concurrent: कई development environments को एक साथ चलाने के लिए ports, DB, cache आदि में conflict रोकने वाली settings चाहिए
    • Docker का उपयोग किया जा सकता है, या environment variables के आधार पर isolation कॉन्फ़िगर किया जा सकता है

end-to-end type system और automated quality control

  • LLM की स्वतंत्रता कम करने और consistent quality बनाए रखने के लिए, जितनी संभव हों उतनी best practices को automate किया जाता है
  • auto linter और formatter को सख्ती से configure किया जाता है, ताकि LLM के काम पूरा करते ही automatic fixes लागू हो जाएँ
  • static typed language के उपयोग की सिफारिश की जाती है, खासकर TypeScript के मजबूत type system के साथ
    • UserId, WorkspaceSlug, SignedWebhookPayload जैसे अर्थपूर्ण type names कोड के इरादे को स्पष्ट रूप से व्यक्त करते हैं
  • OpenAPI के जरिए frontend और backend के बीच type consistency बनाए रखी जाती है
  • Postgres के type system और triggers का उपयोग करके data integrity सुनिश्चित की जाती है, और Kysely से type-safe client बनाया जाता है
  • सभी third-party clients भी सटीक type definitions के साथ होने चाहिए, या उन्हें wrap करके इस्तेमाल किया जाना चाहिए

निष्कर्ष: AI युग में code quality की नई परिभाषा

  • agents थकते नहीं और बेहतरीन coders हो सकते हैं, लेकिन उनका प्रदर्शन environment की quality पर निर्भर करता है
  • ‘अच्छा कोड’ अब सिर्फ एक विकल्प नहीं, बल्कि AI के सही ढंग से काम करने की पूर्व-शर्त है
  • शुरुआती setup बोझिल लग सकता है, लेकिन यह बहुत समय से टलता आया एक आवश्यक निवेश है
  • development leadership के समर्थन के साथ, AI-friendly codebase बनाने को लक्ष्य बनाना चाहिए

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.