Розробка на основі специфікацій не вирішила справжню проблему
Розробка на основі специфікацій (SDD) — це нова відповідь на проблему написання неправильного коду ШІ-агентами.
Робочий процес простий. Ви пишете структуровану специфікацію. Агент виконує план. Ви перевіряєте результат. Такі інструменти, як GitHub Spec Kit, OpenSpec та Kiro, очолюють цей перехід.
Цей підхід працює краще, ніж звичайний промптинг. Але він має величезний недолік.
Він покладається на те, що специфікація залишається єдиним джерелом істини. Це неправда.
Протягом 20 років ми намагалися синхронізувати документацію з кодом. Проєктна документація, вікі-сторінки та README — усе зазнало невдачі. Чому? Тому що редагування коду відбувається швидко і приносить цінність. Редагування документа — це повільно і не дає нічого видимого. Документація завжди програє швидкості.
SDD стикається з тією ж проблемою.
Агент стикається з обмеженням. Він виправляє код, щоб він запрацював. Тепер код і специфікація не збігаються. Специфікація стає марною вже за кілька днів. Більшість фреймворків радять використовувати «дисципліну», щоб виправити це. Але дисципліна підводила нас кожного разу раніше.
Написання повної специфікації перед кодуванням передбачає, що ви нічого не дізнаєтеся під час реалізації. Це порушує цикл зворотного зв'язку. Це перетворює agile-розробку на важкий процес із великою попередньою підготовкою.
Один розробник вів багатомісячний проєкт, використовуючи SDD. Агент ідеально дотримувався кожної специфікації. Проте система все одно не спрацювала. Специфікація не змогла зафіксувати знання, які з'являються лише під час розробки. Одна невелика зміна інфраструктури зруйнувала весь граф специфікацій.
Інша команда спробувала SDD і виявила, що це в 10 разів повільніше. У них було більше формальностей, але та ж сама кількість багів.
Метою не має бути створення більшої кількості документів.
Справжня проблема полягає в тому, як підтримувати специфікації в актуальному стані. Нам потрібні специфікації, які оновлюються самі. Нам потрібні інструменти, які виводять специфікацію з коду та працюючої системи. Це має працювати як lockfile. Це має бути автоматично.
Я не впевнений, чи це вже можливо. Я хочу почути думки людей, які розробляють продукти в продакшені.
- Чи виживає ваша специфікація довше трьох тижнів?
- Коли вона розходиться з кодом, що стає причиною розриву?
- Чи пробували ви генерувати специфікації з коду або телеметрії?
- Чи додає така суворість цінності, чи це просто формальність?
Optional learning community: https://t.me/GyaanSetuAi