AI कोडिंग एजेंट्स को प्रॉम्प्ट्स से ज़्यादा टेस्ट्स की ज़रूरत है

मैंने 25 वर्षों तक सॉफ्टवेयर लिखा है। पिछले आठ महीनों में मेरा वर्कफ़्लो मेरे पूरे करियर की तुलना में अधिक बदल गया है।

AI कोडिंग टूल्स पहले रिफैक्टरिंग (refactoring) या एरर्स समझाने जैसे छोटे कार्यों के लिए हुआ करते थे। AI के साथ बड़े फीचर्स बनाना कष्टदायक लगता था।

अब स्थिति अलग है। आधुनिक एजेंट्स एक विशिष्ट लूप का पालन करते हैं:

  • कोड पढ़ें।
  • कोड बदलें।
  • कमांड चलाएं।
  • देखें कि क्या विफल हुआ।
  • उसे ठीक करें।
  • दोहराएं।

यह लूप शक्तिशाली है, लेकिन एजेंट्स विजुअल इंटरफेस (visual interfaces) के साथ संघर्ष करते हैं। वे यह देखने के लिए कि कोई बटन काम करता है या नहीं, विश्वसनीय रूप से UI पर क्लिक नहीं कर सकते।

मैंने अपना दृष्टिकोण बदल दिया। मैं नए फीचर्स इस तरह बनाता हूँ कि वे पहले कमांड लाइन से काम करें।

एजेंट से "इस स्क्रीन को देखो" कहने के बजाय, मैं उसे एक कमांड देता हूँ:

  • npm run test:feature-x
  • node scripts/run-new-feature-client.js

एजेंट्स को कमांड्स पसंद हैं। यह उन्हें एक निष्पादन योग्य (executable) फीडबैक लूप देता है।

मेरा वर्तमान वर्कफ़्लो इस प्रकार है:

  • एक Markdown फ़ाइल में फीचर की योजना बनाएं।
  • एक टेस्ट क्लाइंट या यूनिट टेस्ट बनाएं।
  • स्पष्ट टेस्ट केस परिभाषित करें।
  • एजेंट को फीचर लागू करने दें।
  • एजेंट को बार-बार टेस्ट चलाने दें।
  • परिणामों की समीक्षा करें।

एक चेतावनी: यदि आप किसी एजेंट को "सभी टेस्ट पास करें" कहते हैं, तो वह ऐसा कर देगा। सफल होने के लिए वह सॉफ्टवेयर इंजीनियरिंग के नियमों का उल्लंघन कर सकता है। वह केवल विफलता संदेश (failure message) को रोकने के लिए कमजोर टेस्ट लिख सकता है या एरर्स को छिपाने के लिए try/catch ब्लॉक्स का उपयोग कर सकता है।

यही कारण है कि टेस्ट परिभाषा (test definition) मेरा सबसे महत्वपूर्ण मैन्युअल कार्य है। आपको पूछना चाहिए:

  • क्या यह टेस्ट एक वास्तविक उपयोग के मामले (use case) का प्रतिनिधित्व करता है?
  • क्या यह वास्तविक रिग्रेशन (regression) को पकड़ पाएगा?
  • क्या यह बहुत संकीर्ण है?

AI के युग में, टेस्ट-ड्रिवन डेवलपमेंट (TDD) केवल एक सुरक्षा जाल (safety net) नहीं है। यह स्टीयरिंग व्हील है। बिना टेस्ट के, एक एजेंट केवल विश्वसनीय दिखने वाला कोड बनाता है। अच्छे टेस्ट के साथ, एक एजेंट के पास एक मापने योग्य लक्ष्य होता है।

एक और टिप: टेस्ट आउटपुट के लिए स्ट्रक्चर्ड फ़ाइलों का उपयोग करें। चैट में भारी लॉग्स डालने के बजाय, अपने स्क्रिप्ट्स को एक फ़ोल्डर में JSON या Markdown फ़ाइलों में लिखने दें।

इससे मदद मिलती है क्योंकि:

  • एजेंट सीधे प्रासंगिक डेटा पर पहुँच जाता है।
  • कॉन्टेक्स्ट छोटा रहता है।
  • टोकन का उपयोग कम हो जाता है।
  • इससे पैसे बचते हैं।

AI एजेंट्स डेवलपर्स की जगह नहीं लेते हैं। वे हमारे फोकस को बदलते हैं। हम कोड टाइप करने में कम और इन चीज़ों में अधिक समय बिताते हैं:

  • समस्याओं को स्पष्ट रूप से समझाना।
  • फीडबैक लूप बनाना।
  • गुणवत्तापूर्ण टेस्ट परिभाषित करना।
  • आर्किटेक्चर की समीक्षा करना।

AI डेवलपमेंट का भविष्य उस व्यक्ति का नहीं है जो सबसे अच्छे प्रॉम्प्ट लिखता है। यह उस व्यक्ति का है जो सबसे अच्छे फीडबैक लूप बनाता है।

Source: https://dev.to/stoefln6/ai-coding-agents-need-tests-more-than-prompts-11pm

Optional learning community: https://t.me/GyaanSetuAi