Не думал, что когда-нибудь скажу: я — вайбкодер. Раньше считал, что умею работать в нормальной IDE и писать код вручную. Думал, что мои технологии — Java, Spring Boot, Vaadin, Flowable, Camunda, Jmix, RabbitMQ — слишком нишевые, чтобы ИИ с ними справился. Документация неполная, фреймворки не настолько популярны, чтобы на них хорошо обучали модели. Многие вещи приходилось выяснять у конкретных специалистов.
О себе: Я, конечно, не настоящий разработчик. Мой путь в ИТ был извилистым. Первым языком был PL/I, потом Fortran, Pascal, затем C++ на курсах в Интерквадро. C++ вправил мозги, но дальше меня унесло в продажи софта — кодить перестал, зато пришлось знать обо всём: интернета тогда не было, приходилось держать в голове весь ассортимент. Потом был документооборот, управление проектами, партнёрские сети, журналистика, редактирование авиационного журнала, аналитика, дистрибуция западного вендора — странная смесь. Был и короткий инженерный эпизод: внедрял ECM в Дубае. Это был лоукод, но руки помнили. Потом попался Jmix — и я понял, что даже с минимальным опытом могу собрать работающее Java-приложение. C++ в анамнезе после 30-летнего перерыва оказался не лишним. В последнее время вёл курсы по BPM для Java-разработчиков. Приходилось кодить — иначе как преподавать?
Первые опыты
Сначала я скептически относился к ИИ. Писать простые утилиты, конвертеры, алгоритмы, подключать библиотеки — это ещё куда ни шло. Но целое приложение? Вряд ли.
Читал истории, как агенты полностью автоматизируют жизнь, и не верил. Понимал разницу между «работает как-то» и «готово к продакшену».
Но пользу находил. ИИ пишет безупречные SQL-запросы — левые и правые джойны, всё в одном запросе. Я бы делал это медленнее и неэффективнее: сначала выгрузил бы данные, потом обработал в памяти.
Отлично справляется с regex, работой с JSON и другой рутиной. Стал давать сложнее задачи — например, подключить RabbitMQ. Я понимал, как это сделать, но это рутина. Признаю: ИИ сделал лучше.
Постепенно втянулся. Сначала в режиме чата: я — вопрос и кусок кода, он — ответ и код. Работает — хорошо, нет — кидаю стек-трейс: «исправляй!».
Даже в таком формате это было серьёзное подспорье. Мы с ИИ начали делать сложные вещи.
Большой проект
Задумал создать оргмодель, чтобы в BPM-процессах назначать исполнителей не по логинам, а по должностям. Логично, но из коробки не поддерживается — везде делают кастомные решения.
Сначала проектировали архитектуру и модель данных с ChatGPT. Отличный напарник, хоть и чересчур льстивый. «Божечки, какой ты умный!» — понятно, что врёт, но приятно. Главное — дельные идеи.
Сделали подробное ТЗ. Но дальше — стоп. Официально я аналитик, кодить не положено. Разработчиков нет, все заняты на годы вперёд.
Типичная ситуация: хорошие идеи годами лежат мёртвым грузом. Нет ресурсов на MVP, нет бюджета, нет власти или красноречия, чтобы его выбить.
Раньше пришлось бы отложить идею. Потому что даже с ИИ такие проекты не сделаешь копипастом из браузера. Масштаб имеет значение.
Пока не познакомился с Cursor. Слышал о нём, но не пробовал. Зачем? У меня удобная IntelliJ IDEA, Jmix генерирует сущности и экраны за клик. Зачем другая IDE?
Привычка к удобству — главный барьер. Конструктор JPQL, листенеры в один клик — что ещё нужно?
Ранние версии Cursor не впечатляли. Встроенный ИИ-ассистент — ну и что? Тот же ChatGPT в отдельном окне. Переломный момент наступил в октябре 25-го, когда Cursor стал кодинг-агентом. Это был прорыв.
Трудно это заметить, сидя в зоне комфорта.
Да, Claude был раньше. Но работать без IDE, только из командной строки — как переехать с Windows на DOS. Меня бы закидали тряпками, но мне нужна наглядность, особенно когда в проекте почти тысяча классов.
В январе начали с Cursor’ом — и понеслась! За три месяца сделали не только оргмодель с процессами, но и добавили агентов. Если есть оргструктура, почему бы не назначать на задачи не только людей, но и ИИ?
Это — отдельная история. Пока покажу только пару скриншотов. Репозиторий не публикую — пока не решил, под какой лицензией выложить. Демо — по запросу.
Lessons Learned
Опыт оказался потрясающим. Двигаться можно очень быстро. Агент часто косячит: усложняет простое, ломает работающее. Но и исправляет. Жаль, что на это сгорают токены.
Нужно время, чтобы привыкнуть. Важно найти баланс между детализацией задачи и свободой для агента. Чётких правил нет — пока действую по интуиции, ошибаюсь.
Выработал свою схему:
- Проект открыт в IntelliJ IDEA — там всё привычно, все инструменты под рукой, оттуда же делаю коммиты. Передавать это агенту пока не пробовал.
- Тот же проект — в Cursor, где ставлю задачи агенту. Вглубь не лезу: скиллы, субагенты, тонкие настройки — это отдельный мир, ещё предстоит изучить.
- Когда агент сообщает, что сделал — запускаю сборку. Если баги — кидаю обратно. Знаю, что неэффективно, но пока не готов полностью переезжать на Cursor.
- Параллельно запускать несколько агентов редко пробую — это требует когнитивной нагрузки. Кто-то справляется, я — пока нет.
Итог:
- Программисты, которые только пишут код, реально не нужны. Не значит, что всех уволят. Но чисто кодинговая работа сократится в разы. Это — сообщение и руководителям, и самим разработчикам.
- Открылись возможности для тех, кто знает, что делать, но не имеет ресурсов — ни своих, ни финансовых, чтобы нанять кого-то. Дерзайте!
Just for Fun
Чисто для интереса решили с Cursor’ом за вечер сделать игру. Не просто — а на нашем стеке: Spring Boot, Vaadin, Jmix.
Чем будут заниматься менеджеры, пока агенты делают их работу? Пусть играют. Но в корпоративной среде! А что лучше классического Сапёра из Windows?
На самом деле хотел проверить гипотезу: может ли Cursor сам написать Jmix-приложение? С узкими фреймворками ИИ обычно плохо справляется — так мне казалось. В большом проекте я старался использовать визарды Jmix, чтобы не зависеть от ИИ.
Тут поставил условие: ни строчки кода вручную. И — получилось!
Сгенерировал проект вручную, а дальше всё — на агенте. Пришлось поправлять: например, он хотел сделать чисто браузерную игру на CSS. Нет, дружище — нам нужна Jmix-форма. Генерим gridLayout, в каждую клетку — button, вешаем клики и дабл-клики.
Кинул скриншот оригинального Сапёра: «сделай так же, включая смайлик — грустный, когда проиграл, довольный — когда выиграл».
И напоследок — оформи как аддон Jmix, чтобы любой разработчик мог подключить. Сделали код-ревью, причесали — и вот он, результат!