Написать пост

Аутсорс или продуктовая компания: где программисту лучше работать? Отвечают эксперты

Аватар Никита Прияцелюк

У программистов порой возникает вопрос: лучше идти в продуктовую или аутсорсинговую компанию? Своими мыслями на этот счёт поделятся наши эксперты.

Обложка поста Аутсорс или продуктовая компания: где программисту лучше работать? Отвечают эксперты

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

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

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

Другой фактор — эмоциональный. Ты вкладываешь свой труд в капитализацию компании, создаёшь интеллектуальную собственность. Компания развивается, и это вызывает гордость за свой труд.

Лучше работать там, где нравится!

Если нравится динамика, частая смена задач, новые направления и предметные области почти в каждом очередном проекте, то тогда добро пожаловать в аутсорс (компанию – поставщика IT-услуг). Правда, аутсорс иногда тоже бывает достаточно рутинным, если речь идёт, например, о сопровождении информационных систем.

Если нравится расти «вглубь», совершенствовать свои навыки в узком диапазоне технологий, то продуктовая компания – ваш выбор. Здесь всё более стабильно и предсказуемо, но со временем может надоесть.

Резюмируя, оговорюсь, что всё сказанное выше относится к некоторому усреднённому типу компаний (как продуктовых, так и аутсорсинговых). Конечно, бывают исключения: в иных продуктовых компаниях (особенно небольших стартапах) жизнь кипит так, что аутсорсинговая покажется тихой заводью!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

За такую работу могут платить меньше, чем в аутсорсинге, но зато для творческого роста и развития сотрудников создаются все условия. Все знают, как заботятся о своих разработчиках в Google, какой офис у Yandex, соцпакеты, удалённая работа и так далее. Всё это подкупает как бонус к зарплате, а также действительно работает на стимуляцию развития сотрудника. «Ни о чём, кроме нашего продукта, тебе думать не надо» — такой подход действительно позволяет брать креативные вершины при работе над кодом.

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

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

Подводные камни аутсорсинга

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

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

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

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

Работа внутри компании 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Продуктовым компаниям присуще степенное развитие, консерватизм при использовании технологий и меньшая скорость изменений. Здесь программист сможет неспешно решать свои задачи. Периодически это будет R&D-работа для проверки каких-либо гипотез. С одной стороны, есть возможность глубже разобраться в какой-либо области, а с другой — есть шанс зависнуть на однотипных задачах на годы, так как у каждого вышедшего на рынок продукта должна быть поддержка.

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

Как только появляется общее видение карьерного трека и понимание, что интересно в конкретный момент времени, стоит посмотреть в сторону «хайповых» историй. Например, big data, ML/RL, все что связано с защитой и хранением персональных данных, платформы лицензионного контента, рынок мобильной разработки. Крайне интересны компании, которые работают на стыке hardware&soft. В России много разработчиков софта, но при этом мало компаний, которые работают с «железом». Опыт работы с «хардварной» частью – редкая возможность, которой не стоит пренебрегать.

Ещё один критерий выбора продуктовых компаний – технологический стек. Например, в нашей компании, которая работает на стыке hardware&soft, нет древнего легаси, которое нередко можно встретить у разработчиков, давно существующих на рынке. С точки зрения личного вклада программист на стороне вендора ПО видит отдачу: как развивается продукт, какие компании используют твой код, как он встраивается в бизнес-процессы. Ещё один плюс таких компаний – наличие в штате всех жизненно важных ролей для разработки качественного кода: продакт-менеджеры, DevOps-инженеры, аналитики, тестировщики, IT-поддержка.  Есть ли минусы работы в продуктовой компании? Если программист сразу выбирает интересное направление, продукт и компанию с выстроенными процессами в разработке, то успешный карьерный трек обеспечен.

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

Итак, аутсорс или продуктовая компания?

Зависит от того, чего вы ожидаете и хотите от своей работы.

Вам стоит присмотреться к аутсорсу, если:

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

Продуктовая компания — возможно, ваш вариант, если:

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

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

Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.

Следите за новыми постами
Следите за новыми постами по любимым темам
12К открытий12К показов