Я только что выполнил свой первый вайбкодинг-заказ по разработке небольшого интернет-магазина. Изначально задача выглядела понятной: каталог, корзина, админка, оплата, деплой. Казалось, что это несложный CRUD-проект плюс дизайн по референсам заказчика.

В моем случае все началось с оценки: «три недели, а если пойдет хорошо, то и две». Но фактически проект занял месяц. Ниже я описываю 10 своих ошибок, из-за которых мой план разошелся с реальностью.

1. Разрабатывал только локально, на VirtualBox

Я установил виртуальную машину VirtualBox и вел всю разработку на ней. Это удобно: можно держать открытыми сколько угодно окон, не бояться что-то сломать и иметь полностью контролируемую среду.

Но мой VirtualBox не был доступен из внешнего интернета. Поэтому через несколько дней пришлось разворачивать staging-сервер на VPS для полноценного тестирования.

Пока для себя формулирую так: если проект маленький и завязан на внешние интеграции, staging нужно поднимать как можно раньше и использовать его не только для тестирования, но и как рабочую площадку для ИИ-агентов.

2. Слишком поздно занялся боевым доменом и сервером

Регистрацию домена и настройку боевого сервера я откладывал до последнего. Казалось логичным сначала закончить код, все протестировать и только потом выкатываться в прод.

Это решение оказалось ошибкой. В середине разработки понадобилось подключать онлайн-платежи, а банк запросил боевой домен. Пришлось срочно решать вопрос, но быстро это не получилось: домен нужно было регистрировать на заказчика, а он в этот момент был в отъезде. В результате работа встала на несколько дней.

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

3. Неправильно организовал доступ к хостингу

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

Не успел я довести настройки до конца, как клиент добавил 2FA по email. В итоге доступ пришлось восстанавливать через лишние согласования.

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

4. Недооценил сложность интеграции с банком

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

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

5. Не определил процесс согласования дизайна

По ходу проекта я так и не пришел к окончательному ответу, что эффективнее:

  • либо сначала показывать заказчику сгенерированные макеты или референсные картинки;

  • либо сразу писать черновой код фронтэнда и показывать реальные экраны из браузера.

У обоих подходов есть недостатки.

  • Если согласовывать картинками, на старте это дешевле и быстрее. Но потом можно потратить много времени, пытаясь добиться точного соответствия между референсом и живым интерфейсом.

  • Если начать с чернового кода фронтэнда, а заказчик не примет дизайн, то переделка обойдется дороже.

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

6. Не проговорил с заказчиком реальную стоимость доработок

Мы с заказчиком заранее договорились, что после сдачи проекта любые мелкие доработки оплачиваются отдельно. Но на практике возникла проблема: пожелания были настолько мелкими, что просить за них деньги было как-то совсем неудобно.

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

Я сделал вывод, что «мелких правок» не бывает. Даже минимальное изменение, состоящее из одной строки, в моем случае означает:

  • открыть проект и рабочую среду;

  • переключиться на актуальную ветку;

  • внести изменение;

  • проверить его локально;

  • проверить на staging;

  • отправить скриншот заказчику;

  • получить ОК на обновление;

  • выкатить обновление в прод.

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

7. Недостаточно подумал о безопасности

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

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

8. Переусложнил архитектуру

Я сделал магазин в двух вариантах: как обычный сайт и как Telegram Miniapp. Заказчику я представил это как преимущество. Но на практике это оказалось лишним усложнением.

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

С Telegram Miniapp есть и дополнительная проблема: для нормальной работы Telegram API по причине блокировок лучше использовать зарубежные серверы. Но здесь сразу возникает вопрос соответствия требованиям по хранению персональных данных. В результате архитектурное решение перестает быть чисто техническим и быстро упирается в юридические ограничения и сетевую доступность.

9. Столкнулся с юридическими рисками

Я реализовал авторизацию через Google, а потом вышел закон, который запрещает это в России. Теперь авторизацию, вероятно, придется переделывать.

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

10. Недостаточно вложился в нагрузочное тестирование

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

Если проект предполагает рост, такие проверки нужно делать заранее, хотя бы на базовом уровне: определить узкие места, оценить поведение под пиками и понять, где находится предел текущей конфигурации.

Что я вынес из этого проекта

Как видите, даже маленький веб-магазин очень быстро обрастает внешними зависимостями: доменом, платежной интеграцией, доступами, требованиями к безопасности и т.д. Каждая такая деталь по отдельности не выглядит критичной, но именно они и съедают сроки.

Спасибо, что дочитали до конца.
Надеюсь, этот список поможет вам (и мне) не наступить на те же грабли.

Комментарии (5)


  1. Xtray
    23.06.2026 10:59

    Пока мой сервер с 2 ГБ памяти справляется с текущим объемом нагрузки

    Похоже, что не справляется..
    (Secure Connection Failed и NS_ERROR_NET_EMPTY_RESPONSE)


    1. hukka777 Автор
      23.06.2026 10:59

      Спасибо, поправил кривую ссылку


  1. tarasovaksu
    23.06.2026 10:59

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


  1. andreymal
    23.06.2026 10:59

    Но мой VirtualBox не был доступен из внешнего интернета.

    Сделать его доступным вообще не проблема

    банк запросил боевой домен.

    Ну к боевому серверу это в общем-то не имеет отношения

    Я попросил заказчика самостоятельно зарегистрировать аккаунт у хостера и временно передать мне пароль, чтобы я настроил прод-сервер.

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

    - либо сначала показывать заказчику сгенерированные макеты или референсные картинки;
    - либо сразу писать черновой код фронтэнда и показывать реальные экраны из браузера.

    Ну раз уж в тегах зачем-то стоит «вайбкодинг», то можно упомянуть, что клод умеет генерировать вроде неплохие макеты в html-коде (но стоит иметь в виду возможную нейрослопнутость)

    Тем не менее, простая связка логин-пароль для админки выглядит слишком слабым решением.

    «выглядит» ≠ является, не ставьте пароль 123456, не лепите бумажку с паролем на монитор, и всё будет хорошо


    1. hukka777 Автор
      23.06.2026 10:59

      Спасибо за комментарии! Очень полезно.