В последние полгода мой телеграм-канал завален постами типа «Запустил SaaS за выходные с помощью AI» или «Собрал MVP без единой строчки кода». Поначалу это вдохновляет — пока не увидишь, что происходит дальше.
Демо ≠ Продакшн
Vibe coding отлично справляется с созданием работающего демо. Ты описываешь идею в ChatGPT, получаешь код, запускаешь локально — и вуаля, будто продукт готов. Проблема в том, что демо-код и продакшн-код отличаются как черновой набросок от архитектурного проекта.
На практике это выглядит так:
- Первый платящий пользователь натыкается на баг, который невозможно воспроизвести локально
- Добавление фичи требует переписать половину «сгенерированного» кода
- Через месяц ни ты, ни AI не понимаете логику принятых решений
// Типичный пример сгенерированного кода без domain model
function processOrder(input: any) {
// ...40 строк неявных условий и магических чисел
}
Где рвётся цепь
Основной разрыв возникает в трёх точках:
-
Отсутствие domain model — AI генерирует код, но не понимает предметную область. В результате бизнес-логика оказывается размазана по кодовой базе.
-
Миф о self-healing коде — когда баги появляются в продакшне, оказывается, что «агент» забыл контекст прошлых решений и предлагает несовместимые изменения.
-
Скорость vs Эволюция — то, что быстро собирается, обычно так же быстро перестаёт масштабироваться. Добавить новую фичу становится дороже, чем переписать с нуля.
Особенно болезнен переход от «это работает» к «это работает у 1000 пользователей одновременно». Здесь всплывают все проблемы с состояниями, race condition и неявными зависимостями.
Что делать вместо vibe coding
Не отказываясь от AI-инструментов вообще, стоит изменить подход:
-
Model First — прежде чем открывать ChatGPT, рисуем core domain на бумаге. Хотя бы в виде схемы или описания bounded context.
-
AI как код-ревьюер — используем Copilot не для генерации кода с нуля, а для предложения альтернатив уже написанной логике.
-
Тесты до фич — если AI генерирует код, сразу требуем тесты к нему. Так хотя бы будет понимание, что именно должно работать.
// Осознанный подход: сначала интерфейсы
interface OrderProcessor {
process(order: Order): Promise<Result>;
}
// Потом реализация с помощью AI
На своём последнем проекте я пробовал hybrid approach: core domain писал вручную, инфраструктурные вещи (типа API клиентов) делегировал AI. Результат — в 3 раза медленнее pure vibe coding, зато через месяц мы могли добавлять фичи без рефакторинга всей кодовой базы.
Vibe coding — отличный инструмент для валидации идей, но продакшн требует old school инженерии. Как показывает практика, баланс между скоростью и качеством всё ещё приходится находить вручную.
Попробуй сам: Cursor — AI-редактор для разработчиков.
Источник: https://dev.to/ivorharaald/why-vibe-coded-products-stall-the-moment-they-hit-production-3ibd