Over the last two years, my team at Work & Co and I have been testing out and gradually integrating AI coding tools like Copilot, Cursor, Claude, and ChatGPT to help us ship web experiences that are used by the masses. बेशक, कुछ प्रारंभिक संदेह और कुछ अहा क्षणों के बाद, विभिन्न एआई उपकरणों ने मेरे दैनिक उपयोग में अपना रास्ता खोज लिया है। समय के साथ, उन अनुप्रयोगों की सूची जहां हमने पाया कि एआई को अपने कब्जे में लेने देना उचित है, बढ़ने लगी, इसलिए मैंने जिसे मैं "जिम्मेदार डेवलपर" कहता हूं, उसके लिए एआई टूल के लिए कुछ व्यावहारिक उपयोग के मामलों को साझा करने का फैसला किया। एक जिम्मेदार डेवलपर से मेरा क्या तात्पर्य है? हमें यह सुनिश्चित करना होगा कि हम अपने हितधारकों और ग्राहकों की अपेक्षा के अनुरूप गुणवत्तापूर्ण कोड प्रदान करें। हमारा योगदान (यानी, पुल अनुरोध) हमारे सहयोगियों पर बोझ नहीं बनना चाहिए जिन्हें हमारे काम की समीक्षा और परीक्षण करना होगा। इसके अलावा, यदि आप किसी कंपनी के लिए काम करते हैं: हमारे द्वारा उपयोग किए जाने वाले उपकरणों को हमारे नियोक्ता द्वारा अनुमोदित किया जाना आवश्यक है। सुरक्षा और गोपनीयता जैसे संवेदनशील पहलुओं को ठीक से संभालने की आवश्यकता है: नीति अनुमोदन के बिना रहस्य, ग्राहक डेटा (पीआईआई), या मालिकाना कोड को टूल में पेस्ट न करें। इसे इंटरनेट पर किसी अजनबी के कोड की तरह समझें। हमेशा परीक्षण और सत्यापन करें. ध्यान दें: यह आलेख VSCode या कर्सर के अंदर कोपायलट जैसे AI कोडिंग टूल के साथ कुछ बहुत ही बुनियादी परिचितता मानता है। यदि यह सब आपके लिए बिल्कुल नया और अपरिचित लगता है, तो जीथब कोपायलट वीडियो ट्यूटोरियल आपके लिए एक शानदार शुरुआती बिंदु हो सकता है।
एआई कोडिंग टूल्स के उपयोगी अनुप्रयोग नोट: निम्नलिखित उदाहरण मुख्य रूप से रिएक्ट, व्यू, स्वेल्ट या एंगुलर जैसे जावास्क्रिप्ट-आधारित वेब अनुप्रयोगों में काम करने पर केंद्रित होंगे। एक अपरिचित कोडबेस की समझ प्राप्त करना स्थापित कोडबेस पर काम करना असामान्य नहीं है, और एक बड़े विरासत कोडबेस में शामिल होना डराने वाला हो सकता है। Simply open your project and your AI agent (in my case, Copilot Chat in VSCode) and start asking questions just like you would ask a colleague. सामान्य तौर पर, मैं किसी भी एआई एजेंट से वैसे ही बात करना पसंद करता हूं जैसे मैं किसी साथी इंसान से करता हूं। यहां एक अधिक परिष्कृत उदाहरण संकेत दिया गया है: "मुझे एक उच्च-स्तरीय आर्किटेक्चर अवलोकन दें: एंट्रीपॉइंट, रूटिंग, ऑथ, डेटा लेयर, बिल्ड टूलिंग। फिर क्रम से पढ़ने के लिए 5 फाइलों को सूचीबद्ध करें। स्पष्टीकरण को परिकल्पना के रूप में मानें और संदर्भित फ़ाइलों पर जाकर पुष्टि करें।"
आप अनुवर्ती प्रश्न पूछना जारी रख सकते हैं जैसे "रूटिंग विस्तार से कैसे काम करती है?" या "प्रमाणीकरण प्रक्रिया और विधियों के बारे में मुझसे बात करें" और यह आपको एक अपरिचित कोडबेस के अंधेरे में कुछ रोशनी चमकाने के लिए सहायक दिशाओं की ओर ले जाएगा। निर्भरताओं को अपग्रेड करते समय परिवर्तनों को तोड़ने का प्रयास करना एनपीएम पैकेजों को अपडेट करना, खासकर जब वे ब्रेकिंग बदलावों के साथ आते हैं, थकाऊ और समय लेने वाला काम हो सकता है, और आपको उचित मात्रा में रिग्रेशन डीबग करना पड़ सकता है। मुझे हाल ही में डेटा विज़ुअलाइज़ेशन लाइब्रेरी प्लॉटली.जेएस को संस्करण 2 से 3 तक एक प्रमुख रिलीज़ संस्करण में अपग्रेड करना पड़ा, और उसके परिणामस्वरूप, कुछ ग्राफ़ में अक्ष लेबलिंग ने काम करना बंद कर दिया। मैंने चैटजीपीटी से पूछा: "मैंने अपने एंगुलर प्रोजेक्ट को अपडेट किया है जो प्लॉटली का उपयोग करता है। मैंने प्लॉटली.जेएस - डिस्ट पैकेज को संस्करण 2.35.2 से 3.1.0 तक अपडेट किया है - और अब एक्स और वाई अक्ष पर लेबल चले गए हैं। क्या हुआ?"
एजेंट तुरंत समाधान लेकर वापस आया (नीचे स्वयं देखें)। ध्यान दें: मैंने फिक्स शिपिंग से पहले अभी भी आधिकारिक माइग्रेशन गाइड के खिलाफ स्पष्टीकरण की पुष्टि की है।
फ़ाइलों में रिफ़ैक्टरों की सुरक्षित रूप से प्रतिकृति बनाना बढ़ते कोडबेस निश्चित रूप से कोड समेकन के अवसरों को उजागर करते हैं। उदाहरण के लिए, आप उन फ़ाइलों में कोड दोहराव देखते हैं जिन्हें एकल फ़ंक्शन या घटक में निकाला जा सकता है। परिणामस्वरूप, आप एक साझा घटक बनाने का निर्णय लेते हैं जिसे इसके बजाय शामिल किया जा सकता है और उस रिफैक्टर को एक फ़ाइल में निष्पादित किया जा सकता है। अब, अपनी शेष फ़ाइलों में उन परिवर्तनों को मैन्युअल रूप से करने के बजाय, आप अपने एजेंट से आपके लिए रिफैक्टर को रोल आउट करने के लिए कहते हैं। एजेंट आपको संदर्भ के रूप में एकाधिक फ़ाइलों का चयन करने देते हैं। एक बार एक फ़ाइल के लिए रिफैक्टर पूरा हो जाने के बाद, मैं रिफैक्टर की गई और अछूती दोनों फाइलों को संदर्भ में जोड़ सकता हूं और एजेंट को इस तरह की अन्य फाइलों में बदलाव करने के लिए कह सकता हूं: "मैंने फाइल ए में जो बदलाव किए हैं, उन्हें फाइल बी में भी दोहराएं"। अपरिचित प्रौद्योगिकियों में सुविधाएँ लागू करना एआई कोडिंग टूल का उपयोग करना मेरे पसंदीदा अहा-क्षणों में से एक था जब इसने मुझे जीएलएसएल में एक काफी जटिल एनिमेटेड ग्रेडिएंट एनीमेशन बनाने में मदद की, एक ऐसी भाषा जिससे मैं काफी अपरिचित रहा हूं। एक हालिया प्रोजेक्ट पर, हमारे डिज़ाइनर एक 3डी ऑब्जेक्ट पर लोडिंग स्थिति के रूप में एक एनिमेटेड ग्रेडिएंट लेकर आए। मुझे वास्तव में यह अवधारणा पसंद आई और मैं अपने ग्राहकों को कुछ अनोखा और रोमांचक देना चाहता था।समस्या: मेरे पास इसे लागू करने के लिए केवल दो दिन थे, और जीएलएसएल में सीखने की अवस्था काफी तीव्र है। फिर, एक एआई टूल (इस मामले में, चैटजीपीटी) काम आया, और मैंने इसे मेरे लिए एक स्टैंडअलोन HTML फ़ाइल बनाने के लिए प्रेरित करना शुरू कर दिया जो एक कैनवास और एक बहुत ही सरल एनिमेटेड रंग ढाल प्रस्तुत करता है। कदम दर कदम, मैंने एआई को इसमें और अधिक चालाकी जोड़ने के लिए प्रेरित किया जब तक कि मैं एक अच्छे परिणाम पर नहीं पहुंच गया ताकि मैं शेडर को अपने वास्तविक कोडबेस में एकीकृत करना शुरू कर सकूं। अंतिम परिणाम: हमारे ग्राहक बहुत खुश थे, और हमने एआई की बदौलत कम समय में एक जटिल सुविधा प्रदान की। लेखन परीक्षण मेरे अनुभव में, यूनिट और एकीकरण परीक्षणों के उचित सूट को लगातार लिखने और बनाए रखने के लिए परियोजनाओं पर शायद ही कभी पर्याप्त समय होता है, और इसके शीर्ष पर, कई डेवलपर्स वास्तव में परीक्षण लिखने के कार्य का आनंद नहीं लेते हैं। अपने एआई सहायक को आपके लिए परीक्षण स्थापित करने और लिखने के लिए प्रेरित करना पूरी तरह से संभव है और इसे कम समय में किया जा सकता है। बेशक, आपको, एक डेवलपर के रूप में, अभी भी यह सुनिश्चित करना चाहिए कि आपके परीक्षण वास्तव में आपके एप्लिकेशन के महत्वपूर्ण हिस्सों पर नज़र डालें और समझदार परीक्षण सिद्धांतों का पालन करें, लेकिन आप परीक्षणों के लेखन को हमारे एआई सहायक को "आउटसोर्स" कर सकते हैं। उदाहरण संकेत: "जेस्ट का उपयोग करके इस फ़ंक्शन के लिए यूनिट परीक्षण लिखें। खुश पथ, किनारे के मामले और विफलता मोड को कवर करें। बताएं कि प्रत्येक परीक्षण क्यों मौजूद है।"
आप अपने एजेंट को दिशानिर्देशों के रूप में परीक्षण गुरु केंट सी. डोड्स की परीक्षण सर्वोत्तम प्रथाओं को भी दे सकते हैं, जैसे नीचे:
आंतरिक टूलींग कुछ हद तक पहले बताए गए शेडर उदाहरण के समान, मुझे हाल ही में एक कोडबेस में कोड डुप्लिकेशन का विश्लेषण करने और रिफैक्टर से पहले और बाद में तुलना करने का काम सौंपा गया था। यदि आप फ़ाइलों की मैन्युअल रूप से तुलना करने का समय लेने वाला मार्ग नहीं अपनाना चाहते हैं तो निश्चित रूप से यह कोई मामूली काम नहीं है। कोपायलट की मदद से, मैंने एक स्क्रिप्ट बनाई जिसने मेरे लिए कोड डुप्लिकेशन का विश्लेषण किया, आउटपुट को एक तालिका में व्यवस्थित और ऑर्डर किया, और इसे एक्सेल में निर्यात किया। फिर मैंने इसे एक कदम आगे बढ़ाया. जब हमारा कोड रिफैक्टर पूरा हो गया, तो मैंने एजेंट को मेरी मौजूदा एक्सेल शीट को आधार रेखा के रूप में लेने, अलग-अलग कॉलम में दोहराव की वर्तमान स्थिति जोड़ने और डेल्टा की गणना करने के लिए प्रेरित किया। बहुत समय पहले लिखे गए कोड को अपडेट किया जा रहा है हाल ही में, मेरे एक पुराने ग्राहक ने मुझसे संपर्क किया, क्योंकि समय के साथ, उसकी वेबसाइट पर कुछ सुविधाएं अब ठीक से काम नहीं कर रही थीं। पकड़: वेबसाइट लगभग दस साल पहले बनाई गई थी, और जावास्क्रिप्ट और एससीएसएस रिक्वायरजेएस जैसे पुराने संकलन टूल का उपयोग कर रहे थे, और सेटअप के लिए नोड.जेएस के पुराने संस्करण की आवश्यकता थी जो मेरे 2025 मैकबुक पर भी नहीं चलेगा। पूरी बिल्ड प्रक्रिया को हाथ से अपडेट करने में मुझे कई दिन लग जाते, इसलिए मैंने एआई एजेंट को संकेत देने का फैसला किया, "क्या आप जेएस और एससीएसएस बिल्ड प्रक्रिया को वाइट की तरह लीन 2025 स्टैक में अपडेट कर सकते हैं?" यह निश्चित रूप से हुआ, और एजेंट के साथ लगभग एक घंटे के शोधन के बाद, मैंने अपने SCSS और JS बिल्ड को Vite में बदल दिया, और मैं वास्तविक बगफिक्सिंग पर ध्यान केंद्रित करने में सक्षम हो गया। अपनी निर्माण प्रक्रिया में ऐसे अभिन्न परिवर्तन करते समय आउटपुट और संकलित फ़ाइलों को ठीक से सत्यापित करना सुनिश्चित करें। Summarizing And Drafting क्या आप किसी प्रतिबद्ध संदेश के लिए अपने सभी हालिया कोड परिवर्तनों को एक वाक्य में संक्षेप में प्रस्तुत करना चाहेंगे, या आपके पास प्रतिबद्धताओं की एक लंबी सूची है और आप उन्हें तीन बुलेट बिंदुओं में सारांशित करना चाहेंगे? कोई समस्या नहीं, एआई को इसका ध्यान रखने दीजिए, लेकिन कृपया इसे प्रूफ़रीड करना सुनिश्चित करें। एक उदाहरण संकेत किसी साथी मानव को संदेश भेजने जितना ही सरल है: "कृपया मेरे हाल के परिवर्तनों को संक्षिप्त बुलेट बिंदुओं में सारांशित करें"। यहां मेरी सलाह यह होगी कि लिखने के लिए जीपीटी का उपयोग सावधानी से करें, और कोड की तरह, कृपया भेजने या सबमिट करने से पहले आउटपुट की जांच करें। सिफ़ारिशें और सर्वोत्तम प्रथाएँ प्रेरित करना एआई का उपयोग करने का एक गैर-स्पष्ट लाभ यह है कि आपके संकेत जितने अधिक विशिष्ट और अनुरूप होंगे, आउटपुट उतना ही बेहतर होगा। एआई एजेंट को प्रेरित करने की प्रक्रिया हमें लिखने और कोड करने से पहले यथासंभव विशेष रूप से अपनी आवश्यकताओं को तैयार करने के लिए मजबूर करती है। यही कारण है कि, एक सामान्य नियम के रूप में, मैं आपके संकेत के साथ यथासंभव विशिष्ट होने की अत्यधिक अनुशंसा करता हूं। रीमिक्स के सह-लेखक रयान फ्लोरेंस, वाक्य के साथ अपना प्रारंभिक संकेत समाप्त करके इस प्रक्रिया को बेहतर बनाने का एक सरल लेकिन शक्तिशाली तरीका सुझाते हैं: "शुरू करने से पहले, क्या आपके पास मेरे लिए कोई प्रश्न है?"
इस बिंदु पर, एआई आमतौर पर उपयोगी प्रश्नों के साथ वापस आता है जहां आप अपने विशिष्ट इरादे को स्पष्ट कर सकते हैं, एजेंट को आपके कार्य के लिए अधिक अनुरूप दृष्टिकोण प्रदान करने के लिए मार्गदर्शन कर सकते हैं।
संस्करण नियंत्रण का उपयोग करें और सुपाच्य टुकड़ों में काम करें Using version control like git not only comes in handy when collaborating as a team on a single codebase but also to provide you as anआपात्कालीन स्थिति में वापस लौटने के लिए स्थिर बिंदुओं के साथ व्यक्तिगत योगदानकर्ता। Due to its non-deterministic nature, AI can sometimes go rogue and make changes that are simply not helpful for what you are trying to achieve and eventually break things irreparably. अपने काम को कई प्रतिबद्धताओं में विभाजित करने से आपको स्थिर बिंदु बनाने में मदद मिलेगी, जिसे आप चीजें किनारे होने की स्थिति में वापस कर सकते हैं। और आपके टीम के साथी भी आपको धन्यवाद देंगे, क्योंकि जब यह शब्दार्थ की दृष्टि से अच्छी तरह से संरचित भागों में विभाजित हो जाएगा तो उन्हें आपके कोड की समीक्षा करने में आसानी होगी। गहनता से समीक्षा करें यह एक सामान्य सर्वोत्तम अभ्यास है, लेकिन मेरी राय में, विकास कार्यों के लिए एआई टूल का उपयोग करते समय यह और भी महत्वपूर्ण हो जाता है: अपने कोड के पहले महत्वपूर्ण समीक्षक बनें। अपने परिवर्तनों को पंक्ति-दर-पंक्ति जांचने के लिए कुछ समय निकालना सुनिश्चित करें, जैसे आप किसी और के कोड की समीक्षा करते हैं, और अपना काम केवल तभी सबमिट करें जब वह आपकी स्वयं की समीक्षा में पास हो जाए। "अभी मेरे लिए दो बातें सच हैं: एआई एजेंट अद्भुत हैं और उत्पादकता में भारी वृद्धि करते हैं। यदि आप अपने दिमाग को बंद कर देते हैं और पूरी तरह से जाने देते हैं तो वे बड़े पैमाने पर स्लोप मशीन भी हैं।" - आर्मिन रोनाचर ने अपने ब्लॉग पोस्ट एजेंट साइकोसिस: क्या हम पागल हो रहे हैं?
निष्कर्ष और आलोचनात्मक विचार In my opinion, AI coding tools can improve our productivity as developers on a daily basis and free up mental capacity for more planning and high-level thinking. वे हमें हमारे वांछित परिणाम को सूक्ष्म विवरण के साथ स्पष्ट करने के लिए बाध्य करते हैं। कोई भी एआई, कभी-कभी मतिभ्रम कर सकता है, जिसका मूल अर्थ यह है कि यह आत्मविश्वासपूर्ण स्वर में है। इसलिए कृपया जांच और परीक्षण करना सुनिश्चित करें, खासकर जब आप संदेह में हों। एआई कोई चांदी की गोली नहीं है, और मेरा मानना है कि एक डेवलपर के रूप में उत्कृष्टता और समस्याओं को हल करने की क्षमता कभी भी फैशन से बाहर नहीं जाएगी। ऐसे डेवलपर्स के लिए जो अभी अपना करियर शुरू कर रहे हैं, ये उपकरण उनके लिए अधिकांश काम करने के लिए अत्यधिक आकर्षक हो सकते हैं। यहां जो चीज़ खो सकती है वह है बग और मुद्दों के माध्यम से अक्सर थका देने वाला और दर्दनाक काम, जिसे डीबग करना और हल करना मुश्किल होता है, जिसे "ग्राइंड" भी कहा जाता है। यहां तक कि कर्सर एआई के ली रॉबिन्सन ने भी अपनी एक पोस्ट में इस पर सवाल उठाया है:
एआई कोडिंग उपकरण तेजी से विकसित हो रहे हैं, और मैं आगे क्या होगा इसके लिए उत्साहित हूं। मुझे आशा है कि आपको यह लेख और इसकी युक्तियाँ उपयोगी लगी होंगी और आप इनमें से कुछ को स्वयं आज़माने के लिए उत्साहित होंगे।