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

Как Валера учился вайбкодить

Валера — обычный разработчик. Немного любопытный, немного уставший, но явно не из тех, кто боится экспериментов. В какой-то момент он услышал о вайбкодинге и подумал: «А что, если и правда можно запускать интерфейсы, API и базы без единой строки кода?» Скачал Cursor, начал писать промпты — и тут началось…

Начал писать промпты. Первый — ошибка. Второй — тоже ошибка. Третий — казалось бы, заработал, но тут Cursor попросил: «А теперь исправь всё вручную». И в этот момент Валера понял: что-то пошло не так.

Когда Валера уже собрался удалить всё к чёрту и переехать в тайгу, ему явился древний Курсор, Луция Папирий Курсор. Он пообещал научить его античной мудрости вайбкодинга. Так начался Новый путь.

Принцип 1: указывать путь, а не шаг

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

265131cec5561381b3780b8128e981a0.png

Так что не так? Валера микроменеджерил и писал промпты построчно: «Напиши такую строчку кода», «Теперь эту», «Теперь почти такую же, но нет». На выходе — слишком много контекста, всё ломалось.

Тогда Древний Курсор предложил другой подход: не пытаться контролировать каждый шаг, а описывать цель, представление конечной фичи: фильтра на UI, кнопки, таблички. Потом уже промпты. Не «напиши строчку кода», а «сделай вот такую кнопку». Маленький инкремент, но проходящий полностью: база → бэкенд → фронт.

Всё потому, что ИИ не умеет абстрактно мыслить как сеньор. Он мыслит прямолинейно. Он не поймёт, что «кнопка фильтра» — это и компонент, и роут, и вызов к API. Ему нужно проговаривать как джуну: «Сделай кнопку, которая фильтрует по категории», «Вот данные», «Вот структура».

Это принцип V — Vision.

Принцип 2: что даешь, то и получаешь

Когда дашборд заработал, Валера захотел сделать его красивым. Он нашёл красивый сайт, сделал скриншот, добавил в Cursor и сказал: «Сделай так же». Но результат был далёк от идеала. Он пробовал снова, добавлял vision, уточнял промпты — всё без толку.

35e39f88744e3c332278c69cca915e5b.png

Оказалось, что в предыдущей сессии стили писались в отдельный CSS-файл, а теперь — в текущий. Стили конфликтовали, но Cursor об этом не знал, потому что старый файл не был в контексте.

Тогда и тут Древний Курсор поделился мудростью: важно помнить о том, что добавляешь в контекст. И что не добавляешь.

Это принцип I — Input.

Принцип 3: избыточное — враг нужного

Воодушевлённый Валера начал клепать прототипы. Но быстро понял: сделать прототип — это 10% усилий, поддерживать — 90%, а менять — все 200%. Контекст разросся, всё стало хрупким. Он не знал, с чего начинать: с UI, бэкенда или базы.

Тогда Древний Курсор подсказал: начать нужно с того, что будет чаще меняться. Если это UI — начать с него. Если база уже есть и меняться не будет — с неё. Главное — не поддаваться соблазну делать «на вырост». Языковая модель любит добавлять лишнее: поля, фильтры, метаданные. Но 99% этого не нужно. Делай только то, что нужно сейчас.

Это принцип B — Boundaries.

Принцип 4: не слепо принимай, а разумно выбирать

Когда Валера пришёл на код-ревью, Cursor оставил кучу очевидных комментариев: «Добавил библиотеку», «Добавил ещё одну». Коллеги удивились: «Что за код?» Возникло искушение сказать: «Это не я, это Cursor!».

Тогда Древний Курсор напомнил: ответственность за код несёт человек. Неважно, кто его написал — ты решаешь, что показать команде.

Это принцип принцип E — Evaluate.

Принцип 5: думать о безопасности

Когда Валера начал выкатывать свои прототипы наружу, он впервые задумался: «А безопасно ли это?» До этого момента он просто вайбкодил — быстро, весело, эффективно. Но теперь его код могли трогать настоящие пользователи.

Он спросил у Cursor: «А ты точно всё сделал безопасно?» Курсор промолчал. Потому что языковые модели не думают о безопасности. Они не проверяют, не фильтруют, не защищают. Они просто генерируют.

e660885d9bb971fc52943ce2249c6e7e.png

Тогда в последний раз пришёл советовать Древний Курсор: думать должен человек. Даже простая мысль о безопасности — уже шаг вперёд. Тогда Валера начал проверять, нет ли SQL-инъекций, XSS, уязвимостей в промптах.

Это принцип S — Security.

Фреймворк VIBES

Так у Валеры появился свой фреймворк для эффективного вайбкодинга:

  • Vision — чётко формулировать, что хочешь получить. Модель может прийти к цели другим путём, но результат будет ближе к нужному.

  • Input — помнить про контекст. Особенно про то, что ты забыл в него добавить.

  • Boundaries — не вестись на лишнее. Не писать код на вырост, не оптимизировать преждевременно.

  • Evaluate — проверять результат и не перекладывать ответственность.

  • Security — думать о безопасности. Языковая модель — не эксперт в этом.

На прощание Древний Курсор добавил ещё несколько практических наставлений:

  • Писать тесты. С ними вайбкодинг становится спокойнее. Проверил — работает — зафиксировал. Не работает — откатился.

  • Использовать git commit и git reset. Сделал шаг — сохранился. Не получилось — вернулся и попробовал по-другому.

  • Знать слабые места ИИ. Не доверять ему архитектуру, обработку исключений, DI и работу с новыми библиотеками. Лучше использовать проверенные временем решения — на них модель обучалась, с ними она справляется лучше.

В конце дня Валера проснулся. Курсор, тот древний, исчез. Остался только он и современный Cursor. Но теперь у него был опыт, понимание и фреймворк VIBES.


Если хочешь вайбкодить вместе с нами — в 2ГИС есть вакансии. Мы тоже каждый день пробуем, учимся и делаем лучше!

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу service@support.mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.