Вайб-кодинг стал словом 2025 года по версии Collins Dictionary. 80% российских разработчиков уже попробовали этот подход, а четверть стартапов в Y Combinator имеют кодовую базу, на 95% сгенерированную ИИ. Но за красивыми цифрами скрывается неудобная правда: вайб-кодинг — это не волшебная палочка для тех, кто не умеет программировать, а мощный инструмент, эффективность которого напрямую зависит от знаний пользователя.
Что такое вайб-кодинг и почему о нём все говорят
В феврале 2025 года Андрей Карпатый, бывший директор по ИИ в Tesla и сооснователь OpenAI, опубликовал твит, который изменил индустрию:
"Существует новый способ писать код, который я называю «вайб-программированием», когда вы полностью погружаетесь в поток и забываете, что код вообще существует. Я прошу сделать самые примитивные вещи вроде «уменьши размер боковой панели в два раза», потому что мне лень искать это место в коде."
Суть проста: описываешь задачу словами — ИИ пишет код. "Программирование атмосферой, а не переменными", как написал Collins Dictionary. Низкий порог входа и скорость создания MVP сделали подход популярным. Cursor, Windsurf (который OpenAI купила за $3 млрд), Claude Code, GitHub Copilot — инструменты доступны каждому.
Но давайте посмотрим, что происходит, когда этими инструментами пользуются люди с разным уровнем подготовки.
Две стороны медали: примеры из практики
Пример 1: SQL-инъекция в форме авторизации
Представим типичную ситуацию. Новичок просит ИИ: "Сделай форму входа с проверкой логина и пароля из базы данных".
Что генерирует ИИ:
def login(username, password):
query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"
result = db.execute(query)
if result:
return "Успешный вход!"
Реакция новичка: "Отлично, работает! ИИ за 5 секунд написал то, на что у меня ушло бы полчаса!"
Реакция профессионала: "Стоп, это же классическая SQL-инъекция! Любой может войти с username admin' OR '1'='1' --. Согласно исследованию NYU Tandon School, в 40% случаев Copilot генерирует код с уязвимостями."
Правильное решение:
def login(username, password):
# Используем параметризованные запросы
query = "SELECT * FROM users WHERE username = %s AND password = %s"
# И конечно, пароль должен быть хеширован!
result = db.execute(query, (username, hash_password(password)))
Пример 2: XSS в выводе пользовательских данных
ИИ генерирует:
// Промпт: "Выведи комментарии пользователей на страницу"
function displayComment(comment) {
document.getElementById('comments').innerHTML +=
'<div class="comment">' + comment.text + '</div>';
}
Новичок: "Круто, комментарии отображаются!"
Профессионал: "А если в comment.text будет <img src=x onerror="alert('XSS')">? Исследование Veracode показывает, что 45% созданного ИИ кода содержит классические уязвимости из OWASP Top 10."
Безопасное решение:
function displayComment(comment) {
const div = document.createElement('div');
div.className = 'comment';
div.textContent = comment.text; // textContent автоматически экранирует HTML
document.getElementById('comments').appendChild(div);
}
Пример 3: Работа с устаревшими API
Реальный кейс из статьи "Вайб-кодинг глазами старого разработчика" на Хабре. Автор использовал ИИ для работы с Bitrix24 API:
// ИИ генерирует
async function getTasks() {
const response = await fetch('/api/task.item.list'); // Устаревший метод!
const tasks = await response.json();
return tasks; // А где обработка пагинации?
}
Новичок: "Работает медленно, но работает же!"
Профессионал: "Во-первых, используется устаревший метод API task.item.list вместо tasks.task.list. Во-вторых, API Bitrix24 выдаёт списки порционно по 50 ответов за раз. В-третьих, где обработка ошибок?"
Правильный подход:
async function getTasks(start = 0) {
try {
const allTasks = [];
let hasMore = true;
while (hasMore) {
const response = await fetch(`/api/tasks.task.list?start=${start}`);
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
allTasks.push(...data.result.tasks);
hasMore = data.result.tasks.length === 50;
start += 50;
}
return allTasks;
} catch (error) {
console.error('Ошибка при получении задач:', error);
throw error;
}
}
Проблемы безопасности: цифры не врут
Исследования рисуют тревожную картину:
40% кода, сгенерированного GitHub Copilot, содержит уязвимости (NYU Tandon School, 2025)
45% ИИ-кода содержит уязвимости из OWASP Top 10 (Veracode, 2025)
20% приложений, созданных вайб-кодингом, содержат серьёзные уязвимости (Wiz, 2025)
Реальные последствия:
Fortnite (300+ млн пользователей) — SQL-инъекция через вайб-код привела к компрометации аккаунтов
Приложение Tea — две крупные утечки данных из-за некачественного ИИ-кода
CVE-2025-55284 — уязвимость в Claude Code позволяла извлекать данные с компьютера разработчика
Симптомы "уставшей модели"
После 20-30 итераций правок модель начинает вести себя странно. Из статьи "Вайб-кодинг глазами старого разработчика":
def process_data(data):
# Обработка данных
result = clean_data(data)
# Модель упорно добавляет новый код сюда
api_response = fetch_external_api() # ???
return result
def fetch_external_api():
# А должна была добавить сюда
pass
Признаки переполнения контекста:
ИИ вставляет код не в те места
Повторяет одни и те же ошибки
Чередует 2-3 нерабочих решения
"Забывает" предыдущие исправления
Как выразился один разработчик: "Бесячих эмодзи огоньков было больше, чем правильных решений. Ободряющий тон после моих сообщений об ошибках тоже бесил, потому что ошибки-то не мои — зачем меня ободрять?"
Архитектурная слепота
Вайб-кодинг генерирует всё в одном файле:
<!DOCTYPE html>
<html>
<head>
<style>
/* 500 строк CSS */
</style>
</head>
<body>
<div id="app"></div>
<script>
/* 1000 строк JavaScript */
/* Вся бизнес-логика */
/* Все обработчики */
</script>
</body>
</html>
Новичок: "Удобно, всё в одном файле!"
Профессионал из комментария на Хабре: "Код пишут в первую очередь для других программистов. В нынешнем виде в нём очень сложно разбираться. Для поддержки такого проекта потребовался бы рефакторинг. Нужна декомпозиция как минимум по трём файлам: CSS со стилями, JS с логикой и HTML со структурой."
Тестирование: невидимая граница между хаосом и порядком
Иллюзия работоспособности
Типичный подход новичка:
def calculate_discount(price, discount_percent):
return price * (1 - discount_percent / 100)
# "Проверил на калькуляторе - 100 * 0.9 = 90. Работает!"
Профессионал пишет тесты:
def calculate_discount(price, discount_percent):
"""Расчёт цены со скидкой с валидацией"""
if not isinstance(price, (int, float)) or price < 0:
raise ValueError("Цена должна быть положительным числом")
if not 0 <= discount_percent <= 100:
raise ValueError("Скидка должна быть от 0 до 100%")
return round(price * (1 - discount_percent / 100), 2)
def test_calculate_discount():
# Обычные случаи
assert calculate_discount(100, 10) == 90.00
assert calculate_discount(99.99, 15) == 84.99
# Граничные случаи
assert calculate_discount(100, 0) == 100
assert calculate_discount(100, 100) == 0
# Обработка ошибок
with pytest.raises(ValueError):
calculate_discount(-100, 10) # отрицательная цена
with pytest.raises(ValueError):
calculate_discount(100, 150) # скидка больше 100%
Регрессия при итерациях
Из опыта пользователя с Хабра: "Нейросеть может при исправлении ошибок наделать новых. Например, есть ошибка, указываю на неё, нейросеть её исправляет, но делает ещё две на ровном месте."
Версия 1: ИИ генерирует функцию
def process_payment(amount, card_number):
if amount <= 0:
return {"error": "Invalid amount"}
# обработка платежа
return {"success": True}
Версия 2: Просим добавить валидацию карты
def process_payment(amount, card_number):
if len(card_number) != 16: # ИИ добавил валидацию
return {"error": "Invalid card"}
# Упс! ИИ потерял проверку amount <= 0
# обработка платежа
return {"success": True}
Эволюция разработчика в эпоху ИИ
Уровень 1: Новичок (опасная зона)
Копирует всё подряд
Не понимает сгенерированный код
Игнорирует предупреждения
Результат: технический долг, уязвимости, "карточные домики"
Уровень 2: Продвинутый пользователь
Проверяет сгенерированный код
Понимает базовые концепции
Использует для изучения новых библиотек
Результат: ускорение разработки на 30-40%
Уровень 3: Профессионал
Использует для рутинных задач
Генерирует тесты, а не только код
Исправляет архитектурные решения
Результат: фокус на бизнес-логике, x2-x3 продуктивность
Правильный подход к вайб-кодингу
Когда использовать:
✅ Прототипирование и MVP
✅ Генерация boilerplate кода
✅ Написание тестов
✅ Изучение новых библиотек
✅ Рефакторинг с тестовым покрытием
Когда НЕ использовать:
❌ Критичная бизнес-логика без code review
❌ Работа с персональными данными
❌ Сложные алгоритмы без понимания
❌ Production код без тестов
❌ Системы с высокими требованиями к безопасности
Чек-лист профессионала:
[ ] Понимаю ли я, что делает код?
[ ] Есть ли тесты?
[ ] Проверил ли на уязвимости (SQL-инъекции, XSS)?
[ ] Соответствует ли архитектуре проекта?
[ ] Обработаны ли граничные случаи?
[ ] Будет ли код понятен другим разработчикам?
Взгляд в будущее
Y Combinator сообщает, что 25% стартапов в зимнем наборе 2025 года имеют кодовую базу на 95% сгенерированную ИИ. Это не случайность, а тренд. Но что это значит для индустрии?
Мнение экспертов:
Технический директор Arcsinus Артём Потёмин: "Вайб-кодинг — актуальный инструмент, который может сэкономить программисту много времени, но не избавляет от необходимости иметь профессиональные навыки."
Из исследования ICT.Moscow: "Программирование включает в себя логику, архитектуру и оптимизацию, и с этим ИИ не справится без участия человека. Это инструмент, а не замена разработчику."
Заключение
Вайб-кодинг — это не волшебная таблетка и не угроза профессии. Это инструмент, который усиливает сильных и ослабляет слабых. В руках новичка без знаний — это генератор технического долга и уязвимостей. В руках профессионала — ускоритель продуктивности в 2-3 раза.
Исследователь из NYU выразился точно: "То, что является лучшей практикой на момент написания, может постепенно превратиться в плохую практику по мере развития ландшафта кибербезопасности." Но это верно для любого инструмента в нашей индустрии.
Главный вывод: вайб-кодинг не заменяет знания, он их усиливает. Как калькулятор не отменил необходимость знать математику, так и ИИ-ассистенты не отменят необходимость понимать, как работает код.
"Вайб-кодинг без знаний — это как вождение с закрытыми глазами по навигатору. Да, голос говорит куда поворачивать, но вы не видите ни ям, ни пешеходов, ни того, что мост впереди ещё не достроен."
P.S. Эта статья написана человеком, который использует вайб-кодинг каждый день. Но перед публикацией я проверил каждый пример кода, каждую цитату и каждую статистику. Потому что ответственность за результат всегда лежит на разработчике, а не на инструменте.
Источники:
Комментарии (23)

RichardMerlock
08.11.2025 14:08Надо чтобы ЛЛМ после каждой сессии вайбкодинга возвращала файл состояния, который потом можно снова скормить модели и продолжить заниматься вайбмодификациями. Что-то типа вайбпроекта. А в самом конце провести вайбкомпиляцию и выпустить вайбрелиз с ЛЛМ рантаймом.
Ну вы поняли. Слой ЛЛМ абстракций.

alex_lol
08.11.2025 14:08Сейчас, как всегда, автору напихают в панамку. Уже -1 вижу. На этом ресурсе говорить про LLM нельзя, любые доводы в пользу LLM жёстко пресекаются в виде занижения кармы, комментарии минусуются без какой-либо аргументации, в лучшем случае начинается манипулирование через "вброс на вентилятор" и увод дискуссии в стороны.
В руках новичка без знаний — это генератор технического долга и уязвимостей. В руках профессионала — ускоритель продуктивности в 2-3 раза.
Это даже дураку понятно, но некоторые не слышат, не верят, не хотят признавать. Как я писал в одном из комментариев, проблемы с LLM нет, есть проблема с людьми. Это обыкновенное людское тщеславие, когда люди не хотят признавать факт того, что LLM опрокинул в парадокс все их старания за последние десятки лет стажа. Жил-был такой айтишник, фреймворки учил, языки всякие, а тут фигак и чат появился, который в этом фреймворке лучше самого айтишника разбирается, а код пишет в 1000 раз быстрее.
Тут, на самом деле, даже обсуждать нечего, LLM - это факт и новая реальность, которая изменит профессию.

orenty7
08.11.2025 14:08Кек))
Не вытянуть дискуссию
Начать грубить
Получить минусов в карму
Пойти жаловаться про затыкание ртов под другими статьями

alex_lol
08.11.2025 14:08Не вытянуть дискуссию
Я привожу в пример аннотации для OpenApI в формате Swagger (на 400 строк) для языка PHP и говорю о том, что LLM мне в соответствии с эталонным образцом делает рефакторинг других схем (которых ещё 50 штук), подразумевая, что LLM мне оказывает колоссальную помощь в поддержке и актуализации этих громоздких кусков текста. Ссылка
Приходит человек и начинает уводить дискуссию в сторону, дословно: "Эта задача решается внутри языка с помощью рефлексии/интроспекции. Вот один из ваших объектов описанный в питоне"
На моё замечание, что причем тут вообще Питон начинается манипуляция и вброс на вентилятор: "Вы приводите в пример задачу, которая решается автоматически". При этом, как решить это "автоматически" на PHP ответа не последовало.
При этом сообщество плюсует эти комментарии.
Начать грубить
В реальной жизни я бы в табло за такое зарядил. Потому, что это не дискуссия, это дешевые провокации на уровне гопарей из подворотни.
У меня проект на PHP, определенной версии, с готовой кодовой базой, которую необходимо поддерживать. Каким боком и зачем ты Питон приплёл в обсуждение? - я так и не получил ответа на вопрос.
Знаешь, что меня больше всего радует в этих ваших анонимных минусах и слитии кармы? То, что вы нутром понимаете, что ваши знания сегодня стремительно обесцениваются с развитием LLM. И что многих из вас ждёт в итоге работа курьером. За еду. Выживут те, кто будет умнее, гибче, мобильнее. Можете дальше тешить себя иллюзиями, что профессия писателя кода руками будет как и прежде считаться чуть ли не элитарной, но... ваша вера вас не спасёт. Маховик запущен и мы это наблюдаем уже сейчас.

orenty7
08.11.2025 14:08Приходит человек и начинает уводить дискуссию в сторону
Там не аннотации для OpenAPI в формате Swagger обсуждались, а языковые модели, и почему статьи про них минусуются. Мой тезис -- потому что там разбирают задачи, которые давно автоматизированы в нормальных языках
На моё замечание, что причем тут вообще Питон начинается манипуляция и вброс на вентилятор
Давайте ещё раз: мой тезис в том, что статьи минусуются потому что разбирают решённые в других языках задачи. Я беру ваши аннотации на php и в качестве примера показываю как выглядит решение на питоне. Пример на другом языке нужен чтобы проиллюстрировать, что на других языках эти задачи решаются автоматически.
В реальной жизни я бы в табло за такое зарядил.
О, интернет-боксёр! А я думал они годах в двухтысячных вымерли
Каким боком и зачем ты Питон приплёл в обсуждение? - я так и не получил ответа на вопрос.
Я на этот вопрос уже несколько раз отвечал. Выше попытался разжевать максимально подробно, но если и так будет неясно, то вряд ли я смогу ещё чем-то помочь.
Знаешь, что меня больше всего радует в этих ваших анонимных минусах и слитии кармы? То, что вы нутром понимаете, что ваши знания сегодня стремительно обесцениваются с развитием LLM.
У вас минусы и слитая карма за грубости и неумение вести дискусию. Научитесь аргументированно выражать свою точку зрения, а не:
мне абсолютно по х-м обсуждение других ЯП и ваши детские священные войны
в реальной жизни я бы в табло за такое зарядил.
и с удивлением обнаружите, что карма, даже при высказывании непопулярных мыслей, не идёт вниз
Выживут те, кто будет умнее, гибче, мобильнее.
Я бы заметил, что пишет это php-шник с 25-летним стажем, который не удосужился выучить js, но, боюсь, вы не поймёте иронию ситуации

T700
08.11.2025 14:08LLM есть тупой калькулятор. Проект на php, может быть LLM потянет, но что же делать есть проект на Си, или если проект на 220 тыс строк, в виде микросервисов, и внезапно надо внести изменения, которые затрагивают все части проекта, и прежде надо хорошо подумать как сделать, выслушать, уточнить задачу, смоделировать работу и последствия изменений. Я виду речь про fullstack и crm всей компании.
Это высокомерие напрасно.
А LLM есть очень лёгкая попытка, скопировать работу мозгов, но оригинал есть непревзойдённым.
Элитарность, да в чем она? В закрытии тасков? В инфляции знаний? В постоянном обучении? В обесценивание труда? В отчуждении результата работы? В том что, карьера в ит это часто про поиск работы?
Про комментарии и увод от темы, мне дела нет. Бывает тут и не такое.

MountainGoat
08.11.2025 14:08если проект на 220 тыс строк, в виде микросервисов, и внезапно надо внести изменения, которые затрагивают все части проекта,
А если не надо? Вот все так говорят, будто LLM уже сегодня обязана заменить всех специалистов целиком, а если не может, то значит её не существует. Вот мне – не надо менять целиком весь проект на Си, и никогда не понадобится. А если понадобится, я спокойно обойдусь делать не в одну команду.

T700
08.11.2025 14:08Не знаю что умеет LLM, я не использую, но пишут разное, и очевидно, что он думать не умеет. Соображать, значит оперировать образами, т. е. абстрактно понимать весь проект и последствия при принятии решения (бизнес всегда, и постоянно вносит изменения в функционал системы). Отдать код LLM, это по сути отправить его в сеть, что невозможно для нормального коммерческого проекта. Конец профессии, из-за LLM, поживем увидим (Ашманов и Касперская, говорят что это хайпы старой технологии LLM)

nikulin_krd
08.11.2025 14:08Извините конечно… Я не вовлечен в ваш срач, но ваше «В реальной жизни я бы в табло за такое зарядил», говорит о том, что вы крайне не адекватны. Нормальный человек не будет рассказывать о возможности причинения насилия тому, кто, по его мнению, имеет «неправильное» мнение. А по поводу ваших тезисов про LLM и программистов - ну не решает в данный момент LLM задачи лучше того же синьора или лида, только геморрой доставляет в виде правки кода за этим LLM. Я лучше сам напишу код, чем буду за кем-то его править

Gromilo
08.11.2025 14:08а тут фигак и чат появился, который в этом фреймворке лучше самого айтишника разбирается
И хорошо, что разбирается. А я у него поучусь. Но я никогда пропущу код, который не понимаю.
код пишет в 1000 раз быстрее.
Получается по разному, иногда быстро получаю рыбу нужной функции, иногда уточняю SQL-запрос дольше чем сам бы руками сделал.
Я бы сказал, что результат весьма средний пока. Руками у меня лучше получается, но ИИ не плохо генерит основу для допиливания напильником.

Gizensha
08.11.2025 14:08Да это типичные хабролицемеры, такое задолго до ИИ было, просто у них новая красная тряпка. Это в любом сообществе с кармочкой происходит, потому что суть кармы - в подавлении инакомыслия и создании эхокамеры. Типичный пример - реддит.
Я немало акков уже потратил, открывая им на это глаза, но воз и ныне там. Больше всего кринжа от того, что строят из себя борцунов с мракобесием, а у самих вилы и костёр всегда наготове. Над боящимися 5Г-вышек и ГМО смеются, а как ИИ, так сами такие же, ведь шкурный интерес - работу потерять.
а впрочем, какая разница, всех не передавят

ZeroMatrix
08.11.2025 14:08Опять статью навайбкодили? Автор
высралвыпустил 3 статьи, полностью написанных LLM. Мог бы для приличия ✅ и ❌ убрать, но даже такая простая стратегическая мысль разжиженному вайбкодингом мозгу недоступна. Я люблю хабр, и когда такие авторы плюют в лицо сообществу, мне очень, очень-очень обидно.

VM1989
08.11.2025 14:08Все фанаты AI носятся со "словом года". В 2021 году словом года было "NFT". Как это самое NFT сейчас поживает?

MountainGoat
08.11.2025 14:08А почему NFT? Почему, например, не автомобили? Когда-то тоже были бы словом года ,если бы это кого-то волновало. И толку? Грохочет, дымит, то загорится, то с обрыва упадёт. Ну и где они, эти самые автомобили, как, ездят? Благородные доны 20 веков предпочитали почтенно передвигаться верхом.

Kamil_GR
08.11.2025 14:08Зря минусуют статью. Вполне здраво написано. Все проблемы, описанные в статье, логично вытекают из принципиальных недостатков LLM,
Единственное с чем можно было бы поспорить это х2, x3 производительности профессионала.
MountainGoat
До всяких ИИ пытались сделать визуальное программирование, до него – программирование на простом английском языке. Всё всегда спотыкалось об один и тот же факт:
Единственным недвусмысленным описанием кода является сам этот код.
Чтобы использовать LLM в разработке, нужно изучать то, как LLM трактует двусмысленности, и насколько подробным нужно быть при постановке задачи; а так же учиться ловить ошибки, вызванные тем, как LLM додумывает недосказанное.
Все жалуются на проблемы того, что LLM использует древние или несуществующие API, но это всё, я считаю – детские болезни. А вот проблема того, что любую постановку задачи исполнителю нужно додумывать, и LLM додумывает совершенно нечеловеческим образом – вот это будет проблема фундаментальная.
Dhwtj
Rust делает вполне недвусмысленные контракты в виде типов и сигнатур функций поскольку ошибки также входят в контракт. То есть честное проектирование сверху вниз.
В других языках вечно что-то мешает такому
MountainGoat
Ни один контракт не опишет, что значат эти данные и как их обрабатывать.