05 / 06 · Best Practices

🧭 Andrej Karpathy

Ex-директор AI в Tesla, один из основателей OpenAI, автор термина «vibe coding». Karpathy первым назвал словами то, что многие разработчики уже делали интуитивно — но его же собственная практика с конца 2025 года показывает: vibe coding и настоящая инженерия с CC — это два разных режима работы, и путать их опасно.

🧭
Andrej Karpathy
Ex-Tesla AI, ex-OpenAI, автор термина «vibe coding»
⚠️
Частая ошибка новичков: термин «vibe coding» разлетелся по интернету и стал означать «просто доверься LLM и не думай» — в любом контексте, включая продакшн-код с реальными пользователями. Это искажение исходной идеи Karpathy. Он описывал конкретный режим: маленькие эксперименты, прототипы, обучение — там где цена ошибки низкая. Перенос той же беспечности на боевой сервис с платежами или персональными данными — не vibe coding, а халатность, замаскированная модным словом.
🧭 Ключевой принцип

Ты по-прежнему отвечаешь за свой софт. Нельзя вносить уязвимости только потому, что код писался в режиме vibe coding — ответственность за результат не делегируется модели вместе с написанием строк. Вопрос не «кто печатал код», а «кто проверил, что он безопасен и корректен».

💡
Тонкость для опытных: декабрь 2025 года Karpathy называет переломной точкой лично для себя — с новым поколением моделей крупные куски кода стали выходить рабочими сразу, без ручных правок, которые раньше были обязательной частью его цикла. Но это не значит «теперь можно меньше проверять». Это значит, что усилие человека сместилось: раньше ты правил код построчно, теперь ты формулируешь требования и оценки результата заранее — до генерации, а не после.
1
Vibe coding — что это на самом деле

По формулировке Karpathy, vibe coding — это когда ты описываешь желаемый результат на высоком уровне, доверяешь AI написать код целиком и сознательно не вычитываешь каждую строку и каждый шаг. Ты остаёшься в потоке идеи, а не в деталях реализации.

Это не халтура — это осознанный выбор режима работы под конкретную задачу. Ключевое слово «сознательно»: ты заранее решаешь, что для этой задачи вычитка построчно не нужна, потому что цена ошибки низкая и результат легко откатить.

Идея vibe coding в том, чтобы поднять пол — дать возможность писать работающий софт человеку, который никогда не написал ни строчки на Python. Раньше порог входа в программирование отсекал огромное количество людей с хорошими идеями; vibe coding убирает этот порог для целого класса задач.

Пример небрежного, но уместного vibe-запроса для быстрого прототипа:

Сделай мне лендинг для идеи стартапа: калькулятор
чаевых с разными настроениями (жадный/щедрый/по-братски).
Пусть будет весело, с анимациями. Не важно как названы
переменные, просто чтобы работало и выглядело прикольно.

Это нормальный промпт — для одноразового прототипа, демо на хакатоне или обучающего эксперимента. Проблема начинается, когда тот же стиль запроса применяют к сервису, который завтра пойдёт в продакшн.

2
Пол vs потолок — главное разделение

Karpathy проводит жёсткую границу между двумя разными эффектами, которые LLM-агенты оказывают на разработку, и путать их — источник большинства недоразумений вокруг «AI пишет весь код за меня».

Vibe coding поднимает пол
Открывает доступ людям без опыта в программировании — идея превращается в работающий прототип без изучения синтаксиса языка
Agentic engineering поднимает потолок
Увеличивает throughput профессионала — тот, кто уже умеет писать качественный софт, делает больше того же качества за единицу времени

Это не два конца одной шкалы «доверия к AI» — это две разные оси с разной аудиторией, разной целью и разными критериями успеха. Смешение этих режимов — когда профессионал работает в стиле «поднятия пола» на задаче, которая требует «поднятия потолка» — и есть корень большинства инцидентов с AI-сгенерированным кодом в проде.

Почему это не просто терминология

Если ты воспринимаешь agentic engineering как «vibe coding, но для профессионалов» — ты упускаешь суть. Это разные практики с разными обязательными шагами. Vibe coding можно начать без спецификации. Agentic engineering без спецификации, тестов и ревью — это vibe coding под чужим именем, и он несёт те же риски, только с более высокой ставкой.

3
Vibe coding vs Agentic engineering — сравнение по осям

Таблица ниже — рабочий инструмент, а не философия: перед началом задачи с CC реально стоит спросить себя «в каком я сейчас режиме» и свериться со столбцом.

Ось Vibe coding Agentic engineering
Цель Поднять пол — дать доступ тем, кто не пишет код Поднять потолок — увеличить throughput профессионала
Кто использует Новичок, не-разработчик, идея-первым основатель Инженер, который отвечает за качество и последствия
Ответственность Формально та же — но часто не осознаётся Явная и принятая: ты подписываешься под результатом
Чтение кода Минимальное или отсутствует Обязательное — код читают, хотя пишет его агент
Роль человека Автор идеи, наблюдатель результата Oversight — 99% времени не пишешь код напрямую, а оркестрируешь агентов и проверяешь их работу
Риск при ошибке Низкий — прототип, демо, обучение, легко откатить Высокий — прод, пользователи, деньги, данные, уязвимости
Новый дефолт: 99% времени ты не пишешь код напрямую, ты оркестрируешь агентов и выступаешь как oversight. Слово «engineering» здесь не случайно — оно подчёркивает, что в этом есть искусство, наука и экспертиза, а не просто расслабленное «доверился и жду результата».
4
Когда vibe coding уместен — и когда нет

Разделение «пол vs потолок» превращается в практическое правило выбора режима под задачу. Ошибка — не в самом vibe coding, а в применении его там, где нужен другой режим.

Vibe coding уместен
Нужен agentic engineering
Прототипы и обучение
  • Проверка идеи стартапа за вечер
  • Личные скрипты и утилиты для себя
  • Обучение — понять как работает технология через эксперимент
  • Хакатоны, демо, one-off визуализации
  • Нет пользователей, нет реальных данных, нет денег на кону
Продакшн и безопасность
  • Код с доступом к реальным пользовательским данным
  • Всё, что касается аутентификации, платежей, прав доступа
  • Сервисы с внешним периметром — публичные API, формы ввода
  • Код, который переживёт тебя в команде — его будут менять другие
  • Любая ситуация, где цена отката ошибки высокая

Практический тест на переключение режима: если ошибка в этом коде может стоить денег, данных пользователей или репутации — ты уже не в vibe coding, независимо от того, как ты формулировал промпт.

5
Дисциплина agentic engineering — spec, тесты, инфраструктура, суждение

По мысли Karpathy, переход от vibe coding к agentic engineering требует роста в четырёх направлениях одновременно: лучше спецификации, лучше тесты, лучше инфраструктура и лучше суждение (judgment) о том, где агенту доверять, а где — нет. Ни один инструмент не заменяет это автоматически.

Контраст в промптах — та же задача, два режима:

# VIBE CODING (для прототипа — нормально)
"Добавь эндпоинт для смены пароля пользователя"


# AGENTIC ENGINEERING (для продакшн-сервиса — обязательно)
"""
Задача: эндпоинт смены пароля для продакшн API.

Спецификация:
- POST /api/users/{id}/password
- Требует текущий пароль для подтверждения (re-auth)
- Новый пароль: минимум 12 символов, проверка через zxcvbn
- Инвалидировать все текущие сессии кроме текущей после смены
- Rate limit: не более 5 попыток в час на пользователя
- Логировать факт смены (без самого пароля) в audit log

Тесты которые должны пройти (напиши тесты первыми):
- Успешная смена с верным текущим паролем
- Отказ при неверном текущем пароле (401, без утечки в тексте ошибки)
- Отказ при слабом новом пароле с понятным сообщением
- Все остальные сессии становятся невалидными
- Rate limit блокирует 6-ю попытку в течение часа
- SQL-инъекция и XSS в поле пароля не проходят как валидный ввод

После реализации: покажи план изменений и жди подтверждения
перед применением к коду. Не удаляй существующие тесты
аутентификации.
"""

Модель для второго промпта — claude-sonnet-5 с Plan Mode: агент показывает план файлов и изменений до выполнения, а тесты пишутся до реализации, чтобы у агента не было соблазна подогнать код под удобный, а не правильный результат.

Почему объём промпта — это не бюрократия

Разница между двумя промптами выше — не «один быстрее другого». Первый промпт делегирует агенту все решения о безопасности неявно, и агент либо угадает твои ожидания, либо нет. Второй промпт превращает неявные ожидания в явные проверяемые критерии — именно это Karpathy имеет в виду под «лучше specs, лучше тесты»: дисциплина сдвигается на вход процесса, а не остаётся вычиткой на выходе.

6
Путь от vibe coding к agentic engineering

Переход — не единовременное решение «теперь я серьёзный инженер», а постепенное наращивание дисциплины по мере роста ставок задачи. Ниже — как это выглядит на практике при работе с CC.

1
Прототип в режиме vibe coding
Высокоуровневый промпт, минимум вычитки, цель — проверить идею быстро
2
Прототип показал ценность — стоп
Явная точка решения: этот код пойдёт дальше прототипа? Если да — режим меняется, а не код продолжает жить как есть
3
Спецификация задним числом
Формализуешь то, что раньше было в голове: что должен делать код, какие у него границы и ограничения
4
Тесты на реальные требования
CC или разработчик пишет тесты под спецификацию, а не под то, что код уже делает
5
Ревью с фокусом на периметр
Особое внимание — авторизация, ввод данных, секреты; здесь цена пропуска максимальная
6
Agentic engineering как новый дефолт
Дальнейшая работа над этим кодом идёт через oversight — ты оркестрируешь агентов, а не пишешь и не принимаешь код вслепую
Самая частая ошибка на этом пути

Пропустить шаг 2 — не остановиться и не задать вопрос явно. Прототип тихо становится частью продакшена, потому что «уже работает же». Именно здесь возникают уязвимости, которые потом описывают как «AI написал небезопасный код» — хотя на деле никто не менял режим работы вместе с изменением ставок.

Ресурсы Andrej Karpathy

Ресурс Тема Почему читать
karpathy.ai Личный сайт, эссе и проекты Первоисточник идей об AI-разработке от их автора
@karpathy Мысли в реальном времени Здесь впервые прозвучал термин «vibe coding» и последующие уточнения