Вайбкодинг для пользы и удовольствия
Вайбкоддинг(vibecodding) - это метод написания программ чисто с помощью AI моделей. Поэтому я немного обманул в названии, так как менял код руками и активно в него смотрел. Подумал что для кого такой способ поможет достать запылившиеся проекты из чулана и что-то в них поделать для пользы себя и общества.
У меня как раз такой проект был - точнее один и циллиона лежавщих в моем чулане проектов.
Я все давно никак не мог перенести свой блог с eleventy на что-то более подходящее, а подходящим для себя я нашел Jekyll.
Тут будет немного оффтопа - зачем мне вообще свой статический сайт, если неинтересно - можно этот абзац пропустить. Я сторонник использования правильного инструмента для правильных задач, и использовать для блога что-то помимо статического сайта мне казалось излишнем - он должен быстро загружаться(не мегабайты, а килобайты), иметь правильную разметку для удобного чтения под разные устройства. Хоть я и знаю как работать с ангулярами и реактами,блог мне нужен был не для того, чтобы оттачивать эти навыки(но для кого то может быть подходящим сценарием кстати), а для того чтобы писать тексты. Часто себя сложно заставить перенести всю кучу мыслей в какой то контент, а если еще надо подпрыгивать с оформлением и багами - то вообще можно ничего не написать :) . Использовать блоговые платформы я не хотел, так как в таком случае сайт не принадлежит мне, появляется зависимость от платформы. У меня была идея писать с нуля статический сайт, но это просто неудобно -много ручной работы. Поэтому генераторы статических сайтов из markdown выглядели достаточно удобным решением. И тут были муки выбора - какой из них подходит, а какой нет. Я остановился тогда на eleventy, но что-то более менее сложное сделать на нем было жутко неудобно - где то неправильная документация, где-то – урезанные возможности предлагаемого фреймворка без возможности их обойти другим способом. Куча неочевидных преград там, где их точно быть не должно В общем, надо было выбрать что-то другое.
То есть задача как раз была скучная и нужная. Я решил для нее использовать cursor. Они себя позиционируют как IDE для программирования с помощью разных LLM моделей. В настройках есть все популярные, можно добавлять свои. По умолчанию используется Claude 3.5. IDE предстсавляет из себя переделанный vscode (бесплатная IDE от Microsoft) - после установки и запуска cursor’а у меня даже все настройки, темы и шрифты сохранились от vscode.
Cursor можно использовать в режиме 1) написания документации(не проверял), 2) в режиме вопросов и ответов насчет кода - можно попросить объяснить участок кода или весь проект и 3) агента - тут самое интересное, пишешь ему что надо сделать и он это делает. Если надо выполнить какую то команду в командной строке - появляется окно, где надо ее запустить от своего имени
Работа с режимом агента
Я инициилизиировал проект Jekyl по инструкции на сайте
Открыл проект через Cursor, расшарил ему контекстом весь проект. Запустил проект в дев-сервер режиме(это когда можно видеть результаты изменений вживую через браузер). Для постов я использую markdown, это удобный формат работы с текстом. Для проверки скинул картинку в ассеты, пишу “Сделай новый пост, вставь в него картинку” - он сделал. Я скопировал папку с постами из предыдущего прооекта(они у меня тоже в markdown, но с вкраплениями inline imports из eleventy) и пишу “разбери посты, перенеси их в папки, скопируй картинки, поменяй ссылки в постах”. Тут пришлось немного его поправлять, потому что он все делал по 1-3 поста за раз, и каждый раз надо было писать “сделай то же самое дальше”. Потом поправил несколько огрехов, вручную проверил что перенес все посты, ну и в принципе все заработало. Больше времени потратил на ручную проверку каждого из постов на наличие в новой версии. На весь перенос я потратил около 30-40 минут, но это конечно просто перенос постов, без “красот” для просмотра пользователей на разных девайсах.
Все инструкции я писал на англисйком, так как кол-ва текста для обучения на английском на порядок, если не на порядки больше, соответственно результат должен быть лучше.
После первоначального переноса я захотел расширить функционал - чтобы у меня для каждого поста на русском была английская версия(ну и наоборот). То есть пользователь заходин в какой нибудь пост, но может переключиться на английскую версию сайта и увидеть тот же пост на другом языке.
Я сформулировал что я хочу в виде user-story, и результат удалось получилось достаточно быстро. Для меня работа с cursor не сильно отличалась от работы с командой разработки - главное правильно сформулировать, что хочется получить. Если я могу себе ответить на вопрос как я могу сделать эту задачу и могу ее выполнить за короткое конечное время - то должно получится неплохо. По моей практике, на синхронизацию команды для понимания задачи обычно тратиться много времени, поэтому скилл формального описывания задачи важен, так как от формулировки зависит качество исполненния. Возможно, надо еще попробовать какую нибудь из областей где вообще ничего неизвестно.
Если же в голове непонятно как что-то должно работать с точки зрения пользователя, то и результат может быть тоже странный - cursor сделает то, что его просят, но этот результат потом сложнее будет переделать, так как сложнее будет объяснить, что надо поменять. Так же, как и в обычной разработке ПО :)
Я сделал несколько итераций в виде неформальных user-story. Конечно, это не такой сложный проект, и тут ошибки все можно поправить самому достаточно быстро, но это точно штука, которая делает жизнь удобнее. И какие-то вещи, которые у меня заняли бы недели(так как на это обычно тратиться немного свободного времени, поэтому приходится “загружать” проект в себя каждый раз), то тут я сделал все реально за один вечер - часа 4 наверное у меня ушло. Это точно более эффективно чем пилить самому руками.
Правда автоматически нормально перевести текст с одного языка на другой он все же не смог - я видимо не ту модель для этого использовал, пришлось пока что использовать другой сервис.
Выводы
Эта штука ускоряет некоторые виды работ в разработке ПО, но надо к ней относиться со скепсисом, надо проверять результаты.
Почему вам надо это попробовать? Потому что это такие же инструменты, как excel или word раньше(или железное орудие вместо каменного), и надо знать какие инструменты подходят или не подходят для тех или иных задач. Я думаю что рынок как самих агентов, так и средств работы с ними будет сильно расти, что-то может быстро устаревать, что-то - нет, но профит можно получать уже сейчас. Я лично вышеуказанную задачу делал бы несколько недель с перерывами, а тут получилось сделать за один вечер не напрягаясь