Как быстро начать карьеру в сфере ИТ студентам и новичкам? Как ИТ-специалистам смежных профилей быстро поменять специальность на востребованную?
06 февраля 2024

Аутсорсинг разработки ПО vs создание программного обеспечения собственными силами

На какие факторы обратить внимание при выборе между аутсорсингом разработки и созданием ПО силами собственной команды? В чём плюсы и минусы каждого подхода? Кому аутсорсинг подойдет, а кто может справиться собственными усилиями? На что обратить внимание при выборе конкретного аутсорсера?

Андрей Потапов
Начальник отдела разработки ПО
  • 17+ лет опыта в разработке.
  • Повышение квалификации:
    Тренинг "Технологии и инструменты эффективной самопрезентации", Logrocon;
    Курс "Управление эффективностью функциональных команд", Logrocon.
  • Все проекты выполнены в плановые сроки, а результаты приняты Заказчиками.
  • Получена положительная обратная связь по проектам.
  • В 2012 г. защитил диссертацию на соискание степени кандидат физико-математических наук.
  • Инструментарий:
    .Net Framework/.Net Core (C#, ASP MVC Web API, LINQ, WPF, MS Reporting, WCF, Entity Framework, .NET Core), SQL / T-SQL, MS TFS, MS Project, Git, SVN, MS Visual Studio, VisualCode, PostgreSQL + (PostGIS, TimescaleDB, PipelineDB), MS SQl Server, Clickhouse, ElasticSearch, RabbitMQ, IBM WebSphere MQ, CI/CD в MS TFS, Docker, Kubernetes.

Microsoft® Certified

  • Solutions Associate: Web Applications
  • Solutions Developer: App Builder
  • Professional: Microsoft Certified Professional
  • Technology Specialist: .NET Framework 4, Windows
  • Technology Specialist: .NET Framework 4, Data Access
  • Professional Developer: Windows Developer 4
  • И др.
    На какие факторы обратить внимание при выборе между аутсорсингом разработки и созданием ПО силами собственной команды

    Факторов много. В основном они находятся внутри компании, но есть и внешние.

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

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

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

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

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

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

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

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


    В чём плюсы и минусы каждого подхода: собственной разработки и аутсорса

    Плюсы и минусы зависят от того, чего мы хотим добиться. Например, если речь идет о продуктовой команде, то надо понимать, на каком этапе развития она находится. Если продукт уже выведен на рынок и находится в стадии сопровождения, то периодически будут возникать задачи из разряда перехода на новую архитектуру. Что касается управления этими архитектурными требованиями, которые требуют значительных трудозатрат, то здесь будет возникать пик работ. Нужно будет делать что-то новое и не забывать сопровождать старое. Тут, скорее всего, сил у продуктовой команды не хватит: она будет перегружена. В этот момент есть опция: привлечь с рынка кого-то, то есть рабочие руки. Для того чтобы работа была эффективной, нужны чёткие, понятные и проверяемые задачи. Это связано с тем, что многие аутсорсеры делают так, как в таске написано: работу сделали — деньги получили. Такой подход встречается достаточно часто: что написано, то и сделали. А вот с точки зрения здравого смысла правильно или нет — они не сделают, потому что так не написано. И они правы будут, потому что спрашивают за то, что в задаче есть. И тут возникает требование к высокому качеству задач.

    Аутсорсер может помочь заказчику такие задачи сформулировать, и это зависит от предметной области. Если мы рассмотрим бизнес понятный и распространённый, то да: аутсорсер может прийти на помощь и применить свои компетенции. Если речь о бизнесе очень специфичном, со своими особенностями, то аутсорсер придёт и будет погружаться в предметную область и наращивать компетенции за счёт заказчика. Устроит это заказчика или нет, что прокачивает в предметной области потенциального конкурента или просто, что он ему работу сделал? При этом работа в это время не делается. Сложный вопрос. Заказчики хотят работу понятную и простую, когда привлекают аутсорс. Например, ситуация: зовёшь плиточника и говоришь, что необходимо плитку положить, а он начинает вопросы задавать, как укладывать и что ему хорошо бы еще на курсы сходить и т. п. Вот в этом и вопрос.

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

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


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

    Однозначно сказать тяжело. Сразу вопрос возникает, каким видом деятельности заказчик занимается. Если есть внутренняя разработка, и она рассматривает усиление внешними специалистами в момент пиковой загрузки — это нормальный сценарий. На постоянной основе использовать аутсорс — скорее всего, это не будет работать, особенно в продуктовых компаниях. Аутсорсеры быстро и из ниоткуда не появляются. Также аутсорсер может понять, что он сопровождает большую часть бизнеса и может ощутимо повысить стоимость своих услуг. Только своей разработкой обходиться? Почему бы и нет. Однако тут тоже проблема с равномерностью загрузки возникает. Золотая середина: привлекать аутсорсеров для компенсации пиков загрузки, это здравая модель. Опять же, всё зависит от специфики задач: если они нечёткие и непонятные, то вряд ли из этого выйдет продуктивное сотрудничество.

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

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

    Если заказчику не хватает компетенции, то можно перенять опыт и экспертизу аутсорсера. Тут уже речь идет не о привлечении разработчиков, а высококвалифицированных специалистов, у которых можно научиться. Но опять же нужно понимать: «высоту» барьера в коммуникациях придётся уменьшать. Обычно требуется длительный период сотрудничества, чтобы эффективно выстроить взаимодействие и должный уровень доверия.


    На что обратить внимание при выборе конкретного аутсорсера

    По рекламной вывеске это трудно сделать. С одной стороны, это договорные отношения: либо сделал, либо не сделал. Если не сделал, то это проблема того, кто привел этого специалиста конкретного. Если не сделал, то в договоре могут быть штрафные санкции. Кто репутацией дорожит, тот балансирует между качеством специалистов, имиджевыми и финансовыми рисками. При выборе исполнителя лучше всего работает «сарафанное радио». Если нет знакомых, кто может порекомендовать аутсорсера, то выходим на рынок и начинаем спрашивать. Еще можно посмотреть на HH.ru и т. п. резюме специалистов, кто работал ранее в конкретной аутсорсинговой компании. Пригласить на собеседование и выяснить причины увольнения. В этот момент можно многое услышать о конкретном аутсорсере.
    Смотрите также