Время чтения:
10 мин.Время чтения:
10 мин.IT-аутсорсинг – это тип разработки, когда заказчик нанимает исполнителя для создания продукта или оказания услуг по поддержке, обслуживанию и модернизации ПО компании. Весь процесс, от планирования до тестирования, в таком случае ложится на подрядчика.
Разработка веб-сервисов и мобильных приложений на аутсорсинге – это процесс, при котором компания нанимает стороннюю команду разработчиков для создания программного продукта. Это один из самых распространенных вариантов IT-аутсорсинга.
Заказывая дизайн-аутсорсинг, вы получаете команду специалистов, состоящую из менеджера проекта, аналитика и ui/ux-дизайнеров. Дизайнеры на аутсорсе обычно обладают большой насмотренностью и привыкли к разноплановым задачам. Работа идет по тех. заданиям, в которых совместно с заказчиком формируются задачи, рассчитывается стоимость и сроки выполнения.
Дизайн на аутсорсинг можно отдать как для разработки с «нуля», так и для доработки или обновления уже имеющихся продуктов.
Аутсорсинг фронтенд-разработки может включать в себя разработку веб- или мобильного интерфейса с использованием HTML, CSS, JavaScript и других технологий (выбор конкретного стека определяется задачами и техническими требованиями к проекту) .
Аутсорсинг фронтенд-разработки нужен в тех случаях, когда, например, у вас есть сайт и вас устраивает его техническая часть (бэкенд), а внешнюю часть – графический интерфейс, кнопки, навигационное меню, тексты, изображения – нужно заменить. Или если компания нуждается в быстрой разработке фронтенда, а требуемых разработчиков в штате не хватает.
Бэкенд-аутсорсинг – поручение разработки бэкенда (серверной части веб-приложения или сайта) сторонней компании. Также сюда относится разработка баз данных, логики бизнес-приложений, серверных API, обеспечение безопасности.
Поддержка проекта обычно включает в себя такие задачи, как:
Развитие проекта включает в себя задачи по:
Главным плюсом выбора аутсорсинга для поддержки и развития проекта является возможность сосредоточиться на основной деятельности. Особенно это касается компаний, чей корневой бизнес не связан с IT, а содержание большого штата разработчиков не входит в число стратегических приоритетов.
DevOps – это методология и деятельность по автоматизации технологических процессов сборки, настройки и развёртывания ПО. Главный исполнитель здесь – DevOps-инженер, который должен понимать как программистов, так и тестировщиков, сисадминов, дизайнеров и менеджеров, а также уметь объединить их усилия и оптимизировать рабочие процессы. Процессы DevOps часто отдают на аутсорс потому, что для компаний, не специализирующихся на разработке IT-продуктов, очень затруднительно содержать штат DevOps-инженеров и поддерживать их компетенции в актуальном состоянии.
Аутсорс специалисты постоянно обучаются и часто уже имеют релевантный вашему проекту опыт, благодаря чему могут быстро советовать проверенные рабочие решения. Это позволяет эффективнее решать задачи на проекте и сократить time-to-market.
КачествоЗа результат аутсорсингового проекта несет ответственность внешняя команда и сама аутсорс-компания. Чтобы избежать выплат неустоек, штрафов, не испортить репутацию и получить довольного клиента – за качеством выполненных работ внимательно следят.
СрокиАутсорс-команды собираются из специалистов, которые ранее неоднократно работали вместе. Они быстро включаются в проект и чаще укладываются в сроки. Процессы разработки у компаний, специализирующихся на аутсорсинге, тоже часто отлажены лучше, чем у внутренних команд.
Концентрация заказчика на профильных бизнес-процессахДелегирование разработки на аутсорс позволяет компании сконцентрироваться на бизнесе и не отвлекаться на разработку.
Минусы в данном случае – это скорее не явные недостатки, а риски, которых можно избежать. Подробно о самих рисках и о том, как их минимизировать, мы написали в этой статье. Здесь же подчеркнем основные моменты.
Потеря конфиденциальной информацииПри передаче определенных функций другой компании возникает риск потери конфиденциальных данных и нарушения безопасности информации. Управление риском — через проверку контрагента и корректное оформление договорных отношений.
Риск выбрать некомпетентного подрядчикаОчень многое зависит от выбора компании-подрядчика. Если вы впервые работаете с компанией и располагаете временем, лучше сначала передать на аутсорс небольшой проект, и оценить работу на нём. Также хорошо будет убедиться в репутации компании аутсорсера и качестве предоставляемых услуг (например, через отзывы от текущих клиентов).
Зависимость от подрядчикаКомпания может стать зависимой от подрядчика в части обладания полным объемом знаний о проекте. Риск нивелируется путем правильного построения рабочего процесса с подрядчиком, требованиями к документированию проекта и элементарным контролем.
В зависимости от ситуации и выбора компании-подрядчика, стоимость итогового продукта при аутсорсинге может обойтись как дешевле, так и дороже других вариантов разработки (аутстаффинг, работа со штатной командой). Однако в случае с аутсорсингом вам будет юридически гарантировано получение результата. Либо вы примете оговоренный в договоре продукт или услугу, либо компания выплатит деньги в случае несоответствия продукта оговоренным требованиям – у вас в руках остаются хорошие рычаги давления (мы не призываем давить на подрядчиков ;), но выступаем за то, что каждый должен получить заявленный результат) .
Знание предметной областиЛучше вас ваш продукт действительно не знает никто. В случае с аутсорсингом вам может повезти, тогда вы получите команду, которая работала с вашей сферой, “прониклась” ей или обладает даже более высокой экспертизой, чем вы. Или вы можете нанять разработчиков, которые не специализируются на какой-то узкой сфере – зато они смогут привнести в ваш проект свежие идеи из смежных ниш.
Итоговая цена зависит не только от сложности проекта и компетенции подрядчика, но и от модели оплаты и почасовых ставок.
В этом случае от заказчика требуется только техническое задание – всем остальным занимается подрядчик. Одно из главных достоинств такого варианта – предсказуемая стоимость и определенные сроки. Основной недостаток – это потеря гибкости, так как все изменения и отступления от ТЗ придется оплачивать дополнительно. Обычно такой формат аутсорсинга используют для мелких проектов со строго ограниченным функционалом, в который до момента релиза точно не будут вноситься изменения и дополнения.
При таком варианте сотрудничества вы оплачиваете время команды разработчиков, которое они потратили на реализацию проекта (формат оплаты называется “Time&Material”). Весь проект в процессе работы разбивается на задачи, каждую из которых команда отдельно оценивает и выполняет. Например, группа оценила 1 задачу в 40 человеко-часов, вы умножаете 40 на часовой рейт подрядчика, получаете стоимость, и если согласны – команда приступает к выполнению задачи. После выполнения каждой такой задачи вам предоставляется видимый результат.
Задачи могут группироваться в спринты. Большой плюс такого формата в том, что заказчик может вносить любые изменения непосредственно в ходе работ. Такой вариант актуален для больших проектов, прописать полное ТЗ на которые сложно или нецелесообразно.
Документы, которые нужно подписать с аутсорсинговой компанией:
В разных случаях (и если позволяет конкретный формат работы по аутсорсингу) документов может быть больше или меньше, например могут отсутствовать какие-то приложения, включая ТЗ.
Есть определенный “гигиенический минимум”, наличие которого отличает хорошего аутсорсера от плохого. Это касается соблюдения режима конфиденциальности, работы в корректной инфраструктуре, регулярности релизов, формата встреч с заказчиком и обязательного ведения документации на проекте.
Чтобы гарантировать безопасность и защиту ваших персональных данных, нужно подписать соглашение о неразглашении (NDA). В нем прописывается перечень сведений, относящихся к конфиденциальной информации. Это могут быть сведения о планах, текущих разработках компании, данные доступов к сервисам, сведения о применяемых методах управления и многое другое.
Исполнителю будет крайне не выгодно разглашать конфиденциальные сведения, так как он рискует потерять не только репутацию, но и деньги.
В зависимости от потребностей, требований к инфраструктуре может быть больше или меньше.
Например, для того чтобы защитить информацию, вы можете потребовать от внешней команды использование шифрования, средств защиты от взломов, мониторинга сети, систем авторизации и аутентификации, систем управления доступом и так далее.
Также стоит обратить внимание на то, как разработчики разделяют среду разработки. Соблюдается ли у них правильный порядок, например: dev-stage-prod. На dev-1, dev-2 и так далее — работают разработчики, это их личные площадки; stage — обычно используется для тестирования тестировщиком и/или клиентом. Бывает, что stage расширяют на test (для подрядчика) и preprod/uat — где бизнес финально тестирует фичу. Prod – боевой сервер, где проект работает для реальных пользователей.
Иногда, и только на очень маленьких проектах, допустимо вести разработку в одном dev-приложении. В этом случае тестовое приложение разворачивается не всегда и разработка ведется в режиме dev-prod.
На проекте обязательно должна быть система отслеживания версий программного кода и управления ими. Самой популярной на сегодняшний день является Git.
Если работа заказчика зависит от непрерывного функционирования систем, то он может требовать от аутсорсинговой фирмы использование инфраструктуры, которая обеспечивает надежную и доступную работу систем, включая резервное копирование, мониторинг и быстрое восстановление после сбоев. В тех же целях часто прописывается SLA (Service Level Agreement) – это дополнительное соглашение между подрядчиком и клиентов, которое позволяет четко определить для подрядчика согласованный уровень качества предоставляемых услуг по поддержке. SLA обычно включает в себя описание ожидаемого уровня доступности, связи, времени реакции на запросы и время и регламенты восстановления после сбоев.
Постоянные релизы позволяют обеспечивать стабильную скорость разработки и соблюдение поставленных сроков. Важны они и для конечного пользователя, ведь с каждой новой версией продукт становится лучше (устраняются баги и добавляются фичи).
Это важно как для подрядчика, так и для заказчика. Регулярные встречи и отчетность позволят заказчику понимать, какие работы и за какой период были выполнены, каких результатов получилось достичь, какие есть блокеры в работе и как их вовремя устранить. Предоставление отчетов и регулярная коммуникация также помогают контролировать сроки выполнения работ.
Для подрядчика же постоянная коммуникация дает возможность правильно понять потребности заказчика и предоставлять именно тот продукт, который нужен.
Документирование кода необходимо для обеспечения взаимодействия на проекте и сохранения информации о том, как работает ПО. Ведение документации облегчает работу как разработчиков, так и других специалистов, которые работают с кодом, также оно значительно упрощает поддержку и дальнейшее развитие продукта.
Требовать документирование с аутсорсинговой команды нужно ещё и на случай смены подрядчика или члена команды. Качественные описания позволяют новым разработчикам подключаться к проекту в разы быстрее.
Выбор между аутстаффингом и аутсорсингом зависит от ряда факторов, таких как размер компании-заказчика, доступность на рынке труда квалифицированных специалистов, бюджет и временнЫе ограничения. Их часто путают, поэтому запоминаем: аутсорсинг– это форма выполнения задач, аутстаффинг – форма расширения команды.
Если компания большая, имеет внутреннюю команду разработки (или как минимум проджект менеджера), а ведение проекта принципиально контролировать изнутри, то аутстаффинг будет более предпочтительным вариантом.
Однако, если компания небольшая или не имеет достаточного количества квалифицированных специалистов в области разработки, то аутсорсинг – более подходящий вариант. В этом случае заказчик передает выполнение проекта аутсорс-компании, которая будет нести ответственность за его качество. Также, аутсорсинг может по итогу обойтись дешевле аутстаффинга, так как компания не будет тратить дополнительные ресурсы на обучение и поддержку штатных сотрудников.
В любом случае, при выборе между аутстаффингом и аутсорсингом для разработки, важно тщательно изучить компанию-подрядчика, оценить квалификацию и опыт. Также нужно четкие требования к проекту и контролировать его выполнение, вне зависимости от выбранного подхода.
Выбирать или нет IT-аутсорсинг решать вам. Мы же собрали случаи, в которых он может помочь.
Итак, аутсорсингом разработки могут пользоваться: