Вайб-кодинг: разбираемся и объясняем

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

вайб-кодинг
обзор
нейросети
промты
программисты не нужны
cover.webp

С чего всё началось?

Конечно же, с поста в социальных сетях. Андрей Карпатый, бывший директор по искусственному интеллекту в Tesla и сооснователь OpenAI, опубликовал размышления о том, как он пишет код при помощи промтов и нейросетей. При этом текст промта Андрей не печатает, а просто диктует. А все возникающие баги он фиксит при помощи нейросетей, просто копируя текст ошибки. Считайте, «без рук».

Получается, Андрей пишет программу или сервис, практически не соприкасаясь с реальным кодом. Да, ИИ выдаёт не идеально построенный алгоритм, но всё же рабочий. Такой метод создания кода Андрей назвал вайб-кодингом.

Стоит ли теперь радикально пересмотреть взгляды на обучение программированию, бросить на полпути С++ и погрузиться с головой в промт-инжиниринг?

Всё в порядке — проверено на практике

Конечно, такое громкое заявление стоит проверить. И разработчик, техлид и техноблогер Василий Зубарев (Вастрик) уже сделал это. Рассказываем, что получилось из идеи написать приложение для трансформации рукописного меню в веб-страницу с картинками блюд при помощи вайб-кодинга и Claude 3.5 Sonnet.

В ответ на обычный «бытовой» промт нейросеть выдала плохо структурированный код, который в теории мог бы написать джун. Код работал! Правда, результат был не совсем такой, какой представлял автор.

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

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

Мы попросили Вастрика дать дополнительные комментарии:

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

С ним мои мысли по поводу вайб-кодинга ещё больше подтвердились:

1. Вайб-кодинг очень хорошо закрывает «слабые места» инженера — например, для меня это был фронтенд (я 90% жизни был в основном бэкендером), ну а ещё тестирование, CI/CD и прочее. С ним очень легко вырасти из нишевого программиста в фулстека — большинство моих друзей как раз и используют его, чтобы писать веб-обёртки под свои сервисы или эксперименты.

2. Вайб-кодинг не просто позволяет быстро накидать прототип, он делает это в десять раз быстрее, чем я бы делал это сам. То есть обычно у меня бы ушла примерно неделя, чтобы разобраться с новым фреймворком или языком, а тут у меня есть минимально работающая версия за один вечер.

3. После какого-то размера проекта LLMки теряют эффективность. Если продолжать просить их «переписать всё» — они начинают генерить фигню и ломать весь проект. Нужно переключаться на точечное редактирование, то есть просить реализовать какой-то модуль или файл, а дальше вручную уже проверять его работоспособность. И вот для этого всё ещё нужен программерский опыт и «насмотренность», когда ты сразу можешь сказать, делает LLM чушь или же поняла тебя. Но это уже не вайб-кодинг в классическом понимании

4. Немного банально, но LLMки очень хорошо работают с популярными языками типа Python, JavaScript/TypeScript, Go, но как только надо реализовать что-то менее попсовое, например сложную анимацию на OpenGL-шейдерах, как в новой iOS с Liquid Glass, — они не могут. Им не хватает примеров и опыта. Можно хоть десять раз описывать ему каждый кадр анимации, он просто не справится.

Короче, классических фронтендеров и бэкендеров, которые перекладывали JSON’ы, считай, уже заменили, а вот более сложные штуки всё ещё придётся делать руками.

5. Я уже вижу очень много кода на Гитхабе (и в PRах к Вастрик Клубу, например), когда люди бездумно используют LLM, чтобы что-то «немного пофиксить», и та генерит им колоссальный оверинжиниринг бред, от которого у всех нормальных людей волосы дыбом встают. Вот недавний пример. То есть человек даже не удосужился понять, что происходит, попросил LLM «сделать красиво» — и она, конечно же, сделала, хотя проблема вообще была не там. Вот такой ерунды мы будем видеть всё больше и больше сейчас.

Несмотря на всё это, Cursor стал для меня, как для опытного программиста, не просто «вторым пилотом» — он открыл для меня целый пласт новых приложений, который ранее был недоступен. Например, на прошедшем Вастрик Кэмпе мы буквально за вечер навайбкодили страничку с расписанием, которой все с удовольствием пользовались весь ивент. Мы даже печатали её на стену. Раньше мы бы даже не подумали тратить время на кодинг какой-то отдельной странички и выкладывали бы расписание в Телеграме или в PDF, а тут буквально за вечер ты можешь создать полностью кастомный проектик под лично твои требования и быстро его выложить. Людям, кстати, очень понравилось. Вот такого в моей жизни ещё не случалось, и это круто.

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

После практики — выводы

Чтобы вайб-кодинг дал качественный результат, промты нужно писать на уровне грейда middle и выше. Значит, в любом случае основная структура алгоритма, дебаггинг и рефакторинг лежат на плечах реального разработчика.

Да, ИИ можно использовать, если необходимо написать что-то простое, но для серьёзных задач этот вариант не подойдёт.

Сейчас всё в порядке. А что дальше?

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

  1. Автоматизация прикладного кода.
    Андрей Бреслав, один из авторов Kotlin, предполагает, что LLM в ближайшее время помогут частично автоматизировать мелкие рабочие процессы. В перспективе это приведёт к нивелированию ручного написания прикладного кода.

  2. Программирование станет доступнее.
    Наверняка появится множество курсов, да и люди не из IT со временем сами догадаются, как писать промты так, чтобы получался работающий код. Из этого вытекает следующий пункт.

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

Любому начинающему разработчику кроме профильных знаний будет полезно умение ставить чёткое техническое задание, анализировать задачи по приоритетам и сложности, чтобы выполнять часть из них при помощи LLM.

«Заменят» — вряд ли. Без хорошего промта не будет хорошей программы. А кто напишет промт? Разработчик.

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

Какие нейросети подходят для вайб-кодинга?

  1. Aider.
    Помогает редактировать код в репозитории Git прямо из чата. Чтобы не возиться с редактором кода, коммитами и пуш-запросами, можно описать необходимые изменения в диалоге, а Aider сам внесёт их в код и создаст коммит.

  2. Cursor.
    Текстовый редактор для программистов. Он понимает и считывает авторский код и пишет его за пользователя, находит ошибки и объясняет, что делает определённый участок нагенерированного им кода. Также доступна функция чата, где можно ставить ИИ прямые задачи.

  1. Claude Sonnet.
    Это AI-помощник, который может писать код, объяснять его и помогать разработчикам. Он хорошо анализирует большой код, ищет ошибки, генерирует новый код и объясняет, как он работает.

В любом случае самый верный вариант найти то, что подойдёт именно под ваши задачи, — пробовать. Нейросетей много, все они немного разные и лучше справляются с заказами разного профиля.

По секрету от автора

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

Как в итоге получилось: если сегодня задать промт «напиши текст о вайб-кодинге» — любая модель выдаст набор предложений в стиле устаревшего учебника по программированию. А то и вообще не поймёт, о чём речь, и начнёт генерировать текст о коде, который пишется «по настроению». Читать это будет сложно, а воспринимать информацию — ещё сложнее.

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

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

Так что, как ни странно, ценность человека из-за появления ИИ, наоборот, повышается.

Два последних вопроса эксперту

Вастрик, какой совет ты дашь IT-первокурсникам и тем, кто вступает в эту сферу одновременно с появлением вайб-кодинга?

Вастрик: Мой совет неизменен с эпохи до LLM: учитесь не писать код, а решать проблемы. Я говорю это уже лет десять 😃 Сейчас, с приходом LLM, стало очевидно, что умение писать код — это лишь навык, который легко заменяется и стоит с каждым годом всё дешевле. Потому, чтобы оставаться конкурентным на рынке труда, надо мыслить дальше кода. Подход «я программист, моё дело код писать, а с остальным пусть менеджеры разбираются» всё меньше и меньше работает. Код теперь умеет писать LLM, а ремесло программиста выходит на уровень выше. Кодо-макаки и раньше были низшим и самым дешёвым классом программистов, а сейчас так вообще становятся не нужны.

 

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

Вастрик: По поводу рабочих задач — я сейчас фултайм инди. Потому мои рабочие задачи — это и есть то, что я описал: TaxHacker, Вастрик Клуб, Вастрик Кэмп. Всё это примеры реальных задач, которые я решаю, которые приносят пользу людям, а мне — деньги на еду и выплату ипотеки.

Это не абстрактные эксперименты дома под подушкой, я почти весь код сейчас пишу с LLM — и не знаю пути назад.

ещё по теме