24 पॉइंट द्वारा GN⁺ 2025-04-05 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • पिछले कुछ महीनों में व्यक्तिगत प्रोजेक्ट्स और कार्यस्थल के काम, दोनों में AI-आधारित coding tools का प्रयोगात्मक उपयोग किया गया
  • नतीजे बहुत सकारात्मक रहे, और development time में कमी तथा output quality में सुधार दोनों का अनुभव हुआ
  • दूसरी ओर, कुछ डेवलपर्स ने यह भी साझा किया कि AI tools उतना अच्छा काम नहीं करते, यानी नकारात्मक फीडबैक भी मिला
  • इस अनुभव से यह भरोसा और मजबूत हुआ कि AI-सहायित software development में उत्पादकता के लिहाज़ से अगले स्तर की छलांग की क्षमता है
  • लेकिन इसके लिए बिना आलोचनात्मक सोच के स्वीकार करने के बजाय सही दृष्टिकोण और संतुलित approach की ज़रूरत है
  • इस लेख के माध्यम से प्रत्यक्ष अनुभव से मिली best practices साझा की जा रही हैं, ताकि
    AI tools को समझदारी से अपनाने की प्रक्रिया को व्यापक developer community में थोड़ा भी तेज़ किया जा सके

वर्तमान AI coding tools का उपयोग परिदृश्य

  • Twitter पर जो देखा गया, उसके अनुसार गैर-विशेषज्ञ डेवलपर्स के बीच AI coding tools बहुत लोकप्रिय हैं
    • वे AI की मदद से नए प्रोजेक्ट्स आज़मा रहे हैं और आनंद के साथ development सीख रहे हैं
  • यह रुझान सकारात्मक है और नए user base के लिए तकनीक में प्रवेश की बाधा कम करने में योगदान देता है
  • लेकिन यह AI tools की संभावनाओं का केवल एक पहलू है,
    • सीनियर डेवलपर्स जैसे पेशेवर संदर्भों में भी AI बहुत बड़ा मूल्य दे सकता है

सीनियर डेवलपर की ताकत

  • अभी यह क्षेत्र शुरुआती विकास चरण में है, लेकिन अब तक का निष्कर्ष यह है:
    • सीनियर डेवलपर्स AI tools का सबसे प्रभावी उपयोग करने की स्थिति में हैं
    • वे केवल मदद लेने तक सीमित नहीं रहते, बल्कि इनका अनुकूलित उपयोग कर सकते हैं
  • मुख्य बात यह है:

    AI युग में कुछ पुराना लगने वाला development अनुभव और project संचालन का know-how ही,
    इन tools का सर्वोत्तम उपयोग करने की बुनियाद है

  • यदि LLM-आधारित programming agent की तुलना की जाए,
    • तो वह बहुत अधिक programming knowledge वाला सीनियर है, लेकिन मौजूदा संदर्भ में design understanding की कमी वाला जूनियर अधिक लगता है
  • इसलिए उन्हें वास्तविक काम सौंपने के लिए,
    • रणनीतिक तैयारी और मार्गदर्शन अनिवार्य है
    • और यह भूमिका निभाने के लिए सबसे उपयुक्त व्यक्ति सीनियर डेवलपर ही है
  • निष्कर्षतः, AI tools जैसी cutting-edge technology भी पारंपरिक development practices और अनुभव के आधार पर ही सबसे प्रभावी ढंग से इस्तेमाल की जा सकती है

सफल AI coding session के लिए तीन मुख्य तत्व

  • AI के साथ सहयोग करके अच्छे नतीजे पाने के लिए ये तीन तत्व महत्वपूर्ण हैं:
    • सुसंगठित requirements documentation (Well-structured Requirements)
    • tool-आधारित quality guard rails (Tool-based Guard Rails)
    • file-based keyframing तकनीक (File-based Keyframing)
  • विस्तृत चर्चा से पहले, AI का उपयोग करने वाले वास्तविक project examples पेश किए गए हैं
    • Green-field project: ऐसा project जो शुरुआत से नया बनाया जाए
    • Brown-field project: ऐसा project जिसमें मौजूदा codebase पर नई functionality जोड़ी जाए
  • दोनों ही मामलों में उन उदाहरणों पर ध्यान है, जहाँ AI ने लगभग पूरी implementation स्वयं संभाली
    • केवल autocomplete सहायक या conversational helper के रूप में AI नहीं,
      बल्कि agent mode में वास्तविक काम करने के तरीके पर फोकस है
  • इस्तेमाल किया गया tool Cursor है,
    • Anthropic के Claude Sonnet 3.7 model पर आधारित
    • यह पूरे project files को सीधे modify कर सकता है और संबंधित commands भी चला सकता है

उदाहरण 1: Platform Problem Monitoring (Green-field project)

  • Cursor और Claude का उपयोग करके नई application Platform Problem Monitoring को implement किया गया
  • यह app हर घंटे ELK के Elasticsearch server से जुड़कर error messages इकट्ठा करता है,
    और web platform की वर्तमान समस्या स्थिति का सार बताने वाली structured email report भेजता है
  • पूरी implementation AI ने की, सीधे लिखी गई कोई code नहीं थी
  • लेखक Python भाषा में सहज नहीं हैं,
    • लेकिन architecture, operations, और best practices की व्यापक समझ के कारण काम सुचारु रूप से आगे बढ़ा
    • यह project अनजान tech stack में AI कितनी मदद कर सकता है, इसका प्रयोग करने का अवसर भी था

ध्यान दें: code quality issues
HackerNews चर्चा में logging setup, custom config parsing, race conditions जैसी code quality समस्याएँ बताई गईं
इस project का लक्ष्य production code से अधिक तेज़ prototyping था,
और long-term maintenance या language conventions से अधिक functionality implementation पर ध्यान दिया गया

उदाहरण 2: Process Management UI Integration (Brown-field project)

  • यह मौजूदा PHP/Symfony-आधारित legacy backend functionality में UI integrate करने का मामला था
  • backend cron-आधारित CLI commands से चलता था, और कोई UI मौजूद नहीं था
  • इस functionality को आधुनिक Symfony application में integrate करना था
    • यानी एक UI-friendly structure का उपयोग करना, जिसमें आधुनिक codebase, testing setup, और style guide मौजूद हों
  • मुख्य काम ये थे:
    • HTTP API के माध्यम से legacy system के साथ communication
    • systems के बीच data transfer implement करना
    • UI design system के अनुरूप screen बनाना
    • shared Symfony bundle में API client implement करना
  • keyframe files को छोड़कर, पूरी implementation AI ने स्वतः की

दोनों projects से मिली मुख्य insights

  1. Green-field project: अपरिचित tech stack में भी AI की मदद से functional app बनाया जा सकता है
  2. Brown-field project: UI implementation परिचित न होने पर भी, AI की वजह से functionality जल्दी पूरी हुई
  • इन दोनों उदाहरणों से यह महसूस हुआ कि AI tools व्यक्तिगत उत्पादकता और पूरी टीम के workflow में वास्तविक बदलाव ला सकते हैं
  • लेकिन AI से बड़ा समय-बचत लाभ पाने के लिए शुरुआती setup investment और रणनीतिक approach आवश्यक है
    • ठीक वैसे ही जैसे किसी सक्षम junior developer को सही दिशा देकर सर्वश्रेष्ठ परिणाम लिए जाते हैं

सुसंगठित requirements लिखने का महत्व

  • सफल AI coding session की कुंजी व्यवस्थित और व्यापक requirements document है
  • वास्तविक project Platform Problem Monitoring में session शुरू होने से पहले REQUIREMENTS.md document लिखा गया
  • यह document कुल 371 lines का है और इसकी hierarchy इस प्रकार है
    • सबसे ऊपरी स्तर: मुख्य requirement का एक-पंक्ति सार
    • उच्च स्तर: use cases और development motivation
    • मध्य स्तर: processes और working method
    • मध्य स्तर: architecture, tech stack, constraints
    • निचला स्तर: inputs/outputs/side effects के आधार पर विशिष्ट task steps का विस्तृत विवरण
  • ऐसा संरचित document AI को भी स्पष्ट framework देता है, जिससे अधिक सटीक परिणाम निकलते हैं
  • document लिखने में समय और मेहनत लगती है, लेकिन यह सफल implementation के लिए आवश्यक निवेश है
  • software development की एक कहावत है:

    “6 हफ्तों की implementation, 2 घंटे की planning बचाती है”

    • यह व्यंग्यपूर्ण अभिव्यक्ति है, लेकिन इसका सार यह है कि implementation चरण की अक्षमता अक्सर planning की कमी से आती है
  • इसलिए project की शुरुआत हमेशा keyboard से नहीं, whiteboard से होनी चाहिए, और AI के साथ सहयोग में भी यही सिद्धांत लागू होता है
  • व्यवहार में Cursor session की शुरुआत इस तरह की जाती है:
    1. AI से requirements का स्वयं summary बनवाना
    2. उससे execution plan तैयार करवाना
    3. अस्पष्ट हिस्सों पर सवाल पूछने के लिए प्रेरित करना
  • इस validation चरण के बाद ही AI को “Agent” mode में बदलकर implementation शुरू की जाती है

tool-आधारित quality guard rails सेट करना

  • यदि requirements document destination तय करता है, तो quality guard rails उस destination तक सबसे छोटा रास्ता बनाए रखने में मदद करते हैं
  • जैसे development के दौरान real-time feedback system महत्वपूर्ण होता है, वैसे ही static analysis tools AI के लिए भी बहुत उपयोगी हैं
  • उदाहरण के लिए, launch के बाद customer inquiry से null check छूटने का पता चलने की तुलना में development चरण में पहले ही पकड़ लेना कहीं अधिक प्रभावी है
  • इसलिए AI coding session शुरू करने से पहले नीचे दिए गए quality assurance tools अवश्य सेट किए जाते हैं
    • Makefile उदाहरण के आधार पर:
      • black, isort: code formatting
      • ruff: linting
      • mypy: type checking
      • bandit: security analysis
      • पूरा test suite
  • Claude-आधारित AI agent इन tools को पहचान और उपयोग कर सकता है
    • उदाहरण: type check fail होने पर AI स्वयं code ठीक करके उसे pass कराने की कोशिश करता है
  • functional verification के लिए curl commands से API test requests भी दी गईं
    • AI का स्वयं endpoints call करना, responses जाँचना, और code सुधारना काफ़ी प्रभावशाली था
  • इस तरह के tool-आधारित guard rails AI को भरोसेमंद परिणाम देने में मदद करने वाले अनिवार्य घटक हैं

file-based keyframing तकनीक

  • AI रचनात्मक implementation में मज़बूत है, लेकिन code structure या file organization के मामले में उसमें दिशात्मक स्पष्टता की कमी हो सकती है
    • इसे पूरा करने के लिए इस्तेमाल की जाने वाली रणनीति है file-based keyframing
  • यह तकनीक animation production की keyframe पद्धति से प्रेरित है:
    • एक अनुभवी animator पहले महत्वपूर्ण दृश्य (keyframes) बनाता है और बाकी काम सहायक टीम भरती है
    • इससे quality बनाए रखते हुए कार्यक्षमता बढ़ाई जा सकती है
  • वास्तविक AI coding projects में implementation से पहले खाली shell files (stub files) पहले से बना दी जाती हैं
    • उदाहरण: API endpoints, API clients, controller classes, Twig templates आदि
  • ये keyframe files AI को निम्नलिखित महत्वपूर्ण context information देती हैं
    • project की file organization शैली
    • namespace structure
    • naming conventions
    • consistent code patterns
  • prompt में पूरी संरचना समझाने के बजाय, codebase के भीतर ही hints देकर AI की reasoning accuracy बढ़ाई जा सकती है
  • यह approach AI युग में भी “naming” के सिद्धांत की निरंतर प्रासंगिकता को रेखांकित करती है
    • AI भाषा के आधार पर काम करता है, इसलिए इरादे और अर्थ से भरा हुआ text बेहतर परिणाम लाता है

वास्तविक उदाहरण: subscription contract dashboard UI implementation में एकीकृत उपयोग

  • ऊपर बताए गए तीनों मुख्य सिद्धांतों को एक project में एकीकृत रूप से लागू करने वाला व्यावहारिक उदाहरण प्रस्तुत किया गया है:
    • सुसंगठित requirements documentation
    • tool-आधारित quality guard rails
    • file-based keyframing तकनीक
  • project overview

    • लक्ष्य: platform के भीतर subscription contract जानकारी को table format में visualise करने वाला read-only web UI dashboard बनाना
    • परिवेश: multi-codebase (monorepo) environment
      • backend-app: Symfony 5 application, data रखता है
      • janus-christophorus: Symfony 7 application, UI प्रदान करता है
      • janus-shared-bundle: API client implementation शामिल
      • janus-webui-bundle: style guide, Tailwind configuration, Twig templates शामिल
  • requirements structure

    • API के माध्यम से backend data पढ़ना और frontend UI में दिखाना
    • वास्तविक API endpoints के अलावा demo mode support भी (testing के लिए fake data)
    • UI को style guide के अनुरूप implement करना
    • हर layer में ये components शामिल हैं:
      • API endpoint
      • API client
      • Presentation layer service class
      • controller और Twig template
  • AI session के लिए पूर्व तैयारी

    • सभी codebases में file-based keyframing तरीके से खाली files पहले से बनाई गईं
    • मौजूदा style guide, navigation service, और समान functionality को AI के reference material के रूप में दिया गया
    • हर codebase में quality tools (PHPStan आदि) चलाए जा सकते थे
      • उदाहरण: .dxcli/dxcli.sh quality script का उपयोग
  • एकीकृत सिद्धांतों का उपयोग कैसे किया गया

    • requirements व्यवस्थित करना: prompt में विस्तृत requirements और system structure समझाना
    • guard rails देना: code inspection tools के उपयोग का निर्देश शामिल करना
    • keyframes देना: implementation target files पहले से बनाकर AI को सही स्थान और context में code लिखने देना
  • मुख्य लक्ष्य

    • जल्दी से contract information का समग्र view देने वाला UI प्रदान करना
    • वास्तविक implementation में AI सवाल पूछ सके और plan बना सके, इसके लिए स्पष्ट structure और hints देना
  • यह उदाहरण अच्छी तरह दिखाता है कि AI tools और मानवीय अनुभव का सहयोग कितनी शक्तिशाली synergy पैदा कर सकता है

निष्कर्ष: AI tools + मानवीय अनुभव = सबसे बेहतरीन संयोजन

  • सुसंगठित requirements, tool-आधारित guard rails, और file-based keyframes देने से
    AI की शक्तिशाली क्षमताओं का उपयोग करते हुए भी code quality और architecture consistency बनाए रखी जा सकती है
  • ये पारंपरिक development practices AI युग में भी उतनी ही प्रासंगिक हैं,
    बल्कि सीनियर डेवलपर के अनुभव और अंतर्दृष्टि के कारण और अधिक प्रभावशाली हो जाती हैं
  • अंततः, AI केवल एक tool है, और
    उसे सही तरह से उपयोग करने वाला मानवीय अनुभव और कौशल आज पहले से कहीं अधिक महत्वपूर्ण है

1 टिप्पणियां

 
GN⁺ 2025-04-05
Hacker News राय
  • एक अनुभवी Python डेवलपर ने एक खास फ़ाइल की समीक्षा के बाद बताया कि वह एक जूनियर software engineer की गलतियों से भरी हुई है

    • module level पर root logger सेट करने से लेकर, standard library के config file parser का उपयोग न करके उसे खुद लिखने तक
    • load_json की समस्या, जो फ़ाइल के मौजूद होने की जाँच करने के बाद ऐसे आगे बढ़ता है मानो फ़ाइल निश्चित रूप से मौजूद हो
    • कुल मिलाकर कोड की गुणवत्ता कमज़ोर होने का उल्लेख
  • 25 साल के अनुभव वाला एक hobby coder महसूस करता है कि LLM और vibecoding रचनात्मकता को कम करते हैं

    • उसे नए tools सीखना और इस्तेमाल करना पसंद है, और वह marketable solutions बनाना चाहता है
    • LLM का इस्तेमाल करने पर वह अपनी कल्पना की चीज़ें जल्दी बना सकता है, लेकिन खुद बनाने की संतुष्टि कम हो जाती है
    • वह कहता है कि पिछले 1 साल में वह कोई बड़ा project नहीं बना पाया, इसलिए मज़ा भी कम हो गया है
  • 40 साल से कम उम्र का एक डेवलपर महसूस करता है कि AI हाथ का काम कम करने वाले tool के रूप में उपयोगी है

    • वह गंभीर tendinitis से गुज़र रहा है, और code autocomplete इस्तेमाल करने के बाद सुधार का अनुभव किया है
    • उसे चिंता है कि "vibe coding" क्या mainstream बन जाएगा, और उसे डर है कि सिर्फ अनुभवी डेवलपर ही संदर्भ समझ पाएँगे
  • एक उपयोगकर्ता जिसे AI से code generation अक्षम लगता है

    • prompts लिखने और code errors को trace करने में बहुत समय लगता है
    • वह कहता है कि खुद कोड लिखना मानसिक शांति देता है
  • एक उपयोगकर्ता को लगता है कि AI नए projects (greenfield) में उपयोगी है, लेकिन मौजूदा projects (brownfield) में अक्षम है

    • वह बताता है कि AI को existing code के साथ integration में कठिनाई होती है
  • project शुरू करते समय Markdown फ़ाइल में योजना बनाने वाला एक डेवलपर

    • वह Rust का उपयोग करके compile-time checks के ज़रिए code की शुद्धता सुनिश्चित करना चाहता है
    • AI द्वारा बनाए गए Rust code में अधिक errors पकड़ पाने से वह संतुष्ट है
  • एक उपयोगकर्ता जो मानता है कि AI युग में software engineering का अनुभव महत्वपूर्ण है

    • उसे चिंता है कि LLM पर निर्भर रहने से अनुभव कमजोर पड़ सकता है
  • एक उपयोगकर्ता जो information theory की "surprise" अवधारणा को LLM पर लागू करना चाहता है

    • अगर LLM द्वारा बनाया गया code उम्मीद से अलग हो, तो errors पहचानना मुश्किल हो सकता है
    • वह इसे "exploration" के रूप में फिर से सोचकर नए विषय सीखने का अवसर बनाना चाहता है
  • एक उपयोगकर्ता जो test-driven development (TDD) के ज़रिए AI-generated code को guide करना चाहता है

    • TDD एक contract की तरह काम करता है, जिससे AI या manual coding में से किसी एक को चुना जा सकता है
  • एक उपयोगकर्ता जिसे चिंता है कि AI का मौजूदा रूप software के भविष्य की दिशा से मेल नहीं खाता

    • वह कहता है कि Java की सफलता का एक कारण JDK के साथ मिला source code था
    • वह बताता है कि AI code की clarity और discoverability को बेहतर नहीं बनाता
  • एक उपयोगकर्ता जिसे लगता है कि AI बहुत तेज़ी से आगे बढ़ रहा है, इसलिए यह भारी लग सकता है

    • अनुभवी डेवलपर AI का उपयोग करके नए applications की योजना बना सकते हैं
    • वह मानता है कि personal brand बनाना महत्वपूर्ण है, और लोगों को अपने apps खुद बनाने चाहिए