В эпоху стремительного развития нейросетевых помощников программирование часто превращается в хаотичный процесс, известный как «vibe coding» (программирование по наитию). Разработчики бросают в LLM быстрые промпты, надеясь на чудо, но получают горы неструктурированного кода и технический долг. В новом курсе от DeepLearning.AI и JetBrains эксперты предлагают дисциплинированную альтернативу — Spec-Driven Development (SDD), где центральное место занимает четкая спецификация, а агент становится исполнительным механизмом в руках инженера.
🚀 От «вайб-кодинга» к инженерной дисциплине 4:14
Программирование на основе «вайбов» (vibe coding) дает быстрые, но поверхностные результаты: разработчик просит «создать кнопку», получает не совсем то, что хотел, и вступает в бесконечный диалог с моделью, пытаясь исправить ошибки . Как отмечает ведущий курса Пол Эверитт (Paul Everitt), Developer Advocate в JetBrains, такой подход ведет к накоплению технического долга и созданию одноразового кода, который невозможно поддерживать в долгосрочной перспективе .
Spec-Driven Development (разработка на основе спецификаций) — это профессиональный ответ на хаос неконтролируемой генерации кода. Основная идея SDD заключается в четком разделении «что» и «почему» (спецификация) от «как» (реализация). В этой парадигме создается своеобразный контракт не только между людьми, но и между человеком и ИИ-агентом .
Пол Эверитт выделяет три ключевых преимущества SDD:
- Масштабируемый контроль: небольшие изменения в спецификации могут приводить к масштабным, но предсказуемым изменениям в коде. Например, замена одной строчки «использовать SQLite» на «использовать MongoDB» автоматически перестроит сотни строк инфраструктурного кода .
- Сохранение контекста: LLM-агенты «забывчивы» (stateless). Спецификация служит внешним хранилищем контекста, предотвращая деградацию качества ответов при заполнении контекстного окна модели .
- Точность намерений: процесс написания спецификации заставляет человека четко определить проблему, критерии успеха и ограничения, прежде чем агент напишет первую строку кода .
📜 Конституция проекта: фундамент разработки 9:48
Любой серьезный проект в SDD начинается с создания «Конституции проекта» (Project Constitution). Это набор высокоуровневых документов в формате Markdown, которые определяют глобальные правила игры. Конституция независима от конкретного агента и служит общим источником истины для всех участников процесса .
Конституция состоит из трех столпов:
- Миссия (Mission): объясняет «зачем» создается проект, описывает видение, целевую аудиторию и рамки продукта .
- Технологический стек (Tech Stack): фиксирует принятые архитектурные решения, выбор языков, библиотек и инструментов развертывания .
- Дорожная карта (Roadmap): живой документ, содержащий последовательность этапов, каждый из которых будет реализовываться через циклы разработки фич .
Эндрю Ын (Andrew Ng), основатель DeepLearning.AI, подчеркивает, что написание спецификации — это тяжелый интеллектуальный труд. По его мнению, если оставить принятие архитектурных решений на откуп агенту, это неизбежно приведет к созданию «странных продуктов» и плохой поддержке кода . Вместо этого он рекомендует проводить предварительный диалог с агентом (например, Claude или ChatGPT), обсуждать компромиссы, а затем просить ИИ резюмировать принятые решения в файлы спецификации .
🔄 Цикл разработки фичи: планирование, реализация, проверка 20:06
После утверждения Конституции разработка переходит в итеративный режим. Каждая новая функция проходит через строгий цикл, изолированный в отдельной ветке Git .
Процесс выглядит следующим образом:
- Планирование (Plan): Разработчик обсуждает с агентом конкретную задачу из дорожной карты. Результатом становится документ
feature_spec.md, включающий план задач и «карточку проверки» (verification scorecard) . - Реализация (Implement): Агент приступает к написанию кода, основываясь на утвержденном плане. На этом этапе Пол Эверитт советует использовать команду
/clear, чтобы очистить текущий контекст агента и заставить его опираться только на файлы спецификаций, а не на предыдущие случайные реплики в чате . - Проверка (Verify): Человек выступает в роли главного инженера или проверяющего. Вместо того чтобы вычитывать каждое имя переменной, он должен сосредоточиться на том, соответствует ли результат высокоуровневым требованиям .
Важным элементом является концепция «Человека в контуре» (Human-in-the-Loop). Если в ходе проверки обнаруживается ошибка, ее следует исправлять не вручную, а через обновление спецификации, чтобы агент сам переписал код. Это гарантирует, что документация и код всегда остаются синхронизированными .
🛠️ Борьба с «ИИ-усталостью» и работа с Legacy 35:49
Работа с ИИ-агентами может порождать феномен «AI fatigue» — усталость разработчика от огромного количества генерируемого кода, который нужно проверять . Для борьбы с этим Эверитт предлагает несколько стратегий:
- Разделение этапов: Никогда не начинайте кодинг до завершения планирования.
- Малые шаги: Если задача слишком велика, просите агента выполнять ее по частям .
- Использование под-агентов: Можно попросить основного агента создать нескольких «виртуальных рецензентов» для глубокого аудита проекта. Это позволяет получить свежий взгляд на код, не перегружая контекстное окно основной модели .
Метод SDD применим и к существующим проектам (Brownfield). В этом случае процесс начинается с «обратной инженерии»: агент анализирует текущий код и файлы (например, README.md или TODO.md) и на их основе формулирует Конституцию проекта . Это позволяет привести старый код в соответствие с новыми стандартами разработки и обеспечить преемственность знаний .
🦾 Автоматизация и стандарты: Skills и ACP 33:40
Для повышения эффективности SDD используются «Навыки» (Skills) — пакеты инструкций, которые обучают агента новым повторяющимся действиям, таким как автоматическое обновление лога изменений (changelog) или выполнение проверок качества кода .
В индустрии уже формируются стандарты для унификации работы агентов:
- MCP (Model Context Protocol): Протокол для предоставления агентам доступа к внешним данным, например, актуальной документации библиотек через инструменты вроде Context 7 .
- ACP (Agent Client Protocol): Стандарт для связи агентов с различными IDE (например, WebStorm или VS Code). Благодаря ACP разработчик может легко переключаться между разными моделями (Claude Code, OpenAI Codex) в рамках одного и того же проекта, сохраняя все рабочие процессы .
- Готовые наборы инструментов: Проекты вроде Spec Kit от GitHub или Open Spec от Fission AI предлагают встроенные команды для реализации SDD-цикла .
Завершая курс, Пол Эверитт призывает разработчиков «вернуть инженерное искусство» в процесс создания программного обеспечения. В мире, где ИИ берет на себя роль «мускулов», человек должен оставаться «мозгом», определяющим цели и контролирующим архитектуру через качественные спецификации .