Как передать успешный MVP на разработку инхаус-команде

Как передать успешный MVP на разработку инхаус-команде

Разработку MVP часто отдают аутсорс-командам. Внешний подрядчик имеет больше ресурсов, чтобы быстро собрать работающий прототип приложения или сайта. А заказчик в это время может изучать рынок, продвигать будущий продукт и собирать собственную команду для его разработки. На этом этапе важна скорость запуска и тестирования гипотез, поэтому MVP создается максимально оперативно и дешево, без лишних трудозатрат на документацию, идеальную архитектуру, код и другие детали, ведь далеко не все идеи «выстреливают».

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

Что входит в процесс передачи проекта

Технически процесс передачи MVP инхаус-команде не занимает много времени. Команда подрядчика передает заказчику доступ к используемым сервисам и репозиторий с библиотеками и кодом программ. При передаче проектов также принято отдавать заказчику документацию по проекту: техническое задание, описание настроек и инфраструктуры, логики работы системы, инструкции по работе с внешними сервисами, библиотеками и API. Но, поскольку при разработке MVP ключевым фактором является скорость, объем документации на таком проекте может быть существенно меньше. Чаще всего остаются лишь ключевые артефакты — список техдолга и описание основных частей проекта, которые будут активно дорабатываться (это могут быть как отдельные документы, так и подробные комментарии в коде). 

Если заказчик забирает проект полностью во внутренний контур, то он своими силами разворачивает новую инфраструктуру проекта на собственных серверах или в ЦОДе и предоставляет доступ к ней подрядчику для донастройки проекта в процессе его передачи. 

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

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

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

Как организовать передачу проекта от подрядчика заказчику

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

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

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

Найти новый проект аутсорс-команде можно в течение 1-2 месяцев, а вот на поиски и найм тимлида инхаус нужно запланировать не менее 3 месяцев, а вместе с погружением в проект — еще столько же. Итого, сообщить о передаче проекта можно за полгода. Это времени хватит и на поиски людей, и на проработку остальных организационных задач.

2. Собрать команду, нанять сотрудников как минимум, с ключевыми компетенциями, которые будут забирать продукт инхаус

Состав собственной команды будет зависеть от специфики создаваемого продукта и используемых технологий. Так, для каждого направления (фронтенд, бэкенд) потребуются не только рядовые разработчики, но и специалисты уровня Senior — они будут принимать ключевые решения о том, как будет строиться архитектура приложения. 

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

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

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

Важный момент: руководить командой совершенно точно должен штатный PM или тимлид, так что этого специалиста нужно найти в первую очередь.

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

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

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

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

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

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

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

Он более известен как Infrastructure as a Code (IaC). В тех случаях, когда требуется больше ресурсов — высокая скорость разработки, более высокие требования к устойчивости и работоспособности — IaC  позволяет быстрее масштабировать ресурсы и сокращает риск ошибок, которые возникают при ручной настройке среды разработки. В дальнейшем команде разработки будет проще вносить изменения в работающее приложение, не отключая его — сервис останется доступным пользователям 24/7.

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

5. Запланировать развитие проекта, внедрить DevOps-практики 

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

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

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

6. Выстроить процесс параллельной работы над проектом инхаус и аутсорс команд 

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

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

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

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

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