मैंने अपनी टीम के AI कोड का ऑडिट किया। यहाँ वह सब है जो हमें मिला।

मेरी टीम ने रिकॉर्ड गति से कोड बनाने के लिए AI का उपयोग किया। हमने एक तिहाई समय में फीचर्स शिप किए। हमारी वेलोसिटी शानदार लग रही थी। हमारा टेस्ट कवरेज 91% तक पहुँच गया।

फिर हम एक बड़ी बाधा से टकरा गए।

हमें प्रोडक्शन बग्स (production bugs) का सामना करना पड़ा जिन्हें ठीक करना कठिन था। एक साधारण रिफैक्टर (refactor) में चार दिनों के बजाय चार सप्ताह लग गए। एक नए कर्मचारी ने मुझे बताया कि कोड साफ तो था लेकिन समझना असंभव था।

हमने कोडबेस का ऑडिट करने में तीन सप्ताह बिताए। हमें ऐसा टेक्निकल डेट (technical debt) मिला जिसे कोई भी स्कैनर नहीं पकड़ सका। वह डेट आर्किटेक्चरल (architectural) थी। वह बिहेवियरल (behavioral) थी।

AI टूल्स आपके प्रॉम्प्ट (prompt) में दी गई तात्कालिक समस्या को हल करते हैं। वे स्थानीय कार्य (local task) के लिए ऑप्टिमाइज़ करते हैं। वे पूरे सिस्टम को नहीं समझते। उन्हें यह नहीं पता होता कि आप किन सेवाओं को जल्द ही हटाने की योजना बना रहे हैं। उन्हें आपके लॉन्ग-टर्म डेटा मॉडल्स के बारे में जानकारी नहीं होती।

इसका परिणाम ऐसा कोड होता है जो स्थानीय रूप से तो सही है लेकिन वैश्विक रूप से नाजुक (fragile) है।

हमें चार विशिष्ट पैटर्न मिले:

  1. छिपे हुए एज केसेस (Hidden Edge Cases) AI ऐसा कोड लिखता है जो आपके द्वारा दिए गए टेस्ट पास कर देता है। यह अपनी गलतियों के लिए टेस्ट लिखने में सक्षम नहीं है।
  • समाधान: एक इंजीनियर को बिना देखे ही किसी सहकर्मी को कोड समझाना चाहिए। यदि वे इसे नहीं समझा सकते, तो वे इसे मर्ज (merge) नहीं कर सकते।
  1. टेस्ट कवरेज थिएटर (Test Coverage Theater) AI ऐसे टेस्ट जेनरेट करता है जो मौजूदा कोड को कवर करते हैं। यह इस बात के लिए टेस्ट नहीं लिखता कि सिस्टम को वास्तव में कैसा व्यवहार करना चाहिए।
  • समाधान: प्रत्येक AI टेस्ट सुइट को एडवर्सरियल रिव्यू (adversarial review) से गुजरना चाहिए। दूसरे इंजीनियर को कोड को तोड़ने (break करने) की कोशिश करनी चाहिए।
  1. अदृश्य कपलिंग (Invisible Coupling) AI किसी प्रॉम्प्ट को जल्दी हल करने के लिए डिपेंडेंसीज़ (dependencies) जोड़ देता है। यह आपके बिलिंग या यूजर मॉड्यूल में नोटिफिकेशन लॉजिक को बुन सकता है। इससे बाद में सेवाओं को अलग करना असंभव हो जाता है।
  • समाधान: AI द्वारा पेश की गई किसी भी नई डिपेंडेंसी को एक सीनियर इंजीनियर द्वारा अनुमोदित (approve) किया जाना चाहिए।
  1. सतही एरर हैंडलिंग (Shallow Error Handling) AI अक्सर