Vibe Coding… или… Engineering?
Несколько недель назад сижу в бизнес-зале аэропорта Даламана и жду рейс, который отложили на пару часов. Никого не трогаю. Передо мной ноут, на нём неспешно работают агенты, я изредка переключаю окошки и смотрю, у кого как дела. В общем, обычное дело.Женщина из-за соседнего столика (как потом выяснилось, из какого-то банка) идёт за кофе и бросает взгляд на мой экран:— Вайбкодите?Я начал было «да нет…» и осёкся. А что я, собственно, делаю? И как это называется?На экране в тот момент была xlcalc, библиотека для расчёта Excel-формул на JavaScript. Сначала она жила внутри харнесса офисного агента, который работает с документами. Потом работа с Excel понадобилась ещё в паре проектов, и я вынес её в отдельный проект.Сейчас в ней больше 70 тысяч строк кода и 522 функции Excel. Runtime-зависимостей нет. Она читает и пишет XLSX, умеет динамические массивы.
Из этих строк я не написал ни одной.Легче от этого не стало. Объяснять агентам, что именно нужно получить и в каком виде, выматывает на порядок быстрее, чем писать код самому.Мог ли я написать всё это руками? Мог. Года за два. Здесь ушёл месяц.Термин vibe coding придумал Андрей Карпати в феврале 2025-го. Так он назвал режим, в котором человек «полностью отдаётся вайбу», жмёт Accept All не глядя и забывает, что код вообще существует. Для проекта на выходные это нормально. Но слово быстро стало ругательным. Если бездумно отдать агенту задачу и ждать качественного результата, получится ровно то, за что термин и невзлюбили.В октябре 2025-го Саймон Уиллисон (один из создателей Django) предложил название для другого конца спектра: vibe engineering. Это когда опытные разработчики ускоряют работу с помощью LLM, но полностью отвечают за то, что выпускают. Он сам признавал, что название дурацкое и отдаёт противопоставлением «кодеры против настоящих инженеров». Но, по его словам, здесь такое разделение как раз нужно. А к февралю 2026-го прижилось другое название, agentic engineering, и Уиллисон признал, что победило оно.
Мне вспоминается старое различие между кодером и разработчиком. Кодер пишет код. Разработчик отвечает за то, что этот код делает, причём и через год тоже.
Кода библиотеки я не читал. Его вообще никто не читал целиком: каждый агент видел свой кусок. Так что по чтению кода граница не проходит. Она проходит по вопросу «откуда известно, что это правильно». У вайбкодера ответ «попробовал, работает». У меня ответ всегда артефакт, записанный до того, как агент начал:
Сверка с настоящим Excel - Каждую функцию проверяем на тест-кейсах против Excel, включая краевые случаи. Одни только вставка и удаление строк, перенос и копирование диапазонов замерены на 317 файлах Excel
Критерии приёмки у каждой задачи, тест у каждого бага.
Живые пользователи - Пока проект не проверен шаловливыми руками пользователей, ни в чём нельзя быть уверенным. Отчасти для этого публикую, вдруг кому-нибудь нужен бесплатный эксель, который можно поставить как PWA :)
Архитектура и решения. - Что строим, где границы, кто за что отвечает. Как разделить слои системы? Как они должны взаимодействовать друг с другом, причём это даже не про код и API (это агенты уже сами прекрасно умеют), а про функциональные границы.
Агенты при этом похожи на армию очень странных стажёров, которые при случае сжульничают (это тоже Уиллисон). Поэтому ревью, ревью и ещё раз ревью, и, как ни странно, ревью тоже агентами, в идеале на базе LLM других семейств.
Ответа я так и не нашёл: грань достаточно зыбкая и в современном мире постоянно двигается. Так что пока ловим баланс, что уже можно отпустить, а за чем нужен глаз да глаз. И, если честно, немного страшно осознавать, какие тектонические сдвиги произошли за последние 6–9 месяцев.
Что получилось из библиотеки, полностью написанной ИИ:
Демо xlcalc.online. Можно открыть свой XLSX и пересчитать его прямо в браузере (все расчеты тут же, файл на сервер не уходит).
Библиотека и Vue-компонент xlcalc.pridelab.dev
Всё под MIT. Но бойтесь: это написал ИИ ;)