Cursor. Вайбкодинг - миф или реальность?
Шведенко МаксимНаверное никого не удивлю, если скажу что лень - это двигатель прогресса. Так произошло и у меня. Но сначала немного предыстории =)
В мае 2025 года меня познакомили с программой Cursor. С первого взгляда ничего примечательного - обычная среда разработки, коих не мало, но все же одно в ней есть, ради чего меня с ней и познакомили - это Ai помощник, причем Ai помощник не простой, а с возможностью вносить изменения сразу в файлы проекта, создавать их, создавать папки, подпапки и тд.

Собственно говоря эта возможность Cursor меня очень сильно подкупила, потому что частенько мне надоедало работая с какой то моделькой или контроллером в вебе искать среди 5 - 10к строк кода именно то место, куда ИИ тебе сказал вставить кусочек нового кода, а если уж к делу имели отношение несколько взаимосвязанных файлов, то там уже кажется проще было бы самому написать этот кусочек кода =)
В общем в этот же вечер я пришел домой и сразу сел пробовать сие чудо.
Что в ходе проб я узнал, на что обязательно надо обратить внимание при первом запуске:
- Нужен VPN (ожидаемо, не ново);
- Если хочешь использовать свои ключики API, будь добр плати за премиум версию, хочешь бесплатно - пользуйся нашим помощником (меня это сильно удивило, но да ладно, и баланс мой в OpenAi будет целее, и баланс карты так же)
- Слышал что на Mac есть проблемы с созданием файлов и папок, но я тестил на винде
Первые пробы Курсора были без боевой задачи, просто попробовать что может на Java, Python, Php, Sql. И да, может, хорошо может. Создавал какие то тестовые проекты, запускал, пояснял что и зачем делает, но так как задачи тестовые, то моя оценка была:
Ого, круто, закрыл и забыл. =)
Первая боевая задача.
В силу моей должности в конце каждого квартала я занимаюсь одной очень интересной задачей - планирование квартала для команды разработки. Беру цель продукта, декомпозирую ее по направлениям и по спринтам, двигаю их, что бы не превысить нагрузку и не завалить цели. Рисую итоговый план я в диаграмме Ганта. Довольно интересная задача, но вот в силу ограничений моей организации делать я это могу только в Draw.io, а вот это уже максимально неблагодарное дело.
Возможно в силу моего знака зодиака, либо специфики моей команды, но я стараюсь отрисовать максимально ровную, красивую и педантичную диаграмму, а затем всплывают нюансы, которые начинают влиять на диаграмму (отпуска сотрудников, болезни и т.д.) и диаграмма начинает двигаться.
В общем говоря на отрисовку квартального плана я стабильно тратил спринт рабочего времени
И именно в середине июня, когда пришло время планировать третий квартал, в мою голову и пришла светлая идея сделать простенький софт, в котором можно легко и не принужденно делать эту диаграмму, легко двигать задачи, менять даты и тд.
Но просто взять и сделать не интересно, раз этот чудо софт может сам все создавать и редактировать, пусть он это и делает сам, а я попробую что такое вайбкодинг и не прикоснусь к коду ни разу, совсем.
Сказано - сделано. Берем в охапку Курсор и идем творить =)
Сразу хочу оговориться, что вайбкодинг я хотел проверить в двух состояниях:
- Лайт - ты понимаешь в программировании и можешь указать ИИ где он делает что-то не так, и где надо поправить
- Фулл - ты совсем не понимаешь что такое программирование и что он там пишет, а он все сам, совсем без помощи
Расписывать каждый промпт и каждую задачу по отдельности я не буду, так как это долго и нудно, опишу самые интересные моменты, плюсы и минусы:
Что из плюсов
- Задачу курсор понял правильно, необходимый стек с учетом всех хотелок и ограничений он понял правильно (требовалось иметь возможность редактировать и хранить все локально, без доступов к БД) - выбрал ванильный JS, HTML, CSS + сохранение данных в JSON
- Проект создал простой, из 3 файлов: gantt.js, index.html, styles.css
- Фичи по моим указаниям стал создавать бодро, корректно, допуская минимум багов и ошибок. Большинство багов были допущены по причине недоговоренностей с моей стороны
- Иногда он додумывал логику сам, и додумывал ее корректно
- Курсор спокойно возвращался к фичам созданным ранее, корректировал их, либо обеспечивал взаимодействие с новыми, все без проблем и вопросов
- Всегда можно вернуться назад. Возле каждого промпта есть кнопка "Return" - которая может вернуть все файлы к состоянию до этого промпта
Что из минусов
- Иногда он переключается на английский язык. Именно диалог, без причины и просьбы
- Он ошибается. Да, баги допускает, порой детские, порой более глобальные, но решает их по фразе "Теперь ничего не работает"
- Сбоит. Иногда не может внести изменения в файл или создать его. При повторном запросе уже справляется
- Дизайнер он никудышный. Да он делает то что ты просишь, использует какие-нибудь UI, но дизайн получается плохой, надо более точно и конкретно просить
По результатам первого вечера работы с Курсор я получил версию № 1 программы и только приятные впечатления. Я реально ни разу не прикоснулся к коду и ни разу не указал где искать ошибку и как ее исправить, он все сам!
Что программа по результатам первого дня умела:
- При первом открытии выскакивало модальное окно с выбором года и квартала, а так же выбором первого дня этого квартала (на случай если планирование пойдет не с 1 числа квартала)

- На основании данных с первого модального окна выстраивается пустая диаграмма с разбивкой на спринты по 2 недели (даты каждого спринта расставляются с понедельника первой недели по пятницу второй, но можно редактировать)

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


Второй день
Второй день я посвятил устранению выявленных багов и улучшайзингу. Например из улучшений я решил добавить:
- Возможность выбора цвета задачи (что бы большое количество задач не перемешивалось в диаграмме)
- Возможность двигать этап задачи как по спринтам так и по направлениям
- Возможность добавлять дополнительный этап задачи (вдруг на каком то из направлений надо растянуть на два спринта)
- Возможность добавлять спринт
- Возможность импорта и экспорта данных
- Возможность подсветки отдельной задачи в диаграмме
И все улучшения Курсор довольно таки спокойно внес, не так радужно как в первый день, не так легко и просто, но все таки получилось. Чаще стали проявляться ситуации, когда он вносит улучшения в одну фичу, но ломает при этом другую, но промпт "Ты все сломал, сделай как было" до сих пор работал.
На удивление, самое сложное улучшение для Курсора было "Возможность импорта и экспорта данных", и самое интересное, что импорт - экспорт в JSON он сделал спокойно и с первого раза, а вот в PDF у нас с ним так и не вышло. То ничего не выходило вовсе, то криво, то косо. В итоге плюнул и согласился на выгрузку в PNG.
А вот на этапе устранения багов начали вылазить первые серьезные проблемы, которые поломали теорию фулл вайбкодинга:
- Устраняя один баг Курсор порождал второй, затем устраняя второй он возрождал первый, и так до бесконечности. Причем по его ответам было видно, что каждый раз он делает одно и то же. На 10 итерации этого бесконечного цикла я не удержался и указал ему на то, что конкретно надо поправить в коде.
- Он начал направлять сам себя, причем неверно. Я писал ему баг, он говорил "Я понял что это работает некорректно" и начинал вносить исправления в файл, затем думал, не дожидался моего ответа и опять писал "Я понял, это до сих пор не работает" и опять начинал что то поправлять. И так происходило до 20 правок кода пока не срабатывало ограничение внутри Курсора и он не прерывался.

- Он начал игнорировать требования. Я просил его в раздел Release notes информацию о доработках только за сегодняшний день он начинал править записи о первом дне, внося туда все подряд. Далее восстанавливал запись о первом дне и стирал запись о сегодняшнем дне, и так до бесконечности
По итогу, цели второго дня были достигнуты, да потно, да сложнее, да нервнее, но достигнуты. Но самое главное, в голове закрались сомнения в возможности дальнейшего развития и масштабирования проекта.
Итоги второго дня я решил зафиксировать как некий финал, а дальнейшее развитие уже как тест.

Версию второго дня я залил на сервер и можно потрогать и попользоваться ей по ссылке http://test.amalora.ru
Третий день
Идей на развитие и масштабирование была уйма: возможность создания команды и привязки каждого человека к определенному направлению, учет отсутствия члена команды и подсветка в диаграмме этапов, когда члена команды не будет, мониторинг нагрузки каждого члена команды, привязка задач Jira и создание тасок напрямую из диаграммы.
Идей куча, но я уже был уверен, что все пойдет не по плану, и я был прав.
Начиная с первого промпта Курсор начал удалять кучу существующего функционала и фичей, например: при добавлении возможности создавать команду я с удивлением заметил, что он снес возможность добавления спринтов. Далее при добавлении возможности отражения членов команды внутри каждого направления напрочь сломалась функция отрисовки связей между задачами

Восстановление старого функционала удаляло новый, создание нового удаляло старый. Все превратилось в борьбу с бездушной машиной, нервы и отчаяние.
По итогам третьего дня нового функционала не появилось от слова совсем, сохранился старый функционал и я этому рад =)
Самое главное пришло осознание причин: изначально мы стали делать весь функционал в одном файле gantt.js и когда его содержание перевалило за 2000+ строк кода Курсору стало тяжело.
Я попросил его декомпозировать файл на отдельные, но было слишком поздно, он начал терять большую часть кода, выдумывать новое, писать с нуля, переписывать на реакте - вобщем декомпозиция провалилась
Тут-то ко мне и пришло осознание, что вектор развития надо было определить сразу и сразу позаботиться об многомодульности приложения.
По итогу 3 дня я окончательно решил зафиксировать версию второго дня как финальную и как версию, которая выполнила изначальные задачи, а вот дальнейшее развитие выделить в отдельную ветку, где разработаю все с нуля, но уже правильно декомпозировав на старте (намек на продолжение статьи=)
ВЫВОДЫ:
- Вайбкодинг реален. Не могу сказать в какой степени, но реален. Какие то задачи можно сделать без малейшего знания кода и программирования, но для сложных проектов понимание должно быть
- Нужно много тестировать. Курсор так и норовит что то сломать и удалить, поэтому тестирование наше все
- Это реально экономит время, силы и деньги. Я точно знаю что такое я бы не сделал за 2 дня, я бы потратил на это в два - три раза больше точно. То есть я получил полностью рабочий инструмент за 2 дня и 0 рублей. Для прототипирования это вообще мастхев
- Можно учиться. Да, курсор вносит правки в файлы, поясняет что и зачем он делает и это сразу видно в файле, в режиме реального времени. Возможно не для полных новичков, но для немного понимающих отлично подойдет
- Нужен хороший VPN. Я заметил прямую зависимость между кривой работой курсора и сбоями в работе моего VPN, поэтому чем стабильнее соединение VPN тем лучше работает курсор
- Зависим от состояния OpenAI. Так же заметил прямую зависимость проблем в курсоре со сбоями у OpenAI, поэтому возможно стоит попробовать платную подписку и свои ключики
- Все так же нужен качественный промпт. Да! Сделать что-то хорошее по промпту "Сделай хорошо" не получится. Чем подробнее промпт, тем лучше результат. Это база
Что дальше:
- Делаю отдельную версию этого приложения с нуля. Сразу обрисовали архитектуру и декомпозировали монолитные файлы, выбрали дизайн систему. Я уже начал это делать и уже получил первые результаты и первые огорчения, и как только достигну логического завершения, обязательно расскажу об этом =)
- Уже сформировал новую идею проекта для одного веб сайта. Идея сложнее так как будет работать и с сервером, и с БД, и с телеграмм, поэтому будет сложнее и интереснее. В этой задаче я и хочу попробовать платную подписку со своими ключами. Обязательно расскажу