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

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

В этом кейсе я подробно разобрал один из таких случаев.

Андрей Рик — ИТ-волшебник | senior fullstack | программирую с 9 лет <i>(с 2006 г.)</i>
Андрей Рик — ИТ-волшебник | senior fullstack | программирую с 9 лет (с 2006 г.)

Что хотели собственники-инвесторы:

Создать Telegram-бота, через которого пользователи смогут использовать разные нейросети такие как ChatGPT, Midjorney, Nano Banana, и множество других, для работы с текстом, изображениями, звуком и видео. Получать оплату от пользователей через ЮКассу и Telegram-звёзды. Создать Telegram Web Application: мини приложение, которое будет открываться в боте, и значительная часть функционала нейросетей будет управляться и настраиваться через него.

Точка А:

Когда я присоединился к проекту, он уже был готов примерно на 35%.

Но что это была за готовность?

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

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

Объявленые сроки неоднократно сорваны, огромное количество багов, толком ничего не работает, в проекте полный хаос, нет понимания что осталось сделать и сколько всего багов.

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

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

Точка Б:

Результат после сотрудничества со мной: успешно реализован MVP, продукт вышел на рынок, получает платежи от пользователей.

Команда работает над добавлением нового функционала в кодовую базу проекта, которая имеет чёткую структуру, описанную человеко-понятным языком в регламентах-инструкциях.

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

Как я это сделал:

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

Конечно лично мне выгоднее было бы тоже переписать проект с нуля. Однако я ставил вопрос по другому: является ли этот вариант оптимальным, для того чтобы качественно завершить MVP и быстрее прийти к релизу?

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

Это будет быстрее и эффективнее, так как уже проделан немалый объём работы. И этот труд в большинстве случаев докрутить будет быстрее, чем переписывать с нуля.

Андрей Рик — ИТ-волшебник | fullstack-freelancer.ru | @fullstackfreelancer

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

И вот что я сделал:

Внедрил наглядность задач и прогресса

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

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

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

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

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

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

Создал карту пользовательского пути внутри продукта

Я подключил QA-инженера (тестировщика) и делегировал ему создание карты пользовательского пути по макетам.

Карта представляет из себя mind-map из визуального отображения всех возможных маршрутов пользователя внутри бота а также в mini-app (TWA). Иерархия была следующая: “модуль”, “1 конкретный пункт меню”, “1 конкретная функция”.

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

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

Сразу видно в каком функционале есть проблемы, сколько их, и статус по этим проблемам: карточки устранённых багов не удалялись, а окрашивались в зелёные.

Очень наглядно смотреть прогресс на любом масштабе: от всей ситуации в целом, до приближения за подробностями. Мой QA ежедневно проходил по задачам отмеченным как “переданные на проверку” и обновлял карту пользовательского пути.

Андрей Рик — ИТ-волшебник | fullstack-freelancer.ru | @fullstackfreelancer
Это не картинка из интернета или ИИ – именно так <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Ft.me%2Ffullstack_freelancer%2F715&postId=3205658" rel="nofollow noreferrer noopener" target="_blank">выглядит моё рабочее место</a> прямо сейчас
Это не картинка из интернета или ИИ – именно так выглядит моё рабочее место прямо сейчас

Находя баги тестировщик заводил их не только в mind-map, но и в таск-трекер, за счёт этого команда сразу узнавала о найденных проблемах, и разработчики могли брать их в работу.

Благодаря тому, что я не тратил время на QA-тестирование и построение карты, а делегировал это, я приступил к изучению внутрянки кода – как всё устроено, и какие есть проблемы.

Я обнаружил, что предыдущие разработчики генерировали код при помощи ИИ, не сильно вникая в то, как это всё работает:

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

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

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

И иной раз функционал между версиями одного и того же компонента отличался, оно и не удивительно – несогласованность данных, нарушение фундаментальнго принципа DRY - don’t repeat yourself.

Рассказать Вам

Почему дубликаты кода – это проблема?

Объясню на простом примере: скажем есть у вас в мобильном приложении кнопка.

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

Обычная такая кнопка, на ей иногда “ОК” написано, иногда “Далее”, или ещё что-то. Кнопка по UX/UI дизайну и макетам проекта используется в десятках если не сотнях страниц.

Теперь представьте, что нам нужно поменять цвет этой кнопки:

Когда код дублируется – придётся вносить изменения отдельно в каждый случай, где кнопка используется в проекте. Легко упустить несколько таких кнопок, и тогда изменение применится не на всех страницах. Кроме того код сильно засоряется, так как везде где должна быть кнопка, находится весь код логики кнопки.

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

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

Далее продолжаю историю "Как я привёл продукт к точке Б"

Провёл критически необходимый рефакторинг

Для того чтобы в принципе продолжать развитие функционала проекта, необходимо было привести его код в порядок. По крайней мере самые часто используемые “узкие горлышки” в проекте.

Зачем вообще тратить на это время, спросите Вы?

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

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

В процессе я выписывал какие были проблемы, как было, и как стало после рефакторинга.

Я делал это не только для понимания объёма выполненной работы и её деталей. Более важной была цель передать знания программисту который делал эту реализацию. Показать на примере где ошибки, почему это плохо, и как можно по другому. Чтобы он не просто получил критику и переделку, а понял, обучился.

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

Написал регламенты

Ознакомил с ними команду и контролировал исполнение

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

Как работать с GIT, как пишем код, как не пишем код, как сдаём изменения, как работать в таск-трекере.

Инициатива написать регламенты шла от меня, была согласована с фаундерами, и я объявил команде – всё, теперь мы работаем по этим правилам.

Андрей Рик — ИТ-волшебник | fullstack-freelancer.ru | @fullstackfreelancer
Благодаря регламентам, программистам легко понять формат и принципы работы, и их легко проверить. 
Все основные моменты и процедуры стандартизированы, и описаны. Даже подсвечены частые ошибки, “так не надо”
Благодаря регламентам, программистам легко понять формат и принципы работы, и их легко проверить. Все основные моменты и процедуры стандартизированы, и описаны. Даже подсвечены частые ошибки, “так не надо”

Внедрил ежедневную отчётность по багам

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

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

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

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

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

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

Даже меня самого мотивирует то что я это внедрил, и я действую с желанием увидеть мощный результат в этой таблице.

Разрабатывал frontend и backend части проекта

На себя брал самые сложные и ответственные задачи, чтобы точно было всё чётко.

За время разработки я:

  • Провёл рефакторинг, навёл основной порядок в кодовой базе
  • Разбил дубликаты кода на переиспользуемые компоненты
  • Спроектировал и реализовал систему логирования всего жизненного пути каждого запроса на генерацию чего либо
  • Спроектировал архитектуру и реализовал логику ассоциации баллов внутреннего баланса с тратами себестоимости запросов к API ИИ
  • Спроектировал и реализовал пополнения и траты баланса с учётом требования чтобы купленные баллы сгорали через 3 месяца после покупки
  • Спроектировал и реализовал систему хранения данных о нейро-сетях, их моделей и поддерживаемых функций в базе данных, а также получение поддерживаемых нейросети и модели для функции, проверку что выбранная нейросеть и модель поддерживает требуемую функцию (например замену лиц), получение стоимости функции (с учётом что она могла быть как фиксированной, так и динамической)
  • Разработал приём платежей на внутренний баланс через Юкассу
  • Разработал приём платежей на внутренний баланс Telegram-звёздами
  • Интегрировал API нейросетей Midjorney, Nano Banana, Kling, Veo, ChatGPT, Gemini, DeepSeek: отправка запроса, ожидание и получение результата, возможность менять все настройки нейросети через UI
  • Реализовал промежуточный сервис для отправки в бот сообщений, и в этом сервисе сделал поддержку пользователей из МАХ, бот стал работать не только в Telegram но и в MAX
  • Реализовал промежуточный сервис в мини-апп (TWA) чтобы логика корректно работала и в Telegram и в МАХ, с учётом всех особенностей
  • Реализовал универсальную страницу отображения настроек любой нейросети без дублирования кода. Использовал её на страницах всех модулей (текст, изображения, звук, видео) вместо дублирования кода
  • Настроил тестовый сервер, чтобы не загружать изменения сразу в продакшен, а сначала обкатать на демо-стенде. После релиза это избавило от массы ошибок, которые могли попасть сразу к реальным пользователям

Подключался в проектирование UX/UI и рисовал дизайн

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

Отрисовал дизайн страницы баланса в стиле проекта, и после утверждения реализовал её.

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

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

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

Казалось бы – что такого в том, что я нарисовал эти незаурядные интерфейсы?

Сэкономлены дни time-to-market в ожидании пока дизайнеру распишут задание, дизайнер освободится от своих дел и сможет взять задачу, потом когда он её завершит – там не был доступен в моменте дизайнер в тот момент.

Да, я не только fullstack-разработчик, но ещё и дизайнер.

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

Кстати дизайн для своих сайтов, и дизайн своих кейсов тоже делаю лично я.

В итоге проект доведён до релиза и первых оплат!

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

Кто я вообще?

Я Андрей Рик, ИТ-волшебник: senior fullstack разработчик, а также AI-driven, то есть использующий ИИ для ускорения работы, с пониманием каждой строчки кода, который сгенерировал ИИ.

Максимум информации обо мне можно прочитать на моём сайте.

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

🎥 Моя видео-визитка:

Длится всего 5 минут - познакомимся получше?

За всё время работы нет ни одного отрицательного отзыва о работе со мной! Беру на себя ответственность за все этапы от «чистого листа» до релиза. Веду трезвый образ жизни, в рабочее время на связи, не пропадаю. На все свои работы даю пожизненную гарантию.
Из багов и неопределённости к прозрачному процессу разработки, релизу MVP и первых оплат: как я подключился к существующему проекту, навёл порядок, и привёл к финансовым результатам