Ограничения, присущие искусственному интеллекту, означают, что человеческий контроль, критическое мышление и стремление к качеству важны как никогда, пишет на портале The New Stack Лиз Акоста, специалист по работе с разработчиками компании Sonar.

Ландшафт разработки ПО постоянно меняется, и начало 2025 г. принесло новый толчок: вайб-кодинг (vibe-coding). В феврале исследователь OpenAI Андрей Карпатый ввел этот термин, чтобы описать эксперимент, в ходе которого он создал небольшой проект, не написав лично ни одной строчки кода и даже не прикоснувшись к клавиатуре.

Карпатый продиктовал superwhisper, голосовому ИИ-транскриптору, требования к приложению для «забавного проекта на выходные». Затем эти инструкции были переданы в Cursor Chat, многофайловый ИИ-редактор кода, который создал полноценное веб-приложение. Корректировки вносились с помощью удивительно «тупых» подсказок вроде «уменьшите отступы на боковой панели наполовину», при этом Карпатый принимал изменения, не просматривая диффы. Когда возникали ошибки, которые Cursor не мог исправить, его решением было «попросить внести случайные изменения», пока проблема, казалось, не решалась сама собой. «Это не совсем кодинг, — признал он. — Я просто вижу что-то, говорю что-то, запускаю что-то и копирую-вставляю что-то, и это в основном работает».

Для Леонеля Асеведо, генерального директора EnrichLead, «вайбинг» принял другой оборот. В марте 2025 г. он объявил, что создал SaaS-приложение с «нулевым рукописным кодом», посоветовав другим «продолжать ныть по поводу ИИ или начать создавать». В отличие от экспериментального проекта Карпатого, Асеведо позиционировал приложение как готовое к производству, что подразумевало надежность и жизнеспособность в реальном мире.

Триумф был недолгим. Спустя несколько дней он сообщил, что приложение подверглось атаке. Поскольку он нетехнический пользователь, отладка кодовой базы, созданной ИИ, оказалась медленным и мучительным процессом. Кто оказался виноват? Его «вайб-код» раскрыл критические API-ключи, оставив приложение широко открытым.

Эксперимент Карпатого и мытарства Асеведо пролили яркий свет на перспективы и опасности этого нового подхода. Хотя для вайб-кодинга все еще только начинается, этот метод, несомненно, является новой итерацией в постоянно развивающемся подходе к разработке ПО в эпоху ИИ.

Так что же такое вайб-кодинг?

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

В области вайб-кодинга лидируют две выдающиеся IDE, обе используют под капотом Claude 3.5 Sonnet, но предлагают разные пользовательские возможности:

Cursor Windsurf
Подход к ИИ и рабочий процесс Богатая интеграция функций ИИ, более ручное управление контекстом, «режим агента» Более простой, автоматизированный агент ИИ («Cascade»), сильная автоматическая обработка контекста
Пользовательский опыт и сложность Больше функций, потенциально более крутая кривая обучения Чище, интуитивнее, часто проще для новичков
Генерация кода и контекст Требуется более явный контекст (например, @codebase, @files) Превосходно справляется с автоматическим анализом кодовой базы и многофайловым анализом

Привлекательность и недостатки вайб-кодинга

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

  1. Более низкий барьер для входа. У вас есть отличная идея, но вы не умеете кодировать? Хорошо продуманные подсказки теоретически могут устранить этот пробел, превратив концепцию в код.
  2. Увеличение скорости разработки. Циклы создания прототипов и итераций могут значительно ускориться, когда IDE берет на себя основную часть работы по созданию кода.
  3. Фокусировка на проблемах более высокого уровня. Сняв со своих плеч написание шаблонного кода, операции CRUD и другие рутинные задачи, разработчики могут направить больше умственных усилий на решение сложных архитектурных и инновационных задач.
  4. Устранение пробелов в знаниях. Даже самые опытные разработчики сталкиваются с трудностями при изучении новых технологий. Вайб-кодинг может помочь ускорить процесс обучения, предоставляя базовые знания.

Однако, как показывает случай с Асеведо, первое впечатление может быстро испортиться. Разработчики должны четко осознавать все недостатки вайб-кодинга:

  1. Непоследовательность и непредсказуемость. Вывод LLM недетерминирован. Это может привести к созданию кодовой базы с разрозненными стилями, структурами и подходами, что превращает ее в кошмар для понимания, поддержки и предсказуемой отладки.
  2. Повышенный риск возникновения багов, ошибок и уязвимостей. ИИ предсказывает вероятные последовательности кода. Это может легко привести к появлению трудно обнаруживаемых ошибок или очевидных дыр в безопасности (например, открытых ключей API), которых опытный разработчик интуитивно избежал бы.
  3. Проблемы с долгосрочным сопровождением и масштабируемостью. Код, созданный без явного архитектурного руководства или учета будущих потребностей, может быстро стать не поддерживаемым и трудно масштабируемым.
  4. Потенциальное снижение производительности разработчиков. Плохо документированный или запутанный вайб-код может значительно увеличить трудозатраты разработчика при рефакторинге, отладке или расширении. Упражнения с подсказками для достижения определенного результата иногда могут занять больше времени, чем непосредственное написание кода.

Кодирование с помощью ИИ: новая глава в SDLC

История жизненного цикла разработки ИИ (SDLC) всегда была эволюцией: от водопада к agile, от ручного развертывания к DevOps. Каждая итерация меняла роль разработчика, внедряя новые инструменты и методологии для решения возникающих задач. Интеграция ИИ в кодирование, будь то «вайбинг» или что-то другое, — это новая глава, открывающая как возможности, так и требования к адаптации.

Чтобы использовать возможности ИИ, не налетая на его подводные камни, разработчики должны совершенствовать свои методы:

  • Исследовать и экспериментировать. Применяйте инструменты для ИИ-кодирования на практике. Будь то Cursor, Windsurf или следующая новинка, непосредственный опыт бесценен для понимания возможностей и ограничений.
  • Генерируйте, но проверяйте. Относитесь к сгенерированному ИИ коду как к первому черновику очень шустрого и немного наивного младшего разработчика. Всегда тщательно проверяйте, тестируйте и рефакторите, а также используйте инструменты для проверки качества кода и безопасности.
  • Применяйте архитектурное мышление. Когда ИИ занимается низкоуровневой реализацией, разработчики могут — и должны — переключить свое внимание на проектирование надежных систем, взаимодействие компонентов и решение сложных бизнес-задач с помощью инновационных, хорошо проработанных решений.
  • Осваивайте инженерию подсказок. Качество ИИ-вывода прямо пропорционально качеству ввода. Научитесь писать четкие, краткие и недвусмысленные подсказки. Стратегически учитывайте требования, шаблоны проектирования, последствия тестирования и потребности в развертывании/обслуживании, чтобы определить стратегию создания подсказок.

Роль разработчика эволюционирует, а не исчезает

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

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

В то время как долгосрочное влияние ИИ на SDLC продолжает развиваться, одно можно сказать наверняка: качество кода, безопасность кода и незаменимая роль надзора со стороны квалифицированных разработчиков всегда будут играть центральную роль в создании значимого, надежного и прочного ПО.