توسعه مبتنی بر مشخصات مشکل واقعی را حل نکرد
توسعه مبتنی بر مشخصات (SDD) پاسخ جدید به مشکل نوشتن کدهای اشتباه توسط عاملهای هوش مصنوعی (AI agents) است.
گردش کار ساده است. شما یک مشخصات (spec) ساختاریافته مینویسید. یک عامل (agent) برنامه را اجرا میکند. شما نتیجه را بازبینی میکنید. ابزارهایی مانند GitHub Spec Kit، OpenSpec و Kiro پیشرو این تغییر هستند.
این رویکرد بهتر از پرامپتنویسی خام (raw prompting) عمل میکند، اما یک نقص بزرگ دارد.
این روش بر این فرض استوار است که مشخصات همیشه «منبع حقیقت» (source of truth) باقی میمانند. اما این یک دروغ است.
برای ۲۰ سال، ما سعی کردیم مستندات را با کد همگام نگه داریم. اسناد طراحی، ویکیها و READMEها همگی شکست خوردند. چرا؟ چون ویرایش کد سریع است و ارزش ایجاد میکند، اما ویرایش یک سند کند است و هیچ نتیجه ملموسی ندارد. مستندسازی همیشه در برابر سرعت بازنده است.
SDD نیز با همین مشکل روبروست.
یک عامل به یک محدودیت برخورد میکند. برای اینکه کد کار کند، آن را اصلاح میکند. حالا کد و مشخصات با هم مطابقت ندارند. مشخصات ظرف چند روز بیفایده میشوند. اکثر فریمورکها به شما میگویند برای حل این مشکل از «انضباط» (discipline) استفاده کنید. اما انضباط پیش از این بارها ما را ناامید کرده است.
نوشتن یک مشخصات کامل قبل از کدنویسی، با این فرض است که شما در طول پیادهسازی هیچ چیز جدیدی یاد نمیگیرید. این کار حلقه بازخورد (feedback loop) را میشکند و توسعه چابک (agile development) را به یک فرآیند سنگین و زمانبر در مراحل اولیه تبدیل میکند.
یک توسعهدهنده پروژهای چندماهه را با استفاده از SDD اجرا کرد. عامل هوش مصنوعی تمام مشخصات را به شکلی بینقص دنبال کرد، اما سیستم باز هم شکست خورد. مشخصات نمیتوانست دانشی را که فقط در حین ساخت ظاهر میشود، ثبت کند. یک تغییر کوچک در زیرساخت (infra)، کل گراف مشخصات را از کار انداخت.
تیم دیگری SDD را امتحان کرد و متوجه شد که ۱۰ برابر کندتر است. آنها تشریفات بیشتری داشتند اما تعداد باگهایشان همان مقدار بود.
هدف نباید تولید مستندات بیشتر باشد.
مشکل واقعی این است که چگونه مشخصات را زنده نگه داریم. ما به مشخصاتی نیاز داریم که خودشان را بهروزرسانی کنند. ما به ابزارهایی نیاز داریم که مشخصات را از روی کد و سیستم در حال اجرا استنباط کنند. این فرآیند باید مانند یک lockfile عمل کند؛ یعنی باید خودکار باشد.
هنوز مطمئن نیستم که آیا این کار امکانپذیر است یا خیر. میخواهم نظر افرادی را که در محیط عملیاتی (production) مشغول ساختوساز هستند، بدانم.
- آیا مشخصات شما بیش از هفته سوم دوام میآورد؟
- وقتی مشخصات دچار انحراف (drift) میشود، علت این گسست چیست؟
- آیا تا به حال تولید مشخصات از روی کد یا تلمتری (telemetry) را امتحان کردهاید؟
- آیا این دقت و سختگیری ارزش افزوده ایجاد میکند یا فقط باعث تشریفات بیهوده میشود؟
Optional learning community: https://t.me/GyaanSetuAi