Разработка нового CMS. Мой опыт с Roo Code, Gemini и Cursor
Для начала хочу поговорить о ChatGPT. Когда я начал писать этот пост, я дал ему название предполагаемой статьи: «Насколько хорош ИИ для разработки ПО».
Я ожидал, что он начнет задавать вопросы о том, что именно я хочу написать, но вместо этого он сгенерировал эссе на 500 слов с полностью вымышленным содержимым. В нем якобы излагались мои мысли о трех инструментах ИИ, которые я тестировал: Roo Code, Gemini и Cursor. Однако с моим реальным опытом это не имело ничего общего.
Вот что ChatGPT «написал» про каждый инструмент:
Имея большой опыт разработки CMS-систем, я решил использовать ИИ, чтобы создать новый CMS, опираясь на годы практики создания сайтов — от простых страниц до решений уровня предприятия.
Начнем с RooCode. Мне действительно понравился этот инструмент: примерно за пять часов я собрал кодовую базу на «чистом» JavaScript, на которую обычно ушла бы неделя. У меня была демонстрационная версия CMS, способная рендерить несколько макетных страниц. Однако когда я попросил перевести базу на TypeScript, переход не удался. Если бы я изначально стартовал на TypeScript, проблемы, вероятно, не возникло бы.
Затем я переключился на Gemini, который успешно перевел проект на TypeScript, и через пять-шесть часов большая часть кода уже работала. Тем не менее он продолжал «зацикливаться» на задачах — видимо, из-за некоторых технических нюансов.
В этот период я сделал паузу и занялся исследованием. Так я наткнулся на видео о Cursor. От других разработчиков я уже слышал хорошие отзывы и давно хотел его попробовать.
Вернувшись к Gemini, я попросил его составить спецификацию проекта, которую можно дать другой ИИ-системе. Эту спецификацию я передал Cursor и собрал новую версию CMS.
К этому моменту я построил один и тот же код с помощью разных ИИ-инструментов. Я искренне рекомендую любой из них — они оказались очень эффективными. Агенты умели редактировать файлы, перемещать их и в целом выполнять большую часть необходимых изменений. На мой взгляд, прирост продуктивности от использования этих инструментов — порядка десятикратного. Кроме того, постоянная работа с одним инструментом улучшает способность формулировать точные изменения, которые мне нужны.
Поскольку больше всего времени я провел с Cursor, были и раздражающие моменты: когда я попросил создать базу данных для хранения данных, он сделал первичный ключ VARCHAR(36) вместо UNSIGNED BIGINT. Любопытно, что, когда я спросил о лучшем способе хранения первичного ключа, он предложил перейти на BINARY и написал две функции, которые преобразовывали желаемый GUID в числовое значение. У Cursor есть файл .cursorrc, позволяющий задать правила, которых он будет придерживаться при генерации решений; в итоге я его нашёл, когда инструмент повторял одни и те же ошибки.
Когда я попросил сгенерировать документацию по проекту, он написал много текста, но значительная часть была неверной: упоминались каталоги, которых не существовало.
Наша цифровая эпоха меняется — пора подстраиваться. Год назад я назвал бы эти инструменты «пьяными студентами». Сейчас это уже «джуниор-разработчики», за которыми нужно присматривать. И они будут становиться только лучше.