𝗦𝗽𝗲𝗰-𝗗𝗿𝗶𝘃𝗲𝗻 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁ने खरी समस्या सोडवली नाही
AI एजंट्स चुकीचा कोड लिहिण्याच्या समस्येवर Spec-driven development (SDD) हे नवीन उत्तर आहे.
ही कार्यपद्धती (workflow) सोपी आहे. तुम्ही एक स्ट्रक्चर्ड spec लिहिता. एक एजंट त्या योजनेची अंमलबजावणी करतो. तुम्ही निकालाचे पुनरावलोकन करता. GitHub Spec Kit, OpenSpec आणि Kiro सारखी साधने या बदलाचे नेतृत्व करत आहेत.
हा दृष्टिकोन केवळ प्रॉम्प्टिंगपेक्षा (raw prompting) अधिक चांगल्या प्रकारे काम करतो. परंतु त्यामध्ये एक मोठी त्रुटी आहे.
हे 'spec' सत्य स्रोत (source of truth) म्हणून कायम राहील यावर अवलंबून आहे. पण हे खरे नाही.
गेल्या २० वर्षांपासून, आम्ही डॉक्युमेंटेशन (docs) कोडसोबत सुसंगत ठेवण्याचा प्रयत्न केला. डिझाइन डॉक्स, विकी आणि READMEs या सर्व गोष्टी अपयशी ठरल्या. का? कारण कोडमध्ये बदल करणे जलद आहे आणि त्यातून लगेच मूल्य (value) मिळते. डॉक्युमेंटेशनमध्ये बदल करणे संथ आहे आणि त्यातून काहीही दृश्यमान मिळत नाही. वेगवान प्रक्रियेसमोर डॉक्युमेंटेशन नेहमीच हरते.
SDD ला देखील याच समस्येचा सामना करावा लागतो.
एखादा एजंट एखाद्या मर्यादांना (constraint) भिडतो. तो कोड कार्यान्वित करण्यासाठी त्यात बदल करतो. आता कोड आणि spec एकमेकांशी जुळत नाहीत. काही दिवसांतच spec निरुपयोगी ठरते. बहुतेक फ्रेमवर्क्स हे सुधारण्यासाठी "शिस्त" (discipline) पाळण्यास सांगतात. पण शिस्त आपल्याला यापूर्वी प्रत्येक वेळी अपयशी ठरवून गेली आहे.
कोडिंग करण्यापूर्वी पूर्ण spec लिहिणे म्हणजे अंमलबजावणी दरम्यान तुम्हाला काहीही शिकायला मिळणार नाही असे मानणे होय. यामुळे फीडबॅक लूप (feedback loop) खंडित होतो. हे अजाईल डेव्हलपमेंटला (agile development) एक जड आणि सुरुवातीलाच मोठी प्रक्रिया बनवते.
एका डेव्हलपरने SDD वापरून अनेक महिने चालणारा प्रकल्प राबवला. एजंटने प्रत्येक spec चे अचूक पालन केले. तरीही सिस्टम अपयशी ठरली. कोडिंग किंवा बिल्डिंग दरम्यान निर्माण होणारे ज्ञान spec मध्ये टिपता आले नाही. एका लहान इन्फ्रा (infra) बदलामुळे संपूर्ण spec graph विस्कळीत झाला.
दुसऱ्या एका टीमने SDD वापरून पाहिले आणि त्यांना ते १० पटीने संथ आढळले. त्यांच्याकडे अधिक औपचारिक प्रक्रिया (ceremony) होती, पण बग्सची (bugs) संख्या तीच होती.
ध्येय अधिक डॉक्युमेंट्स तयार करणे हे नसावे.
खरी समस्या spec जिवंत कशी ठेवायची ही आहे. आपल्याला असे specs हवे आहेत जे स्वतःहून अपडेट होतील. आपल्याला अशी साधने हवी आहेत जी कोड आणि चालू असलेल्या सिस्टममधून spec चा अंदाज (infer) लावतील. ते एखाद्या lockfile प्रमाणे काम केले पाहिजे. ते स्वयंचलित (automatic) असले पाहिजे.
हे सध्या शक्य आहे की नाही याची मला खात्री नाही. उत्पादन स्तरावर (production) काम करणाऱ्या लोकांकडून मला जाणून घ्यायला आवडेल.
- तुमचे spec तिसऱ्या आठवड्यानंतरही टिकते का?
- जेव्हा त्यात तफावत येते, तेव्हा त्याचे कारण काय असते?
- तुम्ही कोड किंवा टेलिमेट्री (telemetry) मधून specs तयार करण्याचा प्रयत्न केला आहे का?
- ही कठोरता मूल्य वाढवते की केवळ औपचारिक प्रक्रिया ठरते?
Optional learning community: https://t.me/GyaanSetuAi