लॉगिन पेज सही ढंग से रेंडर हुआ। REST API ने 200 OK रिटर्न किया। SaaS boilerplate बिना किसी linting error के शुरू हो गया। एक दोपहर में, आपने वह काम पूरा कर लिया जिसमें पहले एक हफ्ता लगता था। AI कोडिंग असिस्टेंट्स ने सॉफ्टवेयर डेवलपमेंट को इतनी पूरी तरह से बदल दिया है कि अब फीचर्स बनाना इंजीनियरिंग कम और मेनू से ऑर्डर करने जैसा ज्यादा लगता है। वह सुविधा वास्तविक है। लेकिन इसकी एक कीमत है जो बाद में ही सामने आती है, आमतौर पर तब जब जोखिम सबसे अधिक होता है। डेवलपर्स ने इस जाल को Vibe Coding कहना शुरू कर दिया है, और यह नाम समस्या को पूरी तरह से दर्शाता है।
कॉपी-पेस्ट लूप
यह लूप वास्तव में कैसा दिखता है, यहाँ देखें। आप चैट विंडो में अपना कर्सर रखते हैं और साधारण अंग्रेजी में एक फीचर का वर्णन करते हैं। तुरंत कोड का एक ब्लॉक दिखाई देता है। आप उसे हाईलाइट करते हैं, कॉपी करते हैं, अपने एडिटर पर वापस जाते हैं, पेस्ट करते हैं और सेव करते हैं। टर्मिनल में कोई एरर नहीं दिखता। ब्राउज़र सही लेआउट दिखाता है। आप बदलाव को कमिट करते हैं और अगला टिकट खोलते हैं। लॉजिक को समझने के लिए कोई ठहराव नहीं था। इम्पोर्ट की गई डिपेंडेंसीज़ की कोई जाँच नहीं हुई। इस बारे में कोई सवाल नहीं उठाया गया कि क्या वह थर्ड-पार्टी लाइब्रेरी वास्तव में आवश्यक है या क्या कोई स्टैंडर्ड लाइब्रेरी टूल काम कर सकता है। वर्कफ़्लो बस इतना है: पूछें, कॉपी करें, पेस्ट करें, रन करें। यदि सतह सही दिखती है, तो गहराई को भी सही मान लिया जाता है। यह किसी भी सार्थक अर्थ में कोडिंग नहीं है। यह मैनुअल पढ़े बिना पहले से बने-बनाए हिस्सों को जोड़ने जैसा है। किसी भी शॉर्टकट की तरह, यह तब तक काम करता है जब तक कि वह काम करना बंद न कर दे।
सबसे बुरे समय पर नियंत्रण खोना
जब बग प्रोडक्शन में आता है, तो वह आपके डेस्क पर आता है, AI के नहीं। रात के दो बजे, चैटबॉट आपके ऑब्जर्वेबिलिटी प्लेटफॉर्म (observability platform) पर लॉग इन नहीं होता है। आप होते हैं। यदि आपने कभी उस कोड को नहीं पढ़ा जिसे आपने शिप किया है, तो आप उसकी विफलता के कारणों को नहीं समझ पाएंगे। आप उन फाइलों में grep करेंगे जिन्हें आप समझते नहीं हैं, उस लॉजिक को ठीक करने की कोशिश करेंगे जिसे आपने कभी सीखा ही नहीं। यह अहसास दिशाहीन करने वाला होता है। एक डेवलपर जो अपने स्वयं के कंस्ट्रक्ट्स (constructs) लिखता है, वह सिस्टम का एक मानसिक मानचित्र (mental map) बनाता है। उन्हें पता होता है कि कहाँ जोखिम भरे हिस्से हैं और कौन से अनुमान (assumptions) सिस्टम को थामे हुए हैं। Vibe Coding उस मानचित्र को मिटा देती है। आप 'ब्लैक बॉक्स' के ऑपरेटर बन जाते हैं। सिंटैक्स सही है, डेमो ने क्लाइंट को प्रभावित किया, लेकिन सिस्टम वास्तव में आपका नहीं है। स्वामित्व के लिए समझ की आवश्यकता होती है, और समझने में समय लगता है। उस चरण को छोड़ने से लागत कम नहीं होती। यह बस उसे सबसे महंगे संभव क्षण में स्थानांतरित कर देती है।
काम करने वाला कोड सुरक्षित कोड नहीं है
AI मॉडल ट्रेनिंग डेटा में पाए जाने वाले पैटर्न के आधार पर प्रतिक्रियाएँ उत्पन्न करते हैं। उन पैटर्न्स में कई पुराने और असुरक्षित उदाहरण शामिल होते हैं। जो लॉगिन फंक्शन आपने पेस्ट किया है, वह 'salted slow hash' के बजाय एक तेज़, पुराने (obsolete) हैश का उपयोग करके पासवर्ड स्टोर कर सकता है क्योंकि ट्रेनिंग स्नैपशॉट में पुराने फ़ोरम स्निपेट्स को प्राथमिकता दी गई थी। API एंडपॉइंट सीधे यूजर इनपुट को एक रॉ SQL स्ट्रिंग में जोड़ (concatenate) सकता है क्योंकि आपने एक सरल उदाहरण माँगा था और मॉडल ने वैसा ही किया। आपके डेटाबेस क्रेडेंशियल्स क्लाइंट-साइड जावास्क्रिप्ट में लीक हो सकते हैं क्योंकि AI को यह नहीं पता था कि आप एक सर्वरलेस फ्रंटएंड बना रहे हैं, न कि बैकएंड रूट।
इनपुट वैलिडेशन का न होना आम बात है। जनरेट किया गया फॉर्म हैंडलर 'विनम्र उपयोगकर्ताओं' की कल्पना करता है और डेटा को स्टैक में गहराई से भेजने से पहले स्ट्रिंग की लंबाई, न्यूमेरिक रेंज, या फ़ाइल प्रकारों की जाँच करने में विफल रहता है। ऑथेंटिकेशन चेक उचित सर्वर-साइड वेरिफिकेशन के बिना क्लाइंट-साइड टोकन पर निर्भर हो सकते हैं, जिससे सुरक्षा का एक झूठा अहसास पैदा होता है। एक AI HttpOnly या Secure फ्लैग के बिना सेशन कुकी जनरेट कर सकता है क्योंकि इसकी ट्रेनिंग में पुराने Stack Overflow उत्तर शामिल थे। डेमो के दौरान प्रत्येक समस्या अदृश्य होती है। ऐप काम करता है। उपयोगकर्ता लॉग इन करते हैं। डेटा प्रवाहित होता है। लेकिन एक हमलावर को केवल एक असुरक्षित एंट्री पॉइंट की आवश्यकता होती है। सुरक्षा के नजरिए से AI आउटपुट की समीक्षा करना कोई पागलपन (paranoia) नहीं है। यह प्रोफेशनल सॉफ्टवेयर के लिए एक बुनियादी आवश्यकता है।
विसंगति का कर (Inconsistency Tax)
एक कोडबेस एक कहानी भी है। यह टीम के नए सदस्यों को सिखाता है कि चीजें कैसे की जानी चाहिए। Vibe Coding उस कहानी को दर्जनों विरोधाभासी बोलियों में विभाजित कर देती है। जो फीचर आपने कल बनाया था, वह स्पष्ट state reducers के साथ functional React hooks का उपयोग करता है। आज का फीचर, जो थोड़े अलग प्रॉम्प्ट से जनरेट किया गया है, class components का उपयोग करता है क्योंकि मॉडल ने पुराने पैटर्न को डिफ़ॉल्ट मान लिया। API लेयर OpenAPI-generated stubs और हाथ से लिखे गए route handlers के बीच बदलती रहती है। नेमिंग कन्वेंशन camelCase और snake_case के बीच भटकते रहते हैं। एरर हैंडलिंग एक फ़ाइल में गायब हो जाती है और दूसरी में विस्तृत (verbose) नेस्टेड try-catch ब्लॉक्स के रूप में वापस आ जाती है।
हफ्तों बीतते-बीतते, प्रोजेक्ट एक पुरातात्विक खुदाई जैसा बन जाता है। आप किसी एक मॉड्यूल को सुरक्षित रूप से नहीं बदल सकते क्योंकि आप नहीं जानते कि उसके बगल वाला AI-जनरेटेड मॉड्यूल किन धारणाओं पर आधारित है। रिफैक्टरिंग 'whack-a-mole' के एक धीमे और जोखिम भरे खेल में बदल जाती है। सिस्टम कंपाइल तो हो जाता है, लेकिन उसमें अब कोई तालमेल नहीं रहता। मेंटेनेबिलिटी हज़ारों पेस्ट किए गए स्निपेट्स की भेंट चढ़ जाती है।
AI को एक शिक्षक में बदलें
वास्तविक सीखना तब होता है जब आप आउटपुट से सवाल करते हैं। AI के साथ एक ऐसे सीनियर डेवलपर की तरह व्यवहार करें जो तेज़ी से कोड तो लिखता है, लेकिन फिर भी कोड रिव्यू की अपेक्षा रखता है। पूछें कि उसने उस ट्री ट्रैवर्सल के लिए इटरेशन के बजाय रिकर्शन को क्यों चुना। पूछें कि क्या कोई अधिक मेमोरी-कुशल तरीका है जो एज केसेस को बेहतर ढंग से संभाल सके। पूछें कि क्या होता है जब इनपुट null हो, जब नेटवर्क रिक्वेस्ट टाइम आउट हो जाए, या जब दो उपयोगकर्ता एक साथ फंक्शन को ट्रिगर करें। उसे लॉजिक को लाइन-दर-लाइन समझाने के लिए कहें, जैसे कि आप अपने किसी जूनियर साथी के पुल रिक्वेस्ट की समीक्षा कर रहे हों।
जब आप मॉडल को अपने विकल्पों को सही ठहराने के लिए मजबूर करते हैं, तो आप खुद को उन्हें समझने के लिए मजबूर करते हैं। यह पूरी तरह से डायनामिक को बदल देता है। AI एक ऑटोपायलट के बजाय एक ट्यूटर बन जाता है। लक्ष्य खुद शून्य कोड लिखना नहीं है। लक्ष्य केवल वही कोड शिप करना है जिसे आप पूरी तरह से समझते हैं, भले ही असिस्टेंट ने उसका पहला ड्राफ्ट तैयार किया हो।
वे कौशल जो अब वास्तव में मायने रखते हैं
सिंटैक्स लिखना दिन-ब-दिन सस्ता होता जा रहा है। पढ़ना और तर्क करना...
