
Полная версия
Разработчик ПО: Путеводитель по карьерной лестнице для будущих сеньоров, техлидов и стаффов
До сих пор мы рассматривали лишь компании, создающие определенные товары или услуги и для этого нанимающие программистов. Однако существует также и значительный спрос на «аренду» экспертных знаний в области программного обеспечения через специальное агентство или поставщика услуг аутсорсинга.
Аутсорсинговые компании предоставляют необходимое число программистов клиенту, который затем уже самостоятельно решает, в каких областях они будут работать. Консалтинговые компании заключают контракты с клиентами на выполнение сложных проектов под ключ, предоставляя программистов, которые будут выполнять конкретную, заранее определенную работу. Кроме того, они обычно несут ответственность за разработку всего проекта в целом.
К примерам консалтинговых и аутсорсинговых компаний можно отнести Accenture, Capgemini, EPAM, Infosys, Thoughtworks и Wipro.
Студии разработки представляют собой малые или средние организации, которые занимаются менее крупными консалтинговыми проектами, такими как, например, создание веб-сайтов, приложений и других подобных проектов по заказу клиентов. Они также могут заниматься обслуживанием клиентских сервисов. Программисты-консультанты получают подневную или почасовую оплату как штатные сотрудники агентства.
Для программистов, желающих работать в консалтинговых, аутсорсинговых компаниях и студиях разработки, преимуществом станет относительная легкость трудоустройства, что особенно ценно для специалистов с небольшим опытом работы. Подобные компании зачастую испытывают высокую потребность в кадрах, но предлагают меньшую оплату труда по сравнению со своими компаниями-клиентами.
Среди прочих преимуществ стоит отметить доступность обучения для менее опытных сотрудников, а также возможность работать над разнообразными проектами, тем самым получая представление о вариантах деятельности на различных рабочих местах.
Однако работа в консалтинговых компаниях имеет и ряд недостатков. Ниже представлены наиболее распространенные.
• С точки зрения карьерного роста подобные компании обычно не предоставляют возможности для продвижения выше уровня стафф-разработчика, что лишь на одну ступень выше сеньора.
• Объем работы устанавливается клиентом. К услугам консалтинговых компаний обычно прибегают для выполнения тех проектов, которые компания-клиент считает находящимися вне своей основной компетенции.
• Недостаточное внимание уделяется лучшим практикам разработки программного обеспечения. Клиенты платят за получение краткосрочного результата, а не за работу над долгосрочными задачами, такими как, например, сокращение технического долга.
• Возможные трудности адаптации при переходе в компании, ориентированные на продукт. При работе в подобных компаниях – техногигантах, стартапах и скейлапах – особенно ценится инициативность и способность писать простой в сопровождении код. Поэтому деятельность в консалтинге в течение длительного времени может осложнить адаптацию к новой рабочей среде.
Научно-исследовательские институты и центрыПодобные учреждения являются филиалами университетов или же тесно с ними сотрудничают в процессе осуществления долгосрочных исследовательских проектов. Научные институты могут заниматься как прикладными исследованиями, так и фундаментальными.
К преимуществам работы в исследовательских институтах или центрах можно отнести возможность применить ваши навыки в малоизученных областях, а также стабильность работы без какого-либо коммерческого давления.
Какой тип компании лучше всего соотносится с вашими карьерными целями?Из всего вышесказанного можно сделать вывод, что существует множество различных типов компаний и организаций, которые предстоит рассмотреть программисту при выборе места работы. Так как же понять, что подходит именно вам?
Вероятность того, что на момент поиска работы у вас будет возможность попасть во все десять перечисленных типов компаний, крайне мала. Поэтому будьте реалистичны и сузьте критерии поиска, исходя из ваших обстоятельств. Также будет полезно посоветоваться с друзьями, членами семьи или с кем-то еще из вашего круга общения, кто уже работает в сфере разработки ПО. Узнайте, нравится ли им их место работы, расспросите о нюансах.
Учтите, что между компаниями, относящимися к одному типу, также могут существовать значительные различия, и даже внутри одной организации условия в разных группах могут отличаться. Поэтому работа в техническом отделе компании традиционного типа, но при этом в прекрасной команде может приносить гораздо больше удовольствия, чем работа в проблемной команде, но в крупной технологической компании.
1.2. Типовые карьерные пути в сфере разработки ПО
Внутри одной компании программисту предлагается два простых варианта развития карьеры: линейный путь или с развилкой (и двумя путями).
Линейный карьерный путьПодобный карьерный путь для индивидуального контрибьютора (individual contributor, IC) и менеджера обычно выглядит следующим образом:

Типичный линейный карьерный путь. С каждым уровнем растут как ожидания, так и оплата труда
Для программистов, работающих в небольших или нетехнологических компаниях уровень 3 (стафф/принципал-разработчик) фактически является потолком карьерного роста. Дальнейшее продвижение возможно только после перехода на ветвь менеджмента.
Недостатком такого карьерного пути является то, что многие программисты, не желая заниматься менеджментом, увольняются и устраиваются на работу в другие компании. В результате работодатель может потерять своих лучших разработчиков – они либо становятся менеджерами, либо вовсе покидают компанию, не желая заниматься управлением.
Карьера с двумя путямиПрогрессивные компании, в которых работают более 30–50 специалистов, все чаще предлагают своим программистам два варианта карьерного роста, чтобы тем не приходилось в итоге выбирать между сохранением своей должности с заработной платой линейного менеджера и переходом на позицию менеджера. Такой подход обычно выглядит следующим образом:

Типичная карьера с двумя путями. Как всегда – больше обязанностей, больше и оплата труда[2][3][4]
В компаниях, предлагающих карьерный рост с двумя путями, существует несколько возможностей продвижения:
1. Индивидуальный контрибьютор (IC). Продвижение от разработчика начального уровня до сеньора и выше.
2. Менеджер. Переход сеньор- или стафф-разработчиков на позицию менеджера с дальнейшим продвижением по управленческой ветви. При определенной доле везения можно достичь позиции директора и выше.
3. Переход с позиции IC в менеджеры. Возвращение к роли программиста после работы менеджером и, возможно, обратный переход в будущем. И такая ситуация далеко не редкость.
Каждый карьерный путь уникаленВ реальности же специалисты в сфере технологий довольно часто меняют место работы. Большинство знакомых мне программистов переходят на другую работу каждые несколько лет, меняя траекторию своего профессионального развития. Это создает разнообразие возможностей, в чем можно убедиться, посмотрев профили опытных программистов на LinkedIn. Вот несколько примеров.
Карьерный путь Тани Рейли (Tanya Reilly), автора замечательной книги «The Staff Engineer’s Path»[5], на протяжении всех двадцати лет остается довольно линейным, развиваясь в рамках деятельности разработчика:
• системный администратор (Fujitsu, Eircom)
• разработчик (Google)
• сеньор-разработчик (Google)
• системный стафф-разработчик (Google)
• принципал-разработчик (Squarespace)
• сеньор принципал-разработчик (Squarespace).
Двадцатилетняя карьера Никки Райтсон (Nicky Wrightson), на момент публикации книги занимающей должность руководителя отдела разработки, развивалась в чисто инженерном русле. Однако в конце концов Никки перешла в менеджмент:
• разработчик ПО (консалтинговая компания)
• специалист-консультант и разработчик (телекоммуникационные компании)
• разработчик (BNP Paribas, JP Morgan, Morgan Stanley)
• шестимесячный саббатикал[6]
• принципал-разработчик (Financial Times, River Island, Skyscanner)
• технический директор (венчурная студия Blenheim Chalcot)
• руководитель разработки (topi).
Карьерный путь Марка Цимельзона (Mark Tsimelzon), на момент публикации директора отдела разработки WhatsApp, складывался более тридцати лет – с позиции разработчика до основателя стартапов и руководителя проектов:
• разработчик
• технический менеджер
• основатель стартапа (позже приобретенного компанией Akamai)
• продакт-менеджер (Akamai)
• основатель стартапа (позже приобретенного компанией Sybase)
• директор разработки (Yahoo)
• корпоративный предприниматель (entrepreneur in residence) венчурной фирмы
• вице-президент по разработке (стартап приобретен Yahoo)
• старший директор отдела разработки (Yahoo)
• вице-президент по разработке (Syapse)
• главный директор по разработке (Babylon Health)
• директор отдела разработки (Meta).
Наиболее распространенные пути развития карьерыИндустрия разработки ПО динамично развивается, поэтому программисты постоянно получают множество предложений и, как следствие, возможностей построить успешную карьеру. Как это обычно происходит:
1. Разработчик «пожизненно». Специалист развивается в рамках одной и той же позиции, постепенно наращивая опыт (становится сеньором, стаффом и принципалом) и периодически меняя место работы. Он также может переходить в другие технологические стеки, постоянно совершенствуя свои навыки.
2. От разработчика к специалисту. Сюда относятся разработчики, которые специализируются в определенной области, например в сфере разработки мобильных приложений или бэкенда, и работают в ней длительное время.
3. Маятник «специалист – универсал». Такое происходит, когда разработчик, специализирующийся на какой-либо технологии, переходит на позицию, требующую более широкого спектра навыков, и наоборот. Опять и снова, снова и опять.
4. Разработчик специализируется в нишевой области. Например, разработчик становится SRE- или дата-инженером, работа которых частично связана с программированием, но тем не менее значительно отличается от стандартной разработки ПО.
5. От разработчика к подрядчику/фрилансеру. После достижения уровня сеньор-разработчика программист становится подрядчиком или фрилансером. В результате зарабатывает он зачастую больше, а заботится о внутренних делах компании или карьерном росте значительно меньше.
6. От разработчика к техлиду. Программист становится руководителем команды, но при этом может и не брать на себя решение управленческих задач. И даже при смене места работы такие специалисты рано или поздно оказываются на позиции техлида.
7. От разработчика к техническому менеджеру. Переход на позицию технического менеджера и последующее развитие по данной карьерной ветви.
8. От разработчика к основателю/владельцу компании. Разработчик, длительное время проработавший в какой-либо сфере, основывает (в одиночку или с партнерами) собственную компанию.
9. Разработчик переходит на должность, не связанную с разработкой ПО. Например, в другую технологическую область – на позиции специалиста по связям с разработчиками (DevRel), продакт-менеджера, технического продакт-менеджера (TPM), рекрутера и др. Опыт работы разработчиком на данных позициях остается актуален, но, в свою очередь, открывается возможность исследовать интересующие сферы деятельности.
10. Маятник «разработчик – менеджер». Разработчик сначала становится техническим менеджером, а затем возвращается на инженерный путь, и так несколько раз. Такой карьерный путь встречается все чаще, а подробнее он описан в книге технического директора Чарити Мэджорса (Charity Majors) «The Engineer/Manager Pendulum»[7].
11. Комбинация нескольких путей. Например, разработчик сначала становится техническим менеджером, затем продакт-менеджером, а уже после – основателем собственной компании.
12. Нелинейный карьерный путь. Например, разработчик, который перешел на позицию технического менеджера, берет длительный перерыв в карьере – чтобы посвятить себя семье или сменить профессию, а затем возвращается в отрасль на позицию технического директора. Нелинейные карьерные пути всегда индивидуальны.
В этой книге мы рассмотрим наиболее распространенный карьерный путь внутри одной компании – от разработчика начального уровня до уровня стафф+. И хотя такой карьерный путь довольно типичен для IC, продвигающихся в рамках одной компании, тем не менее он не является общим для всех программистов. Описывая все разнообразие способов развития выше уровня простого разработчика, я надеюсь убедить своих читателей в том, что не существует единственного «правильного» пути. Возможности и предпочтения у каждого человека разные, поэтому вы имеете полное право выбрать то, что подходит именно вам.
1.3. Оплата труда и «уровни» компаний
Сложно количественно оценить все особенности того или иного места работы, такие как, например, сложность профессиональных задач, гибкость графика и возможность поддерживать баланс между работой и личной жизнью.
Что можно измерить, так это общий уровень оплаты труда, хотя и тут могут возникнуть трудности, например с оценкой пакетов акций частных компаний. Опираясь на свой опыт рекрутера, я выделяю три уровня компаний и их компенсационных пакетов, что подтверждается многочисленными данными, добровольно предоставленными пользователями на сайте TechPays.com – платформе, которую я создал для публикации этой книги. Схематично эти уровни можно представить так:

Трехуровневое распределение зарплат разработчиков объясняет, почему аналогичные позиции в разных компаниях могут оплачиваться по-разному. Уровень 1 – местные компании; уровень 2 – лидеры внутреннего рынка; уровень 3 – лидеры регионального рынка
Данные показывают, что заработная плата на аналогичных должностях в компаниях разных уровней может различаться в 2–4 раза. Например, сеньор-разработчик в Google, скорее всего, получает как минимум вдвое, а то и вчетверо больше, чем сеньор в нетехнологической компании или небольшом семейном бизнесе. Общая заработная плата складывается из трех составляющих:
• базового оклада;
• денежного бонуса;
• акций компаний – в публичных компаниях они ликвидные, а в частных стартапах и скейлапах – неликвидные.
Рассмотрим три уровня компаний на технологическом рынке с точки зрения предлагаемой ими оплаты труда.
Уровень 1: внутренний рынокВ группу компаний, ориентирующихся на внутренний рынок, входят:
• местные стартапы;
• малые компании без венчурного финансирования;
• традиционные компании, не относящиеся к технологическому сектору, но имеющие технологические отделы;
• государственный сектор;
• некоммерческие организации;
• консалтинговые, аутсорсинговые компании и студии разработки;
• научно-исследовательские институты и центры.
Уровень 2: лидеры внутреннего рынкаПредлагают одну из самых высоких зарплат на внутреннем рынке, тем самым стремясь привлечь и удержать талантливых специалистов. Сюда относятся:
• некоторые средние технологические компании, которые подстраивают предлагаемую ими заработную плату под ожидания внутреннего рынка;
• некоторые скейлапы;
• некоторые стартапы, обычно с хорошим финансированием и региональной направленностью;
• некоторые традиционные компании с технологическими отделами, особенно те, что активно инвестируют в технологии.
Уровень 3: лидеры регионального/мирового рынкаКомпании, предлагающие самую высокую оплату труда на региональном или мировом уровне и конкурирующие не с местными компаниями, а с аналогичными им компаниями третьего уровня. Сюда относятся:
• технологические гиганты (Big Tech);
• большинство средних технологических компаний;
• хорошо финансируемые скейлапы, способные конкурировать за специалистов с крупными и средними технологическими компаниями;
• хорошо финансируемые стартапы, которые нанимают специалистов из перечисленных выше групп компаний.
Заработная плата в компаниях третьего уровня обычно складывается из трех компонентов:
• базового оклада;
• акций компаний, выпускаемых ежегодно;
• ежегодного денежного бонуса.
В публичных компаниях акции можно продать сразу же после вестинга[8], а полученные средства являются частью общего компенсационного пакета. Именно так разработчики в Big Tech и других крупных компаниях ежегодно зарабатывают на акциях больше, чем получают согласно своему базовому окладу.
Многие стартапы и скейлапы также предоставляют своим разработчикам долю акций компании. Но акции частных компаний не являются ликвидными и приносят только бумажную прибыль до тех пор, пока компания не выйдет на биржу или не будет приобретена. После выхода на биржу ее первые сотрудники, держащие значительный пакет акций, могут заработать целое состояние, что и произошло, например, с командой Uber. Конечно, работа в таких компаниях связана с большими рисками, ведь многие из них так никогда и не выходят на биржу: это случилось, например, с компанией Foursquare в 2023 году. Срок ее акций просто истек через 14 лет после ее основания[9].
Подрядчики и фрилансерыПока что мы рассматривали лишь заработную плату постоянных, штатных сотрудников. Однако также необходимо отметить и оплату труда подрядчиков и фрилансеров, которые зачастую выполняют ту же самую работу, что и постоянные сотрудники, но их компенсация рассчитывается иначе.
Работа подрядчиков и фрилансеров оплачивается согласно заранее установленной ставке за час или за день. Они не являются сотрудниками компании, выполняя необходимую работу по контракту на предоставление услуг по разработке ПО в рамках B2B-соглашения (business-to-business). Выбор между понятиями «подрядчик» и «фрилансер» зависит от страны – в США и Великобритании используется термин «подрядчик», тогда как во многих европейских странах таких специалистов называют «фрилансерами». Автор этой книги придерживается термина «подрядчик».
Заработная плата у подрядчиков может быть значительно выше, чем у штатных работников. Ставки, по которым работают подрядчики от сеньора и выше, почти всегда превышают ставку компенсационных пакетов в компаниях второго уровня. А некоторые высококвалифицированные подрядчики могут зарабатывать как в компаниях третьего уровня.
В некоторых странах, особенно европейских, доходы от постоянного трудоустройства облагаются высокими налогами, тогда как работники по контракту платят меньший налог.
Для работодателя основное различие между подрядчиками и постоянными сотрудниками заключается в гибкости: с подрядчиком можно как быстро заключить контракт, так и расторгнуть его. Нет необходимости заботиться о его карьерном росте, обучении или выходных пособиях. Отпуск в контракте также не прописывается: если подрядчик берет выходной, он просто не выставляет нанимателю счет за этот день.
Подход к управлению результативностью (performance management) и карьерному росту у подрядчиков тоже другой. Нет регулярного перформанс ревью и никаких возможностей для продвижения тоже нет. Это освобождает подрядчиков от выполнения многих действий, необходимых для обеспечения высокой продуктивности, которой так озабочены постоянные сотрудники. Программисты, решившие работать по контракту, не ищут карьерного роста в рамках какой-либо компании, предпочитая сосредоточиться на конкретных рабочих задачах, а не на процессах управления производительностью или офисной политике.
Однако у работы по договору подряда есть и ряд минусов, например меньшая стабильность, чем у постоянных сотрудников. Рабочее место штатного специалиста защищено нормами трудового права, а отказаться от услуг подрядчика очень просто – достаточно не продлевать срочный контракт или уведомить специалиста о прекращении сотрудничества за определенный срок, установленный в контракте. С подрядчиками легко как заключать контракты, так и расторгать их, поэтому они зачастую первыми попадают под сокращение, когда компания переживает трудные времена.
Тем не менее подрядчики готовы мириться с меньшей стабильностью работы, взамен получая более высокую зарплату. А отсутствие карьерного роста ничуть не смущает разработчиков уровня сеньора и выше.
Достоинства и недостатки различных уровнейА как же в зависимости от уровня компании меняется ее подход к оплате труда? Ответить на этот вопрос объективно достаточно сложно, поскольку каждая компания уникальна, а разные условия труда имеют свои плюсы и минусы. Ниже приведены некоторые наблюдения, характерные для сотрудников полного рабочего дня. Подрядчиков в данном случае мы не рассматриваем ввиду отсутствия у них каких-либо возможностей для продвижения. Тем не менее успешные подрядчики обладают многими качествами, о которых мы в дальнейшем поговорим в разделах о сеньор- и стафф-разработчиках.
Вакансии в компаниях, предлагающих высокую заработную плату, весьма предсказуемо привлекают наибольшее число соискателей, а это приводит к тому, что работодатель предъявляет очень высокие требования к своим разработчикам.

Сравнение трех уровней компаний
1.4. Центры затрат и центры прибыли
Многие компании в своей деятельности применяют концепции центров прибыли и центров затрат. И то, где именно вы работаете – в центре прибыли или затрат, – окажет значительное влияние на ход вашей карьеры.
Центры прибыли – это команды или отделы компании, которые являются непосредственными генераторами дохода. Классический пример – отдел рекламы в Google, который приносит бо́льшую часть доходов компании. Кроме того, существует и ряд отдельных команд, которые также участвуют в этом процессе, например команда поиска, которая привлекает пользователей на сайт. Однако без отдела рекламы, создающего различные инструменты и сервисы для рекламодателей, которые те приобретают исходя из своего бюджета на рекламу, доходы Google были бы значительно ниже.
К центрам затрат, в свою очередь, относятся те отделы, которые не приносят доход напрямую, но необходимы для бесперебойной работы компании. В качестве примера можно привести команду разработчиков, ответственных за соблюдение компанией правил обработки персональных данных (General Data Protection Regulation), установленных в Европе. Их деятельность важна для существования компании, но не приносит дохода, поэтому с точки зрения бизнеса они относятся к центрам затрат.
Как меняются условия труда в зависимости от того, работаете ли вы в центре прибыли или в центре затрат? Вот несколько важных отличий:
• Повышение. В центрах прибыли получить повышение намного легче – достаточно продемонстрировать свое влияние на генерацию дохода. Исключение составляют лишь техногиганты, где от позиций уровня стафф+ ожидается решение инженерных задач на уровне всей организации, а не только влияние на доходы компании. Поэтому многие опытные разработчики, желающие продвигаться по карьерной лестнице, предпочитают работать в команде разработчиков платформы в целом.
• Перформанс ревью и бонусы. Обычно на начальных уровнях (до уровня сеньора) никакой разницы между работой в центрах затрат и центрах прибыли нет. В дальнейшем же сотрудники центров прибыли зачастую получают более высокие «баллы» и, следовательно, бонусы. Это связано с тем, что большинство компаний обычно склоняются в пользу тех сотрудников, что приносят компании деньги, даже если вклад разработчиков равнозначен.
• Переход на другую позицию внутри компании. Вполне естественно, что какие-то сотрудники стремятся работать в центрах прибыли. Однако не всем это интересно: многие разработчики заинтересованы в выполнении сложных и неординарных задач, свойственных проектам с высоким риском, которые еще не стали центрами прибыли. Центры прибыли могут показаться одними из самых «скучных» отделов в компании, поэтому к ним желает присоединиться меньшее число специалистов. Представьте, что вы устроились в Meta и выбираете себе команду для работы: вы бы предпочли работать над инфраструктурой рекламы и увеличить доход от рекламы на 0,005 % или в молодой команде, разрабатывающей инновационный способ общения пользователей с друзьями?
• Текучесть кадров. В центрах затрат часто наблюдается более высокая текучесть кадров, так как большее число сотрудников либо покидают компанию, либо переходят в центры прибыли, желая обеспечить себе карьерный рост.