Пробую вайб-кодинг: бездумная разработка на 100% с ИИ

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

Я подумал, что хоть эта история и попахивает инфоцыганством и троллингом за лайки, всё равно нужно попробовать этот «вайб-кодинг».

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

Автор твитов использовал Cursor, а я попробую Chat GPT, за который я уже довольно долго плачу и так мало его использую.

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

Тематика приложения

Я решил долго не думать и самые первые шаги тоже делегировать чату гпт. Он подсказал мне несколько идей для простых приложений, и я выбрал конвертер валют. Курсы валют будут подгружаться из публичных API.

Бэк будет на java, чтобы я в завершении эксперимента мог оценить качество сгенерированного кода.

План разработки от чата гпт

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

Далее я попросил пошаговую инструкцию, что мне делать. Чат ГПТ выдал алгоритм, которому я бездумно следовал.

Реализация плана от Chat GPT

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

После этого я переместился в Visual Studio, где сделал проект для фронта, заполнил файлы App.js, index.js и новый файл CurrencyConverter.js. В итоге получил простое приложение.

Простой конвертер валют с полем ввода, выбором валюты и кнопкой

От момента, когда я решил создать это приложение до результата прошло полтора часа. Но потом я попросил чат гпт сделать дизайн получше, и тут началось веселье с tailwindcss.

Мне понадобилось ещё полтора часа и более двадцати сообщений с инструкциями чата гпт, чтобы он наконец-то встал и заработал. Я копировал вывод терминала, мне прилетали инструкции. Более десяти раз я удалял какие-то node_modules, более двадцати раз я переустанавливал tailwind и даже дважды переустанавливал Node.js. Каждый раз чат гпт уверенно говорил, что сейчас мы это пофиксим раз и навсегда. Скорее, двадцать раз и навсегда.

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

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

Минусы Chat GPT при вайб-кодинге

У чата гпт нашлось довольно много заметных минусов.

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

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

Он забывал, какое состояние кода у меня в проекте. Например, сначала сказал удалить всё, включая файл App.js, а спустя пару сообщений внезапно предложил этот файл заполнить. Или предложил удалить все модули, а потом оказалось, что какие-то всё-таки должны были быть поставлены. Или сначала написал функцию с обращением к бэку, а потом при добавлении стилей предложил всё стереть и вставить код со стилями, но уже без обращения к бэку в этой функции. То есть он совершенно не запоминает текущее состояние проекта и каждый раз генерирует советы заново. Более того, один раз он даже забыл, на чём я пишу…

В-третьих, он критиковал свой собственный код. Например, сначала говорил мне поставить react-scripts, а потом сам же говорил, что это устаревшее решение, и лучше поставить Vite. Таким образом, не только его код не работал, но и возник вопрос, можно ли его использовать для изучения чего-либо без верификации данных (мой ответ до этой статьи был «нет», и теперь он лишь подтвердился).

В-четвёртых, часто его решения просто чередовались. Если заниматься именно вайб-разработкой и не читать предложенные команды, то можно и не заметить, что он по очереди предлагает два-три нерабочих решения, забывая, что они уже были. Например, он несколько раз метался между двумя вариантами, как импортировать tailwindcss в файле postcss.config.js (или в postcss.config.cjs — с названием тоже не мог определиться). Как будто перебирал все возможные сочетания, пока не заработает.

Обилие вариантов решения одной и той же проблемы — не сработало ни одно

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

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

Выводы: умеет ли Chat GPT писать код?

Чат гпт действительно может создавать проекты, по крайней мере, простые. Мне он успешно создал проект на Java / Spring + ReactJS + tailwindcss. Но после каждой ошибки нужно начинать заново и просить новый код практически для всех файлов и всех настроек, иначе в его тексте начинаются несостыковки.

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

Лично для меня ИИ сегодня не особо упростил задачу. Думаю, за 5 часов я бы тоже мог создать проект из одного сервиса, одного контроллера и пары js-скриптов. И так же бы гуглил каждую проблему и пробовал десятки советов со stackoverflow, потому что никогда ничего в программировании не работает. Чат гпт мне не позволил миновать эти проблемы и сделать так, чтобы всё работало сразу.

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

5 Comments

  1. А какая модель ChatGPT? Странно, что быстро забывает. У меня есть беседы, тянущиеся месяцами и он помнит что было в начале.

    Нравится

  2. Прочитала с интересом. Я и есть тот самый человек без опыта, который периодически встречает заманчивые статьи о том, как ИИ может сделать что угодно — сам, без помощи разработчиков. Но попробовать пока не решилась, хотя и хотелось. Теперь вот вижу, что все не так просто. Так что пока и пробовать не буду — нет на это столько времени, а самое главное — сейчас нет острой необходимости. Если вдруг необходимость появится, тогда и попробую. Может, к тому времени и ИИ научится лучше делать приложения для чайников)

    Нравится

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

      Нравится 1 человек

Оставить комментарий