Vibe-кодирование: что это такое и почему его следует пропустить
Мы все знаем, что программисты используют инструменты искусственного интеллекта для дополнения своей работы, но в городе появилась новая тенденция, выводящая вещи на новый уровень. Термин «кодирование вибрации» был придуман соучредителем OpenAI Андреем Карпати всего в прошлом месяце, но то, что началось как случайный пост X, быстро превратилось в совершенно новое сообщество.

В своем посте Карпати описывает создание программного обеспечения без написания кода — все, что он делает, это отправляет подсказки с описанием того, что он хочет, в свой инструмент искусственного интеллекта и принимает все результаты, которые он генерирует. Он даже использует инструмент для диктовки , чтобы не пользоваться клавиатурой. Звучит безумно, правда? Это потому, что это так.
Что такое кодирование Vibe?
Большинство инструментов ИИ-кодирования сейчас делают три вещи:
- Генерировать предложения автозаполнения, когда пользователь набирает строку кода.
- Объясняйте, обобщайте, отлаживайте или дайте рекомендации по фрагментам кода, которые вы предоставляете.
- Генерируйте фрагменты кода на основе подсказок на естественном языке.
Они созданы, чтобы помочь людям, умеющим программировать, причем некоторые из них также сосредоточены на учебе и образовании. Даже Cursor, один из основных инструментов, которые люди сейчас используют для управления кодом, действительно создан для разработчиков. Он предназначен для ускорения простых процессов для людей, которые писали бы код независимо от того, существовал этот инструмент или нет.

Возьмем, к примеру, это случайное объяснение функции с веб-сайта Cursor: "Курсор позволяет писать код, используя инструкции. Обновляйте целые классы или функции с помощью простой подсказки". Конечно, цель этой функции — избавить вас от необходимости писать код вручную, но вам все равно нужно знать, что такое классы и функции, чтобы эффективно ее использовать.
Vibe-кодирование (или то, чем быстро становится vibe-кодирование) — это тенденция, когда люди берут эти инструменты и пытаются сделать что-то, практически не имея знаний в области разработки программного обеспечения — просто описывая на естественном языке результаты, которые они хотят видеть как конечный пользователь.
Почему кодирование Vibe является проблематичным для ваших пользователей?
Когда совершенно нетехнический человек открывает Cursor и начинает кодировать вибрации, результаты будут сильно отличаться от тех, которые кодирует кто-то вроде Андрея Карпати. Там, где Karpathy может попросить Cursor «Сгенерировать некоторый код, который хеширует и солит пароли для аутентификации пользователя», нетехнический программист Vibe может сказать: «Эй, Cursor, создай безопасную базу данных для хранения моих паролей».
Конечно, они использовали слово «безопасный», но это именно та деталь, которую LLM может случайно проигнорировать. Альтернативно, его идея «безопасности» может не соответствовать стандартам коммерческого программного обеспечения, или в некоторых местах меры безопасности могут быть добавлены, а в других — нет. Есть еще одна проблема с этой формулировкой — часть «хранить мои пароли». Вполне нормально думать о том, что пароли где-то «хранятся», но если вы знаете, что такое добавление и хеширование паролей, вы знаете, что пароли пользователей технически нигде не хранятся.
Вместо этого сохраняются соль и хэш-значение объединенной соли и пароля — и, несмотря на все безумные термины в этом предложении, это не слишком сложная концепция. Однако вы никогда не узнаете об этом, если не пойдете целенаправленно и не узнаете об этом. А если вы этого не знаете, вы не можете об этом просить.
Итак, вместо этого вы запросили защищенную базу данных — но какую версию джинна LLM вы получите? Тот, который воспринимает ваше приглашение буквально и сохраняет пароли в небольшой случайной базе данных? Или тот, который учитывает то, чего вы на самом деле хотите достичь, и предлагает для вас правильный процесс аутентификации?
Я думаю, что наиболее точный ответ заключается в том, что иногда вы получаете подлого джинна, иногда вы получаете доброго, и в большинстве случаев вы получаете что-то среднее – без какой-либо реальной рифмы или причины для этого. Он мог выполнить 100% работы, мог сделать 90%, мог сделать 5%. С такой расплывчатой подсказкой может случиться что угодно, и проблема в том, что нетехнический вайбер-кодер не имеет возможности понять результат или решить, насколько он хорош.
Вы даже не сможете написать полноценные тесты, чтобы выяснить, что происходит, если не знаете, какие меры безопасности вам нужны, что в итоге у вас получилось, чего они должны достичь или как могут выглядеть успех и неудача.
В конце концов, наличие плохих, сломанных или нулевых мер безопасности, реализованных в вашем программном обеспечении, не приведет к его поломке. Все равно может показаться, что со стороны пользователя все делается правильно, но за закрытыми дверями конфиденциальная информация ваших пользователей (личные данные, информация о платежах, история использования) будет совершенно незащищена и готова к краже злоумышленниками. И это плохо как для вас, так и для ваших клиентов — нарушения безопасности не вызывают ничего, кроме стресса, скандала и финансовых потерь для владельцев продукта.
Когда Карпати описал свои эксперименты по кодированию вибраций, он сказал, что код, который он и Курсор создают, «в основном работает», и я здесь не для того, чтобы утверждать, что «в основном работает» неприемлемо. В каждой базе кода каждого продукта всегда есть быстрые исправления, хакерские решения, ошибки и всевозможные проблемы. Учитывая размер и сложность программного обеспечения в наши дни, это просто неизбежно.
Но если вы хотите опубликовать свой проект для публики и брать с людей деньги за его использование — вы обязаны сделать его максимально безопасным. Оставлять конфиденциальную информацию незащищенной недопустимо, и предполагать, что она защищена без надлежащего подтверждения, тоже недопустимо.
Если вам нужна поучительная история из реальной жизни — @leojr94 на X есть все, что вам нужно. Вот его история, сжатая в три X-поста:



Почему кодирование Vibe для вас проблематично?
Программное обеспечение дорогое. Даже если вы сократите все затраты на разработку за счет кодирования Vibe, вам все равно придется платить за хранение ваших данных, их отправку между вами и вашими пользователями и взаимодействие с другими сервисами через API.
Сервисы, которые вы для этого используете, например AWS, обычно оплачиваются по мере использования, то есть вы платите только за то, что вам нужно. Это здорово, правда? Конечно. Но когда вы не контролируете разрабатываемое программное обеспечение, вы не контролируете и использование данных. Ваш код, сгенерированный случайными фрагментами и объединенный вместе, скорее всего, будет крайне неэффективным. Всего несколько плохо спроектированных строк могут дать в 3, 5 или даже 10 раз больше данных, чем вам действительно нужно, а пересылка этих ненужных данных туда и обратно между вами и вашими пользователями будет стоить вам много дополнительных денег. Самый взрывоопасный вариант, когда все может пойти не так, — это когда дела идут хорошо.
Представьте, что у вас есть несколько пользователей, вам приходят счета, рост медленный, но устойчивый, и вы можете с этим справиться. Но однажды вы просыпаетесь, и ваш контент в социальных сетях становится вирусным, привлекая тысячи людей к вашему программному продукту. Это было бы здорово, если бы не тот факт, что ваш счет за AWS теперь огромен, и вы замечаете, что затраты на сетевой трафик на одного пользователя на самом деле выше, чем стоимость подписки, которую они вам платят.
Каково решение?
На этом этапе некоторые люди начнут предлагать больше продуктов. Платформы, предназначенные для программистов Vibe и «нетехнических специалистов», которые предоставляют пользователям дополнительную поддержку безопасности, серверов и других серверных функций. Некоторые люди также могут сказать, что с некоторыми изменениями кодирование Vibe может стать именно тем, что нужно разработке программного обеспечения, чтобы стать демократизированной и перестать быть исключительной.
У меня другое мнение — оно уже демократизировано и уже инклюзивно (хотя я не думаю, что это подходящее слово). Любой человек в любом месте может узнать о информатике, кодировании, программировании или разработке программного обеспечения, если у него есть компьютер и подключение к Интернету — и это именно то, что люди делают. Огромное количество программистов являются самоучками, и, вероятно, так будет всегда. У вас есть все, что вам нужно, что подводит меня к «суровой правде» ситуации: если вы хотите делать программное обеспечение, то вам не повезло — вам нужно научиться это делать.
Если у вас есть идея, вы либо прикладываете усилия, чтобы научиться ее реализовывать, либо пытаетесь найти партнеров и инвесторов, которые помогут воплотить ее в жизнь. Не существует аморального варианта с нулевыми усилиями, при котором вы волшебным образом получаете работающий продукт за незначительное время и не имеете партнеров, с которыми вам нужно было бы делиться прибылью. Мир устроен не так, и так он и не должен работать.
Если вы хотите говорить на другом языке, вам нужно его выучить. Если вы хотите играть на гитаре, вам нужно научиться. А если вы хотите создавать программы — вам нужно научиться создавать программы. Если вам нравится путь «Сделай сам», то отличные новости — любой, у кого есть возможность сидеть и писать код, используя бесплатное или платное программное обеспечение, также имеет возможность сидеть и изучать программирование, используя бесплатные или платные учебные курсы. Возможно, вы могли бы даже использовать инструменты искусственного интеллекта, чтобы ускорить процесс.
И я не шучу, когда говорю, что это может сделать каждый — программирование на самом деле настолько важно для инклюзивности, что существует даже «тип программирования», доступный практически каждому. Конечно, не каждый человек станет архитектором программного обеспечения в ведущей компании, но некоторые люди научатся создавать игры на C++, другие научатся создавать приложения на Python, и даже если вы решите, что программирование — это не ваше дело, вы, вероятно, все равно сможете создавать веб-сайты с помощью HTML. Независимо от того, являетесь ли вы профессиональным любителем учебы или никогда в жизни не учились, являетесь ли вы гением в математике или плохо разбираетесь в числах — вы сможете что-то сделать.
Как долго будет сохраняться кодирование Vibe?
Сейчас невозможно узнать, чего Карпати намеревался достичь, проведя этот небольшой эксперимент или разместив его в Интернете. Для меня пост X звучит так: "Чувак, эта штука с искусственным интеллектом сводит с ума. Я могу принимать массу намеренно плохих решений, просить намеренно глупые вещи, и каким-то образом в итоге у меня получается что-то, что все еще работает".
Другие люди, кажется, интерпретировали это скорее как «Ух ты, ты можешь создавать программы, даже если не понимаешь, как программировать». Неа. Большое нет. Вы не можете этого сделать. Вы можете подумать, что барьер между вами и приложением, которое вы хотите создать, заключается в том, что загадочные программисты сидят и печатают весь день — что вы ничего не можете сделать, потому что не знаете, как набирать code
.
Но это не так. Вы можете начать понимать все эти вещи после нескольких часов их изучения. Это всего лишь язык, просто метод общения между вами и компьютером, и он меркнет по сравнению с фактической информацией, которую вы хотите передать. Если ваша цель в жизни — провести глубокий и тщательно технический разговор с испанским физиком-экспериментатором на его родном языке, вы не достигнете этого, просто выучив испанский.
Проектирование программного обеспечения, понимание алгоритмов, управление данными, соблюдение стандартов безопасности, масштабируемость, оптимизация и отладка — вот навыки, необходимые для создания программного обеспечения. Поэтому не имеет значения, позволяет ли Cursor избежать ввода кода, вы все равно не сможете создать правильное приложение, если ничего о приложениях не знаете.
Я действительно не знаю, насколько масштабным будет кодирование Vibe или как долго оно продлится, но я определенно не думаю, что нетехническому человеку стоит пытаться написать код Vibe для продукта. Я также не думаю, что попытка использования продукта с кодировкой Vibe стоит риска для потребителей — невозможно узнать, безопасны ли ваши пароли и платежная информация. Если вы видите новый, независимо разработанный продукт, который вас интересует, подумайте о том, чтобы узнать, кто его сделал и как он был сделан, прежде чем давать им деньги.