AI कोडिंग एजंट्सना प्रॉम्प्ट्सपेक्षा टेस्ट्सची जास्त गरज आहे

मी २५ वर्षांपासून सॉफ्टवेअर लिहित आहे. माझ्या संपूर्ण कारकिर्दीपेक्षा गेल्या आठ महिन्यांत माझ्या कामाच्या पद्धतीत (workflow) जास्त बदल झाले आहेत.

AI कोडिंग टूल्स पूर्वी रिफॅक्टरिंग (refactoring) किंवा एरर्स स्पष्ट करण्यासारख्या लहान कामांसाठी वापरली जात असत. AI च्या मदतीने मोठी फीचर्स तयार करणे त्रासदायक वाटायचे.

आता परिस्थिती वेगळी आहे. आधुनिक एजंट्स एका विशिष्ट लूपचे (loop) पालन करतात:

  • कोड वाचणे.
  • कोड बदलणे.
  • कमांड चालवणे.
  • काय फेल झाले ते पाहणे.
  • ते दुरुस्त करणे.
  • पुन्हा करणे.

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

मी माझा दृष्टिकोन बदलला आहे. मी नवीन फीचर्स अशा प्रकारे तयार करतो की ती प्रथम कमांड लाईनवरून (command line) काम करतील.

एजंटला "या स्क्रीनकडे बघ" असे सांगण्याऐवजी, मी त्याला एक कमांड देतो:

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

एजंट्सना कमांड्स आवडतात. यामुळे त्यांना एक एक्झिक्युटेबल फीडबॅक लूप (executable feedback loop) मिळतो.

माझी सध्याची कार्यपद्धती (workflow) अशी आहे:

  • Markdown फाईलमध्ये फीचरचे नियोजन करणे.
  • टेस्ट क्लायंट किंवा युनिट टेस्ट तयार करणे.
  • स्पष्ट टेस्ट केसेस (test cases) परिभाषित करणे.
  • एजंटला फीचर इम्प्लिमेंट करू देणे.
  • एजंटला वारंवार टेस्ट्स रन करू देणे.
  • निकालांचे पुनरावलोकन करणे.

एक इशारा: जर तुम्ही एजंटला "सर्व टेस्ट्स पास कर" असे सांगितले, तर तो ते नक्कीच करेल. यशस्वी होण्यासाठी तो सॉफ्टवेअर इंजिनिअरिंगच्या नियमांचे उल्लंघन करू शकतो. फेल्युअर मेसेज थांबवण्यासाठी तो कमकुवत टेस्ट्स लिहू शकतो किंवा एरर्स लपवण्यासाठी try/catch ब्लॉक्सचा वापर करू शकतो.

म्हणूनच टेस्ट डेफिनेशन (test definition) हे माझे सर्वात महत्त्वाचे मॅन्युअल काम आहे. तुम्हाला स्वतःला हे विचारावे लागेल:

  • ही टेस्ट खऱ्या वापराच्या परिस्थितीचे (real use case) प्रतिनिधित्व करते का?
  • ती खरोखरची रिग्रेशन (regression) पकडू शकेल का?
  • ती खूप मर्यादित आहे का?

AI च्या युगात, टेस्ट-ड्रिव्हन डेव्हलपमेंट (TDD) हे केवळ एक सुरक्षा कवच नाही, तर ते स्टेअरिंग व्हील आहे. टेस्ट्सशिवाय, एजंट केवळ योग्य वाटणारा (plausible) कोड तयार करतो. चांगल्या टेस्ट्समुळे, एजंटला एक मोजता येण्याजोगा (measurable) उद्देश मिळतो.

आणखी एक टीप: टेस्ट आउटपुट्ससाठी स्ट्रक्चर्ड फाईल्स वापरा. चॅटमध्ये मोठे लॉग्स (logs) टाकण्याऐवजी, तुमच्या स्क्रिप्ट्सना एका फोल्डरमध्ये JSON किंवा Markdown फाईल्समध्ये लिहिण्यास सांगा.

यामुळे मदत होते कारण:

  • एजंट थेट संबंधित डेटावर पोहोचतो.
  • कॉन्टेक्स्ट (context) मर्यादित राहतो.
  • टोकनचा वापर कमी होतो.
  • यामुळे पैसे वाचतात.

AI एजंट्स डेव्हलपर्सची जागा घेत नाहीत. ते आपले लक्ष वळवतात. आपण कोड टाइप करण्यात कमी वेळ घालवतो आणि खालील गोष्टींवर जास्त वेळ देतो:

  • समस्या स्पष्टपणे मांडणे.
  • फीडबॅक लूप्स तयार करणे.
  • दर्जेदार टेस्ट्स परिभाषित करणे.
  • आर्किटेक्चरचे पुनरावलोकन करणे.

AI डेव्हलपमेंटचे भविष्य त्या व्यक्तीचे नाही जो सर्वोत्तम प्रॉम्प्ट्स लिहितो, तर त्या व्यक्तीचे आहे जो सर्वोत्तम फीडबॅक लूप्स तयार करतो.

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

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