Вайб-кодинг
Также известен как
Vibe coding — термин Андрея Карпатого: «полностью отдаться вайбу... и забыть, что код вообще существует».
Контекст
Разработчик описывает цель одной фразой, агент генерирует, разработчик принимает всё, что запускается и выглядит работающим. Дифф не читается, ошибки лечатся копипастой сообщения обратно в чат. На прототипе выходных это пьяняще продуктивно — и привычка переезжает в рабочий проект.
Проблема
Продукт разговора принимается без понимания и без проверки: код не читан, требования нигде не записаны, критерий приёмки — «вроде работает». В живой кодовой базе появляется слой, о котором никто не может сказать, что он должен делать.
Почему так делают
- Скорость опьяняет: фича за вечер против недели — трудно заставить себя замедлиться ради чтения диффа.
- На прототипах это честно работает: там цена ошибки — ноль, и привычка закрепляется как «просто способ работать».
- Читать чужой код скучно, а агентский — ещё и длинно.
- «Агент знает этот фреймворк лучше меня» — правда, из которой не следует, что результат правилен.
Последствия
- ➖ Код без владельца: никто не понимает, как устроена фича, — ревьюить, чинить и развивать её некому.
- ➖ Намерение утеряно: через месяц нельзя отличить «так задумано» от «так получилось» — требования существовали только в голове и чате.
- ➖ Краевые случаи и безопасность неизвестны: их никто не проверял, потому что критерий был «выглядит работающим».
- ➖ Каждое следующее изменение дороже: слой непонятого кода растёт, и агент строит новое поверх непроверенного старого.
Признаки
- Дифф смержен непрочитанным.
- На вопрос «как это работает» ответ — «не знаю, агент написал».
- Требования восстанавливаются чтением кода, потому что больше их нигде нет.
- Аргумент качества — «работает же».
Как лучше
Развести режимы по цене ошибки. Вайбу — его законную зону: одноразовые прототипы, одноразовые скрипты, эксперименты — всё, что умрёт раньше, чем понадобится его понимать. Рабочему коду — рабочий процесс: намерение фиксируется (спецификация или хотя бы план из четырёх фаз), результат проверяется (петля обратной связи), дифф читается — самим или рецензентом со свежим контекстом. Грань проста: код, который будет жить, должен быть кому-то понятен.
Пример
Было:
— Сделай страницу оплаты подписки. — …— Работает, мержим.
Стало:
Для прототипа лендинга — вайб, не читая: он умрёт на этой неделе. Для оплаты — спецификация с критериями, реализация по плану, сквозная проверка сценария оплаты и ревью диффа свежим сабагентом: этот код будет обрабатывать деньги дольше, чем мы будем помнить этот разговор.
Связанные паттерны и анти-паттерны
- Одноразовый прототип — легальная форма вайба: выбрасываемый код с вопросом и вердиктом вместо кода без владельца.
- Спеко-ориентированная разработка — противоположный полюс: намерение записано и переживает разговор.
- Преждевременный успех — верный спутник: код не читан и поведение не проверено.
- Уан-шот — брат по происхождению из демо: там ждут всего с одного промпта, здесь принимают всё после него.