Spec-Driven Development म्हणजे काय?
बहुतेक AI कोडिंगची सुरुवात एकाच पद्धतीने होते. तुम्ही एजंटला एक छोटा प्रॉम्प्ट देता. तो कोड लिहितोय हे तुम्ही पाहता. ते वेगाने होत असल्यासारखे वाटते. पण नंतर तुम्हाला जाणवते की एजंटने चुकीची गोष्ट बनवली आहे. ते सुधारण्यासाठी तुम्हाला एक तास खर्च करावा लागतो.
एजंटला कोड लिहिण्यात अडचण येत नव्हती. त्याला तुमचा हेतू (intent) समजून घेण्यात अडचण येत होती.
Spec-driven development ही समस्या सोडवते. कोडसाठी प्रॉम्प्ट देण्याऐवजी, तुम्ही प्रथम एक spec तयार करता. ही spec म्हणजे एक लिखित योजना आहे. जोपर्यंत ती योग्य होत नाही, तोपर्यंत तुम्ही योजनेत सुधारणा करता. त्यानंतरच तुम्ही एजंटला ते बनवू देता.
AWS Kiro आणि GitHub spec-kit सारखी नवीन साधने हे काम सोपे करतात. पण ही कल्पना जुनी आहे. हे फक्त उत्तम इंजिनिअरिंग आहे.
एका चांगल्या spec चे तीन भाग असतात:
• Requirements: हे फीचर काय करते आणि यश कसे मोजायचे. हे वर्तणुकीचे (behavior) वर्णन करते, कोडचे नाही. • Design: तांत्रिक योजना. यामध्ये आर्किटेक्चर, डेटा मॉडेल्स आणि मर्यादा (constraints) यांचा समावेश होतो. • Tasks: लहान, चाचणीयोग्य घटक. हे इतके सोपे असतात की एजंट ते एका दमात पूर्ण करू शकतो.
प्रत्येक भाग पुढच्या भागासाठी आधार ठरतो. Requirements मुळे Design ला दिशा मिळते. Design मुळे Tasks तयार होतात. Tasks एजंटला मार्गदर्शन करतात.
पूर्वी, कोड लिहिणे संथ होते. Specs लिहिणे वेळेचा अपव्यय वाटायचे. आता, AI काही मिनिटांत कोड लिहितो. आता अडथळा (bottleneck) टायपिंगमध्ये नाहीये. अडथळा नेमके काय बनवायचे हे ठरवण्यात आहे.
Spec मुळे तुमच्या चुका अशा ठिकाणी हलवल्या जातात जिथे त्या सुधारणे स्वस्त पडते. डॉक्युमेंटमधील चुकीचे वाक्य सुधारणे सोपे असते. पण कोडबेसमध्ये चुकीची अंमलबजावणी (implementation) झाली असेल, तर ती सुधारणे खर्चिक असते.
कोड रिव्ह्यू करणे कठीण असते. लेखकाचा नेमका अर्थ काय होता, हे तुम्हाला समजून घ्यावे लागते (reverse-engineer). Spec रिव्ह्यू करणे सोपे आहे. कोड तयार होण्यापूर्वीच तुम्ही हेतूवर (intent) सहमत होता.
ही पद्धत तुम्हाला स्केल करण्यासही मदत करते. तुम्ही वेगवेगळ्या एजंट्सना वेगवेगळी कामे देऊ शकता. Spec एका कराराप्रमाणे (contract) काम करते ज्यामुळे ते सर्व एकाच दिशेने काम करतात.
हा दृष्टिकोन नेहमीच सर्व प्रश्नांचे उत्तर नसतो.
- लहान सुधारणांसाठी हे गरजेपेक्षा जास्त आहे. एका ओळीच्या बदलासाठी spec लिहिण्याची गरज नाही.
- Specs जुने (stale) होऊ शकतात. जर कोड बदलला पण spec बदलला नाही, तर spec चुकीचा ठरतो.
- एजंट्स नेहमीच आज्ञा पाळत नाहीत. Spec मुळे गोंधळ कमी होतो, पण तुम्हाला तरीही आउटपुट रिव्ह्यू करावेच लागेल.
तुमचा हेतू स्पष्ट करण्यासाठी spec चा वापर करा. चुका केवळ शब्दांच्या स्वरूपात असतानाच त्या पकडण्यासाठी याचा वापर करा.
Source: https://dev.to/jcamarate/what-is-spec-driven-development-with-ai-coding-agents-56mc
Optional learning community: https://t.me/GyaanSetuAi