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

8 июля
Денис Цыплаков
Аутсорсинг или продуктовые компании: где лучше работать
Денис Цыплаков, Solutions-архитектор DataArt, подробно разобрал, чем на самом деле различаются компании разного типа и какие из этих различий напрямую влияют на жизнь их сотрудников.

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

Ложная дихотомия

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

Во-вторых, дихотомия аутсорс <=> продукт чрезвычайно упрощенная. Типов компаний, на самом деле, значительно больше: есть продуктовые стартапы (их очень много, я даже примеры приводить не стану), есть зрелые продуктовые компании (JetBrains например), есть компании, для которых IT — не основной бизнес (любой крупный банк); кто-то строит для своего заказчика удаленный офис и нанимает разработчиков для него, другие специализируются на поставке дешевых работников в США по H1B-визе.

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

Собственно, даже с однозначно продуктовыми компаниями не все так просто. Например, у совершенно продуктовой компании Microsoft есть подразделение Microsoft Professional Services, которое занимается разработкой на заказ. К тому же, надо уточнять, что такое продукт. Скажем, IntelliJ IDEA или MS Office — явно продукты. Gmail — интернет-сервис, но можно для простоты и его назвать продуктом. Azure-облако — вроде бы сервис, но вместе с тем немного продукт и еще немного консалтинг.

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

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

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

Часы или нечто совершенно иное

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

Соответственно, прибыль таких компаний представляет линейную функцию от числа разработчиков, работающих в компании. Компаниям выгодно, чтобы многие разработчики хотели у них работать и не стремились уйти, но создавать сотрудникам совсем уж волшебные условия коммерчески нереально. Еще один важный фактор — в 2019 году аутсорсинговые компании довольно похожи друг на друга, все дифференциаторы, которые можно использовать при продаже часов разработки заказчику, давно известны и используются всеми игроками. Отличия, безусловно, есть: где-то к сотрудникам («ресурсам», как в таких случаях говорят в HR-отделах) относятся более механистически, где-то — более человечно. Для рядового сотрудника разница обычно видна в основном при переходе между проектами.

Прибыль продуктовых компаний, напротив, зависит от продаж продукта (помните, что продуктом в нашем случае может быть контент интернет-сайта, облако или что-то еще). Объем продаж при этом не зависит линейно от количества разработчиков, занятых в производстве. Если продукт продается хорошо, расходы на разработку и, соответственно, условия труда разработчиков могут быть очень хорошими (а могу и не быть — зависит от владельцев бизнеса). Если продукт продается плохо, как бы хорошо ни работала команда, условия труда вряд ли ее обрадуют. Еще одно важное обстоятельство — для ряда продуктовых компаний программный продукт может быть не основном товаром, а например, бесплатным дополнением к оборудованию, которое «делает прибыль».

Значит, в рамках статьи для нас важно, отгружает ли компания на выходе часы (или что-то, во что часы красиво заворачивают, например, консультационный сервис) или что-то другое. Компании первого типа я предлагаю и называть аутсорсинговыми, второго — продуктовыми. Надо заметить, что все, сказанное ниже, верно для компаний небольшого и среднего размера. Гиганты с десятками тысяч сотрудников устроены строго индивидуально, и изнутри для разработчика выглядят как сложный конгломерат из условного аутсорсинга и продуктов. Их мы оставим за скобками.

Отлично, мы закончили с уточнением терминов! Чем же все-таки компании этих типов различаются?

Середина и крайности

В двух словах, характеристики работы в аутсорсинговых компаниях более усредненные, а продуктовые компании могут завести вас на самый-самый край. Причем и передний, и наоборот. Продуктовой компанией может быть Valve с ее совершенно фантастическими условиями труда (хотя сейчас, по слухам, стало несколько хуже) или безвестный производитель программы на Visual FoxPro, позволяющую работникам 150 СМУ на территории РФ быстро делать сметы прокладки теплотрасс (командировки в экзотические уголки России, низкая з/п, работа в выходные за идею, кричащий начальник, рабочий компьютер с ЭЛТ-монитором 15”, новые навыки, не нужные никому на рынке труда). Аутсорсинговая компания может перепродать вас клиенту, получив свой процент сверху, и уволить через неделю после окончания проекта. Но может годами заботиться о вашем росте (очевидно, с корыстной целью получить от вас больше прибыли) и каждый раз искать проект, который окажется вам по душе. При этом пока вы заняты в проекте, в обеих последних компаниях все будет, примерно как у всех в вашем городе.

Давайте теперь рассмотрим конкретные отличия более детально.

Зарплата

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

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

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

Понятно, что бешеные деньги бизнес платить все же не настроен. В индустрии еще рассказывают истории о миллионах, которые кто-то получал в нулевых, но, боюсь, это время ушло. С другой стороны, и ситуации, когда повышение компенсации на 10 % означает полную потерю прибыли, тоже не наблюдается. Другое дело, что гиперуспешных продуктов не так много, а вот их менее успешных и совсем уже неуспешных собратьев — миллионы, и там арифметика работает уже в обратную сторону. Если продукт продается тяжело (причем не из-за плохого кода, а например, из-за неудачной бизнес-идеи), денег у компании все равно будет мало со всеми вытекающими последствиями.

В целом, если отступить на шаг, зарплата в индустрии регулируется тремя обстоятельствами.

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

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

Собеседование

За время работы оно происходит всего один раз, на старте, но без него работы не бывает вообще.

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

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

Спектр технологий

У каждого программиста технологии складываются в набор, с которым он предпочел бы работать. Аутсорсинговые компании продают то, что востребовано рынком. Если вы возьмете любой список топ-20 технологий в любой области IT, аутсорсеры фокусируются на 10–15 верхних строчках. Эти технологии чаще запрашивают заказчики, их проще продать в большом объеме. Если вам очень хочется писать на Crystal, Elexir или Julia, найти работу в аутсорсинговой компании вам, скорее всего, будет сложно. Впрочем, невозможным и это назвать нельзя.

Продуктовые компании сфокусированы вокруг продукта. Современный мир IT устроен так, что совершенно одинаковые для пользователей продукты можно построить с помощью большинства технологий, представленных на рынке. Вопрос только в объеме головной боли. Веб-сервер на bash? Пожалуйста! GUI-приложение для Windows на Perl? Нет проблем! Драйвер устройства на Python? Гугл знает 34,700,000 страниц на эту тему. Поэтому, когда мы говорим о продуктовых компаниях, набор технологий может быть передовым, а может ни разу не измениться за 20 лет, прошедших со старта.

Например, сайт booking.com написан на Perl. В 1996 году выбор этого языка, может, и не был самым лучшим вариантом, но выглядел вполне разумно. Booking.com — очень крутая компания с отличным бизнесом, они предлагают прекрасные возможности для профессионального роста в сфере online travel и релокацию в Амстердам.

Терраса офиса Booking.com в Амстердаме Источник фото: Glassdoor

Но в 2019 году не так много программистов мечтают писать на Perl. С другой стороны, если вы хотите программировать, например, на Dart, найти продуктовую компанию вам будет не так уж сложно, тогда как в аутсорсинге Dart-позиций практически нет.

Глубина погружения

Теперь посмотрим на ортогональное измерение — я имею в виду, насколько глубокие технические знания и навыки требуются от разработчиков. Этот аспект важен по двум причинам. Во-первых, когда вы занимаетесь любимым делом, хочется решать все более сложные задачи, мало кто хочет всю жизнь писать алгоритмы вида c = a+b. Во-вторых, когда вы по той или иной причине решите сменить компанию, нового работодателя будет интересовать, насколько вы владеете технологиями, указанными в резюме. Ответ вида «да, я использовал Java, но что такое equals и hashСode, не знаю, потому что за восемь лет с ними не сталкивался» вряд ли поможет вам получить приглашение в серьёзную команду. А вот глубокое понимание тонкостей работы и настройки веб-контроллеров Spring MVC, успешно продемонстрированное в процессе интервью, напротив, может означать прибавку к будущей зарплате. В-третьих, иногда разработчикам представляется случай сделать что-то, чего никто в мире раньше не делал. Если вам повезет, будет что рассказать внукам, да и в поиске работы в будущем это поможет.

Бизнес редко решается отдавать на аутсорс критически важные фрагменты системы. Если система состоит из 200 обработчиков, реализующих бизнес-логику, и ядра, создание последнего вряд ли доверят аутсорсерам. Я знаю несколько таких случаев, но они, скорее, исключение. Но и ниша низкоквалифицированного труда целиком занята компаниями из Азии. То, что достается Восточной Европе, требует уверенных знаний и оставляет хорошее пространство для развития. Т. ч. в аутсорсинговой компании вам едва ли придется делать совсем уже простую работу, хотя подъем к фантастическим вершинам будет делом непростым. Шанс сделать что-то абсолютно уникальное, работая в аутсорсинге, я оцениваю как пренебрежительно маленький.

С продуктовыми компания все в известном смысле проще. Если для создания качественного продукта требуется глубочайшее понимание технологии, которая действительно обещает бизнесу преимущество, все дороги для вас открыты. Если качественный продукт можно сделать при помощи паттерна «два притопа, три прихлопа», любые сколько-нибудь сложные вещи вам придется делать втайне, на свой страх и риск. Этот аспект можно регулировать в процессе поиска новой работы. Продуктовых компаний на рынке много, и если вам очень хочется заниматься Machine Learning в приложении к распознаванию лиц, найти подходящий вариант вполне реально. Только надо помнить, что, во-первых, искать такую работу вы возможно будете долго, а во-вторых, ваше желание работать именно с этой технологией может быть (неявно) вычтено из вашей зарплаты.

Условия труда

Мы проводим в офисе третью часть жизни, а если не учитывать сон, и вовсе половину. Провести ее хочется в комфорте. Как правило, условия работы во всех IT-компаниях в одном городе похожи — это регулируется теми же механизмами, что и зарплата. Хотя, безусловно, в мире IT есть офисы-иконы, такие как Google. Если верить прессе, некоторые сотрудники проводят там вообще все время (а спят в минивэне на парковке, причем подолгу). Но это скорее исключение, а в наших северных краях о таком уровне комфорта я не слышал.

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

В продуктовых компаниях в целом следуют общим трендам, хотя бывают офисы намного лучше среднего: помимо Google, это, например, Mojang.

Если вы мечтаете иметь собственный кабинет, в продуктовой компании добиться этого значительно проще. С другой стороны, кабинет одного моего знакомого находился в цеху горячего проката, и идти к нему нужно было в каске и спецовке метров 500 от входа. Иными словами, в продуктовой компании есть хороший шанс получить что-то особенное, возможно, в самом неожиданном смысле. Главное — разобраться в этих особенностях до подписания договора с новым работодателем. Замечу еще, что у всех моих знакомых, работающих в продуктовых компаниях, офисы выглядят как-то не очень по сравнению с моим. Разве что у одного друга есть уникальная фишка — из офиса есть выход на крышу, где можно установить артиллерийскую буссоль. Это помогает при разработке встроенного софта для систем навигации.

Культура

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

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

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

Менеджмент

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

В аутсорсинге в проектах сейчас массово используют Agile-методологию. Она объединяет разные подходы, поэтому детали могут сильно различаться в зависимости от компании и даже конкретного проекта, но основные компоненты: тикеты, спринты, стендапы, как правило, похожи. Менеджмент в рамках оргструктуры разработчикам в большинстве случаев вообще не виден, поскольку проектная жизнь довольно плотно изолирует команду. Обычно «начальника» выше проектного менеджера у разработчиков вообще нет, да и менеджер проекта не столько начальник («Мой босс!»), сколько изрядно забегавшийся человек с непростыми, но довольно понятными функциями. Попытки менеджера руководить проектной командой в стиле «я начальник — ты дурак» в аутсорсинге нередко заканчиваются поиском новой работы.

В больших продуктовых компаниях командами разработчиков обычно управляют примерно так же. Просто потому что Agile доказал свою эффективность. Хотя те, кто к изменениям невосприимчив, до сих пор сохраняют деление на отделы, сектора и департаменты. Это дает четкую картину движения по карьерной лестнице — от джуниора можно дослужиться до начальника отдела. С другой, мне кажется, в 2019 году это уже не самый популярная трактовка понятия карьеры в IT.

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