В целом картинка оставляет приятное впечатление. Но если начинаешь вглядываться в детали - то тут, то там находишь косяки ИИ. В программе, написанной LLM, то же самое.
В целом картинка оставляет приятное впечатление. Но если начинаешь вглядываться в детали - то тут, то там находишь косяки ИИ. В программе, написанной LLM, то же самое.

Здорово, когда ты получаешь готовое работающее приложение с одного запроса. Пусть даже долго оттачиваемого, как меч самурая. Это апофеоз одновременно профессионализма и лени: ты смог сформулировать задачу так, что ИИ тебя понял и с первого раза сделал всё верно.

Прошлый раз мне удалось получить промпт, дающий с чистого листа полноценное работающее приложение. Но он состоял из 15 пунктов и родился итерационно: методом проб и ошибок: каждый раз я начинал диалог с моделью заново, уточняя запрос и добавляя новые пункты.

Конечно, в крупных проектах такое стремление к лаконичности и совершенству ни к чему. Очень часто мы даже не можем заранее сформулировать ТЗ и двигаемся шагами, только постепенно понимая направление развития нашего проекта. Современные среды разработки заточены на диалог с ИИ-агентом, который по шагам добавляет функциональность в наше приложение, исправляет возникшие ошибки и т.д.

Эта статья содержит разбор эксперимента по вайб-кодингу, проведённого oldschool-разработчиком с 20+ летним стажем (Assembler, 1C, C/C++, Go, Pascal, Perl, PL/SQL, Python). Я покажу:

  • В каких случаях вайб-кодеру достаточно минимальных знаний предмета, а в каких необходимы экспертные навыки и опыт

  • Что изменилось в инструментах вайб-кодинга за текущий год, и что изменится в ближайшем будущем

  • Сравним обычные и «премиум» языковые модели

  • Поймём, есть ли предел у диалога с ИИ-ассистентом, и как понять, что он достигнут

1. Постановка задачи

Нужно написать web-приложение, авторизующееся на Bitrix24, вытаскивающее оттуда доступные задачи и отображающее их в удобном виде на web-странице с небольшим интерактивом

Вроде бы просто. Но изложить письменное ТЗ на приложение целиком я не смог, в первую очередь потому, что не смог ответить на вопросы: как лучше выводить данные? как удобнее взаимодействовать с пользователями? И понял, что смогу решить это только экспериментируя в браузере с уже работающим прототипом системы. Выходит, лень и Agile в очередной раз победили Watelfall - даже когда постановщик задачи и разработчик - один и тот же человек.

Первое, что нужно сделать - это MVP, и его я сформулировал так:

Напиши веб-сервер на языке python, который получает список задач из bitrix24, и возвращает их в качестве веб-страницы, выводя в виде отдельных абзацев наименование задачи и назначенного исполнителя

В общении с LLM я принципиально старался использовать русский язык и упрощённую лексику, чтобы нащупать ту грань, когда это начнёт резко негативно сказываться на результатах. И вот первое наблюдение: если в 2024 году большие языковые модели существенно лучше кодили англоязычные запросы, то в 2025 году критической разницы между русским и английским я не заметил.

Эксперименты я проводил при помощи GitHub CoPilot в среде Visual Studio Code, который умеет работать с разными языковыми моделями. Сначала я использовал GPT-4.1 и лишь потом, когда эта модель перестала справляться с запросами стал пробовать другие LLM.

Интеграция CoPilot в Visual Studio Code за лето 2025 года стала существенно лучше. CoPilot научился не только читать открытые файлы и обновлять в них код, но и сам способен выполнять некоторые действия: настраивать среду Visual Studio Code, устанавливать библиотеки python, лазать по диску и смотреть содержимое файлов, которые собралась обрабатывать ваша программа, смотреть переменные окружения и даже запускать команды. И если в каком-то из файлов проекта, пусть даже не реплицирующемся в GitHub, у вас прописан секрет - LLM его спокойно пережуёт и запишет в свои логи. Запускать браузер и самостоятельно тестировать web-приложение, правда, CoPilot пока не умеет, но такими темпами за ближайший год наверняка научится.

Чтобы проверить степень интеграции LLM-модели с вашим компьютером - спросите, сколько у вас ядер
Чтобы проверить степень интеграции LLM-модели с вашим компьютером - спросите, сколько у вас ядер

2. Лучшие практики

Если в промпте явно не указать, что вебхук нужно считать из переменных окружения, LLM пропишет его в виде константы прямо в коде:

# Замените на ваш вебхук Bitrix24
BITRIX_WEBHOOK = "https://<your_domain>.bitrix24.ru/rest/<user_id>/<webhook>/"

Таким образом, модели далеко не всегда следуют лучшим практикам разработки и часто идут по пути наиболее простой реализации.

Удивительно, но простое добавление к запросу волшебной просьбы:

Используй лучшие практики разработки, пиши как senior python developer

на той же самой модели резко выносит вебхук в переменные окружения, а заодно заменяет библиотеку flask на fastapi. Выходит, даже в GitHub CoPilot, который, казалось бы, должен быть укомплектован самыми качественными системными промптами, банальные уговоры и шантаж LLM-моделей работают.

После этого модель, скупо комментируя свои действия, написала примерно следующее:

Чтобы запустить сервер:

1. Установите переменную среды BITRIX_WEBHOOK с вашим вебхуком Bitrix24

Я не удержался и спросил, как это лучше сделать? На что получил ответ, что через файл activate.bat внутри папки Scripts вашего виртуального окружения. Я имел другой опыт и спросил про него напрямую:

Какой способ предпочтительней: этот или через launch.json?

На что модель ответила:

Оба способа рабочие, но предпочтительнее использовать launch.json для разработки в VS Code

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

3. Первые грабли

Мой первый сервер в ответ на запрос из браузера транслировал ошибку Bitrix24: 403 Forbidden. При попытке выяснить, почему так происходит, модель резюмировала поисковик, ограничившись банальным «у вас протух токен» или «у вас нет прав на просмотр задач».

Но через браузер те же вызовы API выполнялись и выдавали результат. А из программы - нет. Я попросил LLM замаскировать программу под браузер, когда она выполняет http-запрос к серверам - и получил целую пачку заголовков, после чего всё заработало.

Опытным путём, исключая все заголовки по очереди, удалось выяснить, что 403 ошибка перестаёт возникать, когда в запросе появляется заголовок User-Agent. Причём, не важно чем он заполнен - хоть любой абракадаброй, главное - чтобы был не пустым.

Конечно, подобная отладка требует опыта работы с web-сервисами и недоступна неопытному вайб-кодеру. Но пройдёт время, модели при помощи протокола MCP научатся запускать браузер на локальной машине и управлять его работой - и будут пытаться отладить код самостоятельно.

Claude Sonnet 4 уже умеет самостоятельно временно модифицировать программу для отладки (например, ограничивать количество обрабатываемых строк данных), анализировать результаты и принимать решение о корректности кода или его исправлении.

4. Устаревшая или неполная документация

После добавления User-Agent система перестала возвращать 403 ошибку и стала показывать первые задачи - но названия задач и ответственные сотрудники были пустыми. Я попробовал на дурачка сообщить об этом модели:

Список возвращает пустые названия задач и исполнителей

и о чудо, это помогло. Оказалось, что официальное API Bitrix24, выложенное здесь, не соответствует фактической структуре полей JSON-ответа от сервера Bitrix24. Например, вместо обозначенного в документации поля RESPONSIBLE_ID (id исполнителя), сервер возвращает поле responsible, представляющее собой структуру данных, описывающую исполнителя.

Хорошо, что модель была обучена на других исходниках с github, в которых поля назывались правильным образом. И пусть со второй попытки, но она создала вот такие, по её мнению. универсальные конструкции:

if 'responsible' in task and isinstance(task['responsible'], dict):
  responsible = task['responsible'].get('name', 'Не назначен')
  responsible_icon = task['responsible'].get('icon', '')
  if responsible_icon and responsible_icon.startswith('/'):
    # Получить протокол и домен из BITRIX_WEBHOOK
    from urllib.parse import urlparse
    parsed = urlparse(BITRIX_WEBHOOK)
    responsible_icon = f"{parsed.scheme}://{parsed.netloc}{responsible_icon}"
elif 'responsibleId' in task:
  responsible = f"ID: {task['responsibleId']}"

Как видим, конструкция хоть и пытается отработать оба варианта полей: и как в документации, и как в примерах, но делает это не одинаково подробно.

Мы ещё не раз будем сталкиваться с несоответствиями между документацией и другими источниками знаний модели. В результате проверка на то, является ли задача закрытой, выглядит совсем страшным образом:

const isCompleted = t.status === '5' || t.status === 5 || t.status === '7' || 
                    t.status === 7 || t.status === 'closed' || t.closed === 1;

На самом деле:

  • Поле status в Bitrix24 принимает только строковые значения (хотя в документации все цифры стоят без кавычек?)

  • Статус "5" действительно обозначает закрытую задачу, а вот статуса "7" не существует, так же как не существует и статуса "closed"

  • Поля closed у задачи тоже не существует.

Вывод: когда модель совсем не знает библиотеки или API, вместо того, чтобы сообщить об этом и приостановить работу, она начинает галлюцинировать.

Чтобы не устранять это руками, можно попробовать передать ИИ в запросе образец данных, возвращаемых сервером:

Посмотри, какой json реально отдаёт сервер bitrix24 и исправь везде названия полей на правильные

Пока ИИ сам это сделать не может. Но посмотрите, как конструктивно он старается нам помочь:

Включён отладочный режим: теперь при обращении к /api/tasks сервер возвращает первый «сырой» JSON-ответ Bitrix24. Откройте этот эндпоинт в браузере или через curl/Postman, чтобы увидеть реальные названия полей. Сообщите структуру — и я скорректирую обработку задач под неё.

И действительно, если образец JSON-ответа переслать в диалог, галлюцинированные названия полей из программы исчезают. ИИ уже пытается отлаживать программы: пока при помощи человека, а в будущем он сможет это делать самостоятельно.

5. Когда приходит пора помогать модели

Изначально данные с сервера грузились очень долго. Оказалось, ИИ выбрал устаревший метод API task.item.list вместо современного tasks.task.list . Убедившись, что проблема воспроизводится в браузере, я начал читать документацию, наткнулся на новый метод и исправил его вызов вручную.

Потом я понял, что задач выводится сильно меньше, чем есть в системе, и ровно 50 штук. Начал гуглить - оказалось, это фишка API Bitrix24: списки он выдаёт порционно по 50 ответов за раз.

Попытки заставить модель реализовать корректно листание без подробного описания документации не увенчались успехом - скорее всего, данная страница документации не была ей проиндексирована. Каждый раз модель изощрённо галлюцинировала, придумывая всё новые и новые не работающие способы листания. Например, она почему-то передавала на сервер параметр NAV_PARAMS[nPageSize] в надежде, что он увеличит количество одновременно выдаваемых строк. Поэтому пришлось самостоятельно прочитать документацию и объяснить модели как работает API Bitrix24:

Bitrix24 не передаёт количество задач или ссылку на следующую пачку. Он просто всегда выдаёт по 50 задач. И нужно продолжать получать 50 следующих, увеличивая численный параметр start, до тех пор, пока в ответ не вернётся пустая выборка

Это помогло.

6. Когда требуется навести порядок

Модель держала шаблон web-страницы и frontend-скрипт внутри той же программы python. Первое время это не вызывало проблем. Но когда я попросил внешне простое изменение:

Во время загрузки задач с birix24 показывай на странице счетчик, сколько уже задач получено с сервера

Это в корне поменяло архитектуру приложения. Потому что теперь данные стало нужно получать на фронте через бэк порционно, каждый раз обновляя счётчики. А для этого в бэке пришлось реализовывать новый вызов /api/tasks .

В результате исполняющийся в клиентском браузере javascript стал настолько большим и сложным, что неизбежно стал вызывать ошибки синтаксиса в консоли chrome, что приводило к полной остановке web-приложения.

Никакая передача модели сообщений об ошибках javascript не помогала. Видимые попытки модели что-то поменять в коде были безуспешны. Я бы долго продолжал бы мучаться, если бы не сообразил, как правильно сделать:

Структурируй программу, выделив front, javascript и бэк в разные файлы

После этого синтаксическая ошибка исчезла и всё заработало как надо. Опять опыт самостоятельного программирования позволяет указывать ИИ лучшие практики.

Если бы я сразу учёл все вызовы API ещё при создании приложения, и прописал бы всех их в запросе - скорее всего приложение изначально структурировало бы себя на несколько файлов. Но по ходу доработки системы это слишком серьёзное изменение, чтобы ожидать, что ИИ инициирует его самостоятельно.

7. Дизайн и вёрстка

С реализацией вёрстки по словесному описанию, мне показалось, модели справляются достаточно хорошо. Например, вот такой сложный запрос с первого раза дал ожидаемый результат:

Раздели страницу на две части: заголовок в одну строчку и список задач.

Заголовок отобрази в виде прямоугольника с серой обводкой со слегка скруглёнными краями и светло-серым фоном. Внутри прямоугольник заголовка подели на три секции вертикальными палочками того же цвета и толщины, что и его границы. В левой секции напиши "Список задач" и аватарку с именем текущего пользователя Bitrix. В центральной секции добавь флажок "в т.ч. завершённые", по-умолчанию отключенный. В правую секуцию перенеси счётчик загруженных и отобранных задач. Высота заголовка не должна превышать высоту одной строки текущего шрифта.

Вторая часть страницы - это непосредственно список задач. Раздели всю ширину страницы на оптимальное количество колонок в зависимости от ширины браузера и разрешающей способности устройства. Автоматически распредели текст между колонками путём css-свойств так, чтобы высота колонок была примерно одинаковой.

Модель поняла меня с первого раза и выдала вот такую красоту
Модель поняла меня с первого раза и выдала вот такую красоту

8. Когда модель уже не тянет

Один из симптомов, который может говорить о переполнении текущего контекста модели или о достижении пределов её возможностей, это нелепые ошибки. Например, модель правильно сконструировала большой вызов API, но при этом упорно добавляет его не в тот фрагмент кода.

Так получилось на ~30-м запросе: GPT-4.1 предложил прекрасный код для бэка, отдающий информацию о текущем пользователе Bitrix24 через новый endpoint /api/user. Но упорно пытался вставить этот код в самое начала python-программы, даже до import-ов библиотек.

Когда я указывал ему на ошибку, вместо того чтобы внести исправления в код, он предлагал мне исправить самостоятельно:

В файле присутствует дублирующее или ошибочное определение /api/user до создания Flask-приложения. 

Удалите или переместите все декораторы @app.route('/api/user') и функцию api_user так, чтобы они находились только после строки app = Flask(__name__)

Если потребуется — могу сделать это автоматически.

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

Аналогичным симптомом по моим наблюдениям является внезапный переход модели на английский язык в ответ на русскоязычный запрос.

Когда я соглашался, модель просто удаляла реализацию /api/user вместо того, чтобы перенести её в правильное место. При этом модель рапортовала об успешно достигнутых результатах. У моделей вообще с рапортованием всё прекрасно, полюбуйтесь:

Ошибочное определение /api/user удалено. Теперь эндпоинт реализован корректно и работает после создания Flask-приложения. Всё готово для корректной работы фронтенда.

В ответ на моё резонное возражение:

Теперь эндпоинта нет, ты же его удалил

GPT-4.1 снова добавляет его в самое начало python-программы перед импортами, и рапортует ещё звонче:

Теперь эндпоинт /api/user снова добавлен в правильном месте после создания Flask-приложения. Если увидите ошибку "app is not defined", убедитесь, что определение функции и декоратора находится после строки app = Flask(__name__). Всё готово для работы фронтенда.

На очередной итерации у меня сработал третий симптом «уставшей модели»: весь диалог с системными промптами превысил лимит входного окна модели и в окошке чата с ИИ-ассистентом появился спиннер ожидания суммаризации чата для сжатия. Подождав 5 минут и не дождавшись, я переключился на другую модель: Claude Sonnet 3.7.

9. Сравнение моделей

С недавних пор (апрель 2025) в GitHub CoPilot появилось деление моделей на обычные и premium:

Обычные модели

Premium модели

OpenAI ChatGPT 4.1

Anthropic Claude Sonnet 3.5

OpenAI ChatGPT 4o

Anthropic Claude Sonnet 3.7

OpenAI ChatGPT 5 mini (тестирование)

Anthropic Claude Sonnet 4

xAI Grok Code Fast 1 (тестирование)

Google Gemini 2.5 Pro

OpenAI ChatGPT 5 (тестирование)

OpenAI ChatGPT o3 mini

OpenAI ChatGPT o4 (тестирование)

Теперь даже на платных тарифных планах CoPilot количество запросов к premium-моделям ограничено 300 для Pro (и 1000 для Business) запросами в месяц. Больше - за дополнительные деньги.

В окне диалога с ИИ-ассистентом Visual Studio Code теперь появились закладки, позволяющие быстро откатить состояние проекта на предыдущие шаги беседы:

Restore Checkpoint - прекрасный инструмент для тестирования разных моделей и запросов
Restore Checkpoint - прекрасный инструмент для тестирования разных моделей и запр��сов

А ещё можно просто щёлкнуть на своём запросе, отредактировать его или сменить модель и отправить заново, сбросив файлы проекта до того вида, какими они были до этого запроса.

Я попробовал три модели разных разработчиков и вот как я оценил их по трём не сильно формализованным критериям:

Модель

OpenAI ChatGPT 4.1

Anthropic Claude Sonnet 3.7

xAI Grok Code Fast 1

Обратная связь разработчику от модели

❌Вносит изменения в файлы проекта молча, в конце выдаёт утверждающий абзац на основе исходного промпта

✅Резюмирует внесённые изменения, описывая ключевые моменты

✅Резюмирует внесённые изменения, описывая ключевые моменты

Решение простых задач, добавляющих узкую функциональность

✅Добросовестно справляется с созданием и модификацией кода

✅Добросовестно справляется с созданием и модификацией кода

✅Добросовестно справляется с созданием и модификацией кода

Решение сложных задач, приводящих к реинженирингу многофайлового проекта

❌ Справился с 0 из 3 сложных задач. Часто ошибается, генерируя неработающий код. Путает, какие изменения нужно вносить на фронте и на бэке. Для качественной работы требует в промпте подробного описания необходимых изменений

✅Справился с 3 из 3 сложных задач. Выдаёт достойные решения, готовые к запуску без ошибок

?Справился с 2 из 3 сложных задач. В одном случае произвёл неверную модификацию кода

Сложные задачи, на которых тестировались модели, были следующие:

  • Реализовать на фронте счётчик загрузки задач в процессе их загрузки на бэке. Это требует перестройки архитектуры изначально примитивного приложения.

  • Добавление на фронте флажка, осуществляющего фильтрацию задач. ChatGPT 4.1 упорно пытался реализовать эту фильтрацию на бэке и не мог осилить обновление данных при установке/снятии флажка.

  • Сбор при загрузке задач списка привязанных к ним проектов. Добавление на фронте выпадающего списка с найденными проектами и двумя фиксированными строчками "все проекты" и "без проектов". В скобках у каждой строки выпадающего списка указывается количество задач, относящихся к этой строке. Фильтрация списка на фронте при выборе одной из строк выпадающего списка. С этой задачей с первой попытки справилась только Claude Sonnet 3.7.

Что касается обратной связи от модели, скорее всего этого можно добиться и от ChatGPT 4.1 дополнительным системным промптом. Возможно, создатели CoPilot специально его убрали, чтобы побудить пользователей переходить на премиум модели.

10. Итоги

За:

  • 4 часа вайб-кодинга

  • 46 запросов к моделям

  • без единой написанной самостоятельно строчки кода

я получил нужное мне рабочее приложение с готовым фронтом и бэком. Приложение я готовил не для публикации в магазинах, а для внутриофисного использования, поэтому процесс оказался немного проще, чем мог бы быть.

Структура получившегося приложения:

  • bitrix24_server.py - 165 строк

  • tasks.js - 362 строки (основная логика приложения на фронте)

  • style.css - 169 строк

  • index.html - 32 строки

Сравним это с самостоятельной разработкой:

Вайб-кодинг

Самостоятельная разработка

Проект, готовый в продакшен

✅ Да

✅ Да

Затраченное время

⏱️4 часа

⏳⏳⏳⏳⏳⏳
2-3 дня по 8-12 часов

Красота кода

?Решения не самые эффективные, но работающие

?Максимальная

Ориентация в коде

⏳⏳Требуется время, чтобы вникнуть и понять чужой код

⏱️Знание 100% кода первые недели после разработки. Со временем забывание.

Знания и навыки, приобретённые разработчиком

?Навык работы с ИИ-агентом

??????
Навык использования библиотек для асинхронных http-запросов с фронта на бэк,
навык динамического формирования элементов управления на веб-странице,
навык работы с датами в JavaScript, навык интерактивного обновления веб-страниц, навык создания простого веб-сервера на python с несколькими endpoint-ами, навык формирования css стилей для иерархии объектов веб-страницы, навык проектирования иерархии объектов веб-страницы, и т. д.

11. Когнитивные и психологические последствия вайб-кодинга

Самый сложный вопрос в вайб-кодинге - как разработчику избежать застоя в профессиональном развитии? Я вижу решение в том, чтобы просматривать сформированный моделью код и изучать все непонятные конструкции.

Второе психологическое последствие вайб-кодинга - нарастающее беспокойство разработчика, обусловленное двумя причинами:

  • несовершенством выдаваемого продукта (проблема чаще встречается у разработчиков-перфекционистов);

  • непониманием, как работает продукт и недостаточной ориентацией в структуре сгенерированного моделью кода.

Самостоятельный рефакторинг выданного моделью кода, безусловно, поможет справиться с этими двумя проблемами, однако насколько он увеличит время разработки и не приблизится ли оно к времени самостоятельной разработки?

К сожалению, я пока не встретил исследований на эту тему.

12. Заключение

За 2025 год большие языковые модели сильно продвинулись в кодинге. Благодаря технологии MCP появляются зачатки самостоятельной «работы» LLM за компьютером и отладки программ. Эти технологии будут развиваться, и в будущем нас ждут модели, способные самостоятельно по шагам тестировать и отлаживать собственные приложения и исправлять свои ошибки.

Сейчас уже реально за несколько часов при помощи LLM и среды разработки собрать работающее приложение, не написав ни единой строчки кода. Но для этого по-прежнему необходимо быть квалифицированным архитектором программного обеспечения и иметь опыт самостоятельной разработки. В противном случае любая отладка отнимет у вас гораздо больше времени, чем сэкономит LLM на написании кода.

Код, который генерируют модели, по-прежнему не оптимальный, а порой даже избыточный. Лаконичность и красота кода пока чужды LLM. Но конкуренция между моделями остра, а различия между ними становятся быстро видны даже начинающему вайб-кодеру.

Среда разработки, в которой происходит общение с моделью, сильно влияет на удобство вайб-кодинга. Закладки с возможностью откатиться на предыдущие шаги, возможность оперативной смены языковой модели - всё это незаменимый инструмент для эффективного вайб-кодинга.

При внедрении вайб-кодинга в компании важно учитывать его негативные когнитивные и психологические последствия и принять компенсирующие меры: стимулировать разработчиков к рефакторингу кода, выдаваемого моделями; проводить обучения или закрывать отдельные задачи без использования ИИ-агентов и т.п.

P.S.

Статья Vibe Coding as a Coding Veteran опытного разработчика с 40-летним стажем программирования и докторской степенью в области ИИ. Он проводил аналогичный эксперимент по разработке программы, решающей головоломку «Ханойская башня» и тоже сравнивал различные модели. Интересно, что его эксперимент пропорционально в 10 раз дольше моего: 40 часов общения с ИИ, 300+ запросов к моделям и 5000 строк кода.

Вот краткий обзор его статьи на русском языке: Опытный программист проверил, заменит ли его ИИ, — результат оказался неоднозначным

P.P.S.

Написание данной статьи заняло 8 часов - ровно в 2 раза дольше, чем шёл эксперимент. ИИ для написания статьи не привлекался.

Комментарии (46)


  1. levge
    04.09.2025 10:34

    Спасибо за подробное сравнение, с моего опыта лучше всего использовать Calude Code, сейчас используеться Sonnet 4, требует платной подписки,да. С задачами справляеться на ура, не устает, даже если долго что-то не работает. Ручное вмешательство в код не требуеться, (там TypeScript + JavaScript я их вообще не знаю). Может сам править любые файлы и запускать тесты, так что рекомендую.


  1. izibrizi2
    04.09.2025 10:34

    Почитал ваш предыдущий пост. Хочу вам сказать, что вы даже не представляете сколько на вас денег посыпется, если вы научитесь составлять описание книги по сканам в формате RUSMARC. Это, буквально, золотая жила :)


  1. riv2
    04.09.2025 10:34

    Спасибо, ознакомился (͡°͜ʖ͡°)


  1. MEGA_Nexus
    04.09.2025 10:34

    На картинке девочка сидит "под грибами", смотрит в одну точку и пытается решить, какой AI ей выбрать для вайб-кодинга.


    1. urvanov
      04.09.2025 10:34

      У неё монитор ещё повёрнут от неё. Как она там вообще что-то видит на экране.


  1. Fragster
    04.09.2025 10:34

    Оценка 16-36 часов для полученного результата и разработчика уровня +-миддл выглядит чрезмерной. только если у него прям отсуствуют все навыки, которые перечислены ниже. Но ведь тогда это даже не джун. В остальном - интересно.


    1. st-korn Автор
      04.09.2025 10:34

      Не согласен. До появления LLM считалось, что в среднем программист Google пишет 150 строк кода в рабочий день. Не берём в расчёт html и css: только Python и JS - получается, работа на 3.5 рабочих дня.

      upd: Нашёл даже ссылку на источник: https://www.quora.com/How-many-lines-of-code-get-written-at-Google-each-day


      1. Fragster
        04.09.2025 10:34

        Это потому что реальными задачами он занимается очень мало времени. Остальное - споры в интернете и просмотр смешных видосиков с играми саморазвитие и организационные вопросы. В том числе из-за невозможности поймать поток. Если же его поймать, то можно кодить подряд целый день и даже больше. Но и результат будет ощутимым. Всякие хакатоны поэтому и появились - потому что на них люди реально кодят и от этого кайфуют. Когда получается что-то готовое - действительно приятно. А "в среднем программист гугла" забивает себя дешевым дофамином и делает минимум необходимого.


        1. CrashLogger
          04.09.2025 10:34

          А еще он сидит на созвонах, двигает таски в джире, проводит код ревью и собесы, читает и пишет документацию. На кодинг хорошо если процентов 20 рабочего времени остается.


      1. CareDealer
        04.09.2025 10:34

        Мне кажется эти 150 строк, это все же работа в рамках существующей кодовой базы. Когда надо держать контекст в голове, знать "как и куда", запускать тесты отбирающие время.

        В рамках вашей задачи вы создали приложение с нуля с одной интеграцией, что сильно проще, чем 150 строчек в какой-нибудь gmail внести, фуллстек мидл на фрилансе такое сделает за день.


        1. panzerfaust
          04.09.2025 10:34

          Мне кажется эти 150 строк, это все же работа в рамках существующей кодовой базы

          Вам не кажется. Просто визИИонеры и евангелИИсты живут в своем особом мире, где программист каждое утро начинает писать с нуля модный молодежный микроксервис. Каждый раз на новом стеке.

          Говоря о гугле - я думаю, там невероятная и редкая удача начать писать что-то с нуля. А мне за 10 лет карьеры (не в гугле, конечно) всего 1 раз так повезло.


      1. Wesha
        04.09.2025 10:34

        До появления LLM считалось, что в среднем программист Google пишет 150 строк кода в рабочий день.

        Но мы-то знаем праффду!
         До появления LLM считалось, что в среднем программист Google пишет 150 строк кода в рабочий день.
        До появления LLM считалось, что в среднем программист Google пишет 150 строк кода в рабочий день.


  1. powerman
    04.09.2025 10:34

    Возможно, создатели CoPilot специально его убрали, чтобы побудить пользователей переходить на премиум модели.

    Это не так. Исходники в опенсорсе, промпты можно почитать. Для GPT 4.1 там действительно есть специфические дополнительные инструкции, но они сводятся к тому, чтобы он не останавливался на каждый чих а продолжал пытаться решить задачу сам. Сложно сказать, помогают ли они - по моим наблюдениям он всё равно постоянно останавливается когда другие модели бы продолжили работу.

    По статье - да, в целом всё верно. Уровень получаемого результата очень сильно зависит от того, кто пишет промпты. Ну и следующий фактор - это выбор модели, на моих задачах Claude Sonnet 4 справляется намного лучше других (правда, GPT 5 я ещё не тестировал). GPT 4.1 можно использовать только на простейших задачах, но и там с ним работать очень утомительно - постоянно приходится его "пинать" чтобы он продолжил работу.

    Что до вайб-кодинга, то этот подход расширяет возможности квалифицированного разработчика: можно быстро получить прототип на знакомом ЯП чтобы оценить стоит ли вообще делать задачу/делать этим способом, плюс можно делать не очень большие проекты на незнакомом ЯП. Может есть ещё какие-то адекватные применения. Но в большинстве реальных задач даже если прототип решения накидывался вайб-кодингом дальше нужно полноценно вникнуть в абсолютно весь код (и доработать его до обычного для себя "без ИИ" уровня, не важно промптами или вручную), и, очень желательно, в тесты тоже (там нередко дичь попадается).

    Для компенсации негативных эффектов вайб-кодинга очень помогает после получения рабочего решения почитать официальную доку по использованным технологиям/подходам/библиотекам и позадавать модели возникающие вопросы а-ля "а почему тут сделал так если в доке сказано что …" - это прекрасно работает даже для незнакомых ЯП. Ну и плюс надавить из общей эрудиции и знания как решаются подобные задачи в других ЯП если код где-то выглядит странно.


    1. AcckiyGerman
      04.09.2025 10:34

      Для компенсации негативных эффектов вайб-кодинга очень помогает после получения рабочего решения почитать официальную доку по использованным технологиям/подходам/библиотекам и позадавать модели возникающие вопросы а-ля "а почему тут сделал так если в доке сказано что …"

      Только делать это другой моделью - пусть сами друг друга погоняют. Техника давно используется в обучении нейросетей, как примеры

      • AlphaGo, играющий сам с собой

      • генераторы изображений в соревновании с распознавателями изображений


      1. powerman
        04.09.2025 10:34

        Ненене! Я же сказал "Для компенсации негативных эффектов вайб-кодинга" - тут речь шла о части статьи "11. Когнитивные и психологические последствия вайб-кодинга". Это не решается пинг-понгом между моделями, нужно свою голову включать.


  1. feld1meow
    04.09.2025 10:34

    Когда я указывал ему на ошибку, вместо того чтобы внести исправления в код, он предлагал мне исправить самостоятельно

    С Bitrix даже LLM связываться отказалась


    1. riv2
      04.09.2025 10:34

      ну началось.... вот откуда вы лезите (͡°͜ʖ͡°)


    1. SanyaZ7
      04.09.2025 10:34

      Bitrix не open source, поэтому модели могут прямо писать что особо не разбираются


  1. Staschik
    04.09.2025 10:34

    Подключите этот MCP https://context7.com/ тогда LLM будет забирать из него актуальную документацию


  1. iiwabor
    04.09.2025 10:34

    В компании, где я работаю, поначалу активно применяли вайб-кодинг - стильно, модно, молодежно.

    Сейчас начали ограничивать его применение - выяснилось, что Джуны- вайбкодеры не растут в профессиональном плане и не могут поддерживать проект, который они сами и "написали" - они просто не понимают, как и что в нем работает(((


    1. Vedomir
      04.09.2025 10:34

      Вот это ключевой вопрос как мне кажется - вайбкодингом можно получить решение задачи, но ты не получишь знаний и навыков от решения этой задачи. Если задача простая - то вроде бы и не страшно, но ведь навыки для решения более сложных задач складываются постепенно из навыков решения более простых.

      То есть вайб-кодинг как и любое использование ИИ хорош , если

      1. Задачи которые ты уже умеешь решать, чтобы не тратить на них время

      2. Задачи, которые требуют нерелевантных для тебя навыков, которые ты все равно не собираешься развивать (ну например картинку для статьи нарисовать)

      3. Как продвинутый поисковик когда ты используешь выдачу ИИ для своего решения

      А вот в зоне тех навыков которых у тебя не хватает и которые ты хочешь у себя наращивать - большой вопрос.

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

      Причем этот эффект явно отложенный - в начале пути в любой области ты решаешь относительно простые задачи и вроде особой разницы не видно они и так простые. Но если решаешь сам то ты тренируешь свою нейронку и потом постепенно переходишь к более сложным. А если спрашиваешь ИИ то нет.

      Мне кажется через несколько лет активного применения ИИ мы сможем увидеть много интересных долгосрочных эффектов такого толка.


      1. Wesha
        04.09.2025 10:34

        Задачи которые ты уже умеешь решать, чтобы не тратить на них время

        Теперь ты тратишь время, чтобы убедиться, что оно не наглючило!

        Задачи, которые требуют нерелевантных для тебя навыков, которые ты все равно не собираешься развивать

        Нет нерелевантных навыков — есть навыки, которые пока что не понадобились.

        картинку для статьи нарисовать

        Для этого даже специальные человеки придуманы, "художники" называются.

        А нейрокартинками пока что добились только одного: моя баннерная слепота распространилась и на них.

        Как продвинутый поисковик когда ты используешь выдачу ИИ для своего решения

        ...после чего по-прежнему тратишь время, чтобы убедиться, что оно не наглючило!


    1. SanyaZ7
      04.09.2025 10:34

      Там можно использовать модель чуть попроще и контекст поменьше, в этом случае уже придется разбираться в структуре проекта


    1. Jijiki
      04.09.2025 10:34

      если к Питону добавить ИИ то это мега просто, было дело сам стоял перед выбором С или Питон


  1. Turbo_Pascal_55
    04.09.2025 10:34

    Я тоже, наверно, подхожу под классификафию "старый разработчик" - программирую с конца 80-х, со школы.
    И могу сказать, что за подобным "вайб"-кодингом, скорее всего, будущее.

    Формат кода уже достаточно стандартизирован, и нейросетка загоняет задачи в правильный формат - по неймингу переменных, отступам, комментариям, читаемому стилю кода.

    Да, надо допиливать, но всё меньше и меньше.

    Я и сам сейчас уже начинаю этим пользоваться. Какую-то отдельную процедуру я писать уже не буду. Если есть четкий вход и четко ожидаемый выход, я загоняю это в нейронку и полуцчаю результат через 1 минуту.

    А так бы я лазил по stackoverflow и искал как написать, и в итоге написал бы то же самое. Но за час.

    Ну и перепроверяю код: просто загоняю весь текст, и пишу "найди ошибки и оптимизируй". И иногда сетка выдает ну очень интересные решения, про которые я не знал, и писал код по старинке. Особенно связано с новым синтаксисом (например, когда сейчас на 21-ю Java переходили).

    Так что вердикт - надо осваивать. Без этого п*.


    1. Jijiki
      04.09.2025 10:34

      так там еще интереснее дальше 24-25 версия и чутка ускоренных фич, я когда писал для себя на свинге, я в ИИ только вгонял код для анализа ситуации типо как воспринимаем мой код, а так мне на яве комфортнее почему-то

      язык сейфти - посмотрел как работать со строками соорудил алгоритм и погнал )


  1. sergeytolkachyov
    04.09.2025 10:34

    Из своего небольшого опыта вайб-кодинга могу сказать, что с SQL-запросами LLM справляются довольно хорошо, там (в моём случае) экономия времени довольно большая. Скинуть DDL, объяснить что нужно на выходе и очень часто запрос с 1-3 раза получается нужный. А что-то более сложное - много нюансов может быть, которые действительно проявляются в процессе "рождения" проекта. Любая идея должна созреть в голове, оформиться. Автор правильно заметил. что многие детали проявляются постепенно, оттачиваются на месте.

    Я недавно попытался поручить ИИ сварганить решение из ещё несозревшей идеи, дав референс. Какие-то файлы он выдал, но оно не работало. После нескольких правок оно заработало, но было излишне усложнено и это был по-прежнему прототип для проверки идеи. Я понял, что я буду дольше объяснять ИИ что делать и как ("исправь это, оно не работает", "ты используешь устаревший код 10-летней давности. Сделай нормально..."), чем сделаю сам.


    1. mitzury
      04.09.2025 10:34

      Сам тоже работаю с SQL и хочу сказать что мне не везло, или не умею оформлять задачи по SQL для ИИ. Для составления запроса, витрины - лучше своя голова, в редких случаях голова ИИ подсказать синтаксис забытой команды.
      Но ИИ в рамах SQL хорошо экономит время на создании самих DDL, DML(insert) команд когда на входе "Война и мир" и надо превратить это в структуру.

      Но для языков как РНР, С++ вполне с ИИ дружу.


  1. Dhwtj
    04.09.2025 10:34

    Когда модель уже не тянет

    На GPT 5 уже не упираюсь, модель не глупеет. Сделал порядка 100 запросов в одном контексте. Потом, правда, мне сессию грохнули на lmarena.ai и вся история накрылась

    Хорошо, конечно, если LLM будет доступ к отладчику фронта и бэка. Но можно и просто логировать в файл пока дебаг не завезли.


    1. Axelaredz
      04.09.2025 10:34

      qwen 3 coder наше всё) с контекстом в 1млн токенов и сохранением истории если превысили лимит за день) то можно просто подождать и продолжить.
      Лимит чаще всего не наступает)

      https://chat.qwen.ai
      сверху переключить модель
      и включать режим поиск если в коде используются какие очень новые фичи


      1. Dhwtj
        04.09.2025 10:34

        Слабоват квен для моих задач.

        Не тянет


  1. vShadow
    04.09.2025 10:34

    Ошибочное определение /api/user удалено. Теперь эндпоинт реализован корректно и работает после создания Flask-приложения. Всё готово для корректной работы фронтенда.


    Работал у нас полтора года назад один "джун", правда недолго, который аналогичным образом решал почти любые задачи :-)


  1. CloudlyNosound
    04.09.2025 10:34

    Веб-серверы и API - это очень стандартная и распространенная задача.

    Когда просишь у LLM решение простой, но малопопулярной задачи, быстрее всё напишешь сам. Потому что на составление детализированного запроса с уточнениями можно потратить кратно больше времени, чем на составление качественного ТЗ. Так что ещё и джун успеет это ТЗ реализовать, пока ты танцуешь с LLM.


    1. powerman
      04.09.2025 10:34

      Безусловно, если быстрее без ИИ - нужно делать ручками. Но часто это только кажется, что без ИИ будет быстрее - и это тоже нужно учитывать.

      Что до составления качественного ТЗ, то тут я не соглашусь:

      • Уметь составлять качественные ТЗ - это ценный навык сам по себе. Причём в эру ИИ этот навык будет цениться намного выше, чем умение написать код ручками. Так что его качать стоит в любом случае.

      • С написанием ТЗ для ИИ очень неплохо помогает сам ИИ, заметно ускоряя процесс. Но - только помогает, а не заменяет.

      • Абсолютное большинство задач без ТЗ реализовать невозможно. Даже если это ТЗ нигде формально не записывается и окончательно формируется незадолго до того как будет завершена реализация - оно всё-равно есть. И важный момент в том, что разработать ТЗ заранее обычно в разы дешевле (по времени и усилиям), чем формировать его на ходу, в процессе работы с кодом. Поэтому для любой задачи кроме совсем тривиальных стоит начинать именно с ТЗ. А имея ТЗ проверить его адекватность как раз проще всего передав его ИИ для реализации - вся лажа в ТЗ сразу вылезет. ☺


  1. gsaw
    04.09.2025 10:34

    Мне лично пока не получилось вайбкодить так, что бы выходило что то, что можно интегрировать в существующий код, программу. Или что, что можно состыковать друг с другом. Может я уже "старый", мне 54, закостенел за 30 лет программирования. :)

    Да, вот такое самодостаточное, закапсулированое в себе, вроде одностраничников или как в себе серверов, выходит у ИИ вполне себе. Таким образом сделать какую то тулузу, утилиту, которая получит на вход структурированные данные и выдаст что то нужное на выходе, вполне рабочий юзкейс. Я постоянно пользуюсь. Но вот код проекта пишу сам, с помощью ИИ. Быстрее получается записать из головы сразу в код, чем сначала объяснять, что надо сделать, а потом ещё и все править. Привычка появилась, в коде написать комментарий, чего хочу, что дано, что долго выйти, ИИ лучше делает предсказания.

    Да и учишься чему то новому с ИИ, если модель свежая, то частенько выдает конструкции, которые до селе не встречались, начинаешь читать доку, что бы понять.

    Мне нравится.


    1. Dhwtj
      04.09.2025 10:34

      Да, для создания герметичных библиотек (с не меняющимися и заранее определенными контрактами, с минимумом corner cases и строго open closed principal) LLM хороши. Контекст надо брать на себя


  1. sloww
    04.09.2025 10:34

    Имхо вайб кодинг это все таки такой же неэффективный процесс сейчас, как и чисто кодинг без использования нейронок вообще.

    Контекст сейчас нереально важен, на легких задачах типа "напиши мне приложение" или "сделай юнит тесты по" и так далее тот же claude code справляется почти идеально, но в рамках комплексных проектов и массивных задач не обойтись без ручных правок/изменений и написания кода самому. А если это новый функционал, нейронка даже при наличии md файлов зачастую игнорирует принятые в проекте паттерны и пишет "как сейчас модно".

    В общем пока использую в таком формате:

    • сложные вещи пишу сам, консультируясь с нейронкой и натравливая ее после на поиск ошибок/нелогичности в архитектуре или проекте/описок и анализа на современные практики

    • всякие юнит тесты или "надо раскидать функционал нового хендлера на 10 других файлов" делает нейронка в терминале за пару минут

    • если это не пет проект аля магазин-на-диване, то обязательное построчное ревью всего кода что писала нейронка, даже если юнит и интеграционные тесты успешно проходят

    Очень важно понимать, что и почему написала нейронка, зачастую она так же дает детальное объяснение, это очень важно читать и понимать, это фактически те же спеки/доки только примененные в живой пример в контексте которого вы работаете, как раз это дает знания. Если просто вайб кодить в терминале то это скорее деградация, поскольку человек не анализирует проделанную работу и не понимает как работает тот или иной кусок кода, и в случае проблемы не сможет выстроить в голове логическую цепочку для исправления этой самой проблемы.


  1. Axelaredz
    04.09.2025 10:34

    Кстати попробуйте кодер модель https://hkunlp.github.io/blog/2025/dream-coder/ 7B, что вышла месяц назад.
    ..можно скачать в LM-Studio и также прикрутить к любимому редактору кода.


  1. me-zundig
    04.09.2025 10:34

    >> с 20+ летним стажем (Assembler, 1C, C/C++, Go, Pascal, Perl, PL/SQL, Python).

    Вы там про Го говорите 20+? - Робби перелогинтесь пожалуйста :)


    1. me-zundig
      04.09.2025 10:34

      не умея в ctx, тот который даже Background, уже вот такое, Вы серьезно?


  1. sfinks7
    04.09.2025 10:34

    Основные проблемы кодинга в LLM это старая и слабая документация к библиотекам и апи что написано в статье. Я тоже кодил и такое заметил если LLM косячит пробовал гуглить и видел что и нагуглить решение сложно или нереально - только методом тыка. А там где нагуглить легко там и LLM хорошо справляется. Значить есть прямая зависимость. Прорыв в вайбкодинге произойдет когда те кто выпускают библиотеки и апи к ним будут делать специальную документацию для LLM и они ее смогут быстро находить и читать чтобы знать какая версия софта-апи актуально также там будет детальное описание библиотеки -с какими кодировками, типами бд, символами работает какое кол-во символов обрабатывает и многие другие нюансы и при обновление софта будет обновление этого файла что поменялось. LLM будет находить этот файл от разработчика как роботс.тхт находят поисковики и тогда косяков будет на порядок меньше. Возможно будет специально обученная LLM которая будет задавать вопросы каждому разрабу чтобы помочь сделать такую инструкцию и тестировать ее. Моя мысля такая.


    1. powerman
      04.09.2025 10:34

      Это уже есть - context7.


  1. Fhann
    04.09.2025 10:34

    Чтобы запустить сервер:

    1. Установите переменную среды BITRIX_WEBHOOK с вашим вебхуком Bitrix24

    Я не удержался и спросил, как это лучше сделать? На что получил ответ, что через файл activate.bat внутри папки Scripts вашего виртуального окружения. Я имел другой опыт и спросил про него напрямую:

    Какой способ предпочтительней: этот или через launch.json?

    На что модель ответила:

    Оба способа рабочие, но предпочтительнее использовать launch.json для разработки в VS Code

    Просто любопытно, а тут до этого было хоть забита базовая ситуация, перед этим вопросом. Ну что там установлено, на чём работает?

    Мне кажется тут ии посчитал, что vs code нету, а винда есть. Значит лучше батник.


  1. DarkTiger
    04.09.2025 10:34

    Как по мне, с вайб-кодингом все достаточно просто:
    Навайбкодить можно быстро. Далее выбор за программистом:
    - быстро пушим результат по принципу "х..к-х..к и в продакшен". Быстрое решение, ты у начальства на хорошем счету, но в голове остается мало. Вкладываемся в свой карьерный рост в компании.
    - детально вникаем в полученный код. Сильно медленнее, начальство тоже довольно, но, хм... как-то сдержанно довольно. Вкладываемся в себя, в рост своих скиллов.
    Тут нет правильного решения. Каждый решает для себя, по какой дороге он пойдет дальше.


  1. SSukharev
    04.09.2025 10:34

    Если код за тебя может написать LLM, то тебе явно нечего делать в программировании, иди в курьеры, там сейчас больше платят. Всё, что написано в статье напоминает явно нездоровый ананазм. Всем добра, занимайтесь парни только тем, на что вас природа назначила.


    1. Wesha
      04.09.2025 10:34

      Я постоянно пишу:

      Все программисты в мире делятся на две категории:
      — Те, кто считает, что ChatGPT кодит на порядок лучше их;
      — Те, кто считает, что ChatGPT кодит на порядок хуже их.
      И те, и другие абсолютно правы.