
Полная версия
Разработчик ПО: Путеводитель по карьерной лестнице для будущих сеньоров, техлидов и стаффов

Гергели Орош
Разработчик ПО: Путеводитель по карьерной лестнице для будущих сеньоров, техлидов и стаффов
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
© ООО Издательство "Питер", 2025
⁂Будьте в курсе изменений в IT
Работа над этой книгой велась четыре года, и на ее страницах я постарался собрать те наблюдения и советы, которые не потеряют своей актуальности со временем. Поэтому все изменчивые составляющие IT-индустрии: рынок труда, объемы инвестиций в стартапы и передовые технологии – здесь не рассматриваются. Все актуальные вопросы я регулярно освещаю в своем еженедельном издании «The Pragmatic Engineer Newsletter».
«The Pragmatic Engineer Newsletter» – одно из самых читаемых онлайн-изданий о технологиях и № 1 среди технологического контента на платформе Substack. Это еженедельная рассылка, предлагающая взгляд изнутри на работу Big Tech компаний и стартапов, с актуальной информацией о состоянии рынка технологий. Издание будет особенно полезно разработчикам ПО, техническим менеджерам и всем, кто работает в IT.
Bloomberg описывает мою рассылку так[1]:
В своих статьях [Гергели Орош] искренне и с глубоким знанием дела рассказывает о сфере IT. «The Pragmatic Engineer» охватывает широкий круг тем – от обзоров состояния Big Tech компаний и сокращений в отрасли до рекомендаций, как сотрудникам подготовиться к перформанс ревью.
Подписаться можно здесь:
pragmaticurl.com/newsletter
Надеюсь, эта книга поможет вам разобраться во всех изменениях в сфере IT, особенно в сочетании с моими статьями.
ГергелиОт издательства
Мы выражаем огромную благодарность клубу рецензентов ИТ-литературы ReadIT Club за помощь в работе над русскоязычным изданием книги и вклад в повышение качества переводной литературы.
Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
О научном редакторе русского изданияДмитрий Бардин – ведущий разработчик, архитектор решений, один из авторов курса «Архитектор ПО» от Яндекс Практикума. Опыт в ИТ более 15 лет. Работал руководителем службы продуктовой разработки и ресурс-менеджером, в настоящее время занимается разработкой бэкенда сервиса «Кинопоиск» с применением языков Go и Java.
Предисловие
Я пробыл разработчиком ПО около десяти лет, а также пять лет занимал позицию менеджера. В первые годы я практически не получал никаких профессиональных советов. Но меня это не особо беспокоило – я верил, что усердный труд рано или поздно приведет к успеху.
Однако через несколько лет все изменилось – мне отказали в повышении до сеньор-разработчика, на которое я так рассчитывал. Более того, когда я спросил у своего менеджера, что нужно сделать, чтобы достичь следующего уровня, он не смог дать мне никакого конкретного ответа. Тогда я решил для себя, что если когда-нибудь стану менеджером, то всегда буду давать своим сотрудникам четкие и полезные советы о том, как расти профессионально.
И только перейдя в Uber – компанию, работающую над приложением для заказа такси, – я получил должность технического менеджера. К тому времени у меня уже был солидный опыт разработки, но я помнил то обещание, данное самому себе. Поэтому я всегда старался помогать членам своей команды профессионально развиваться, получать заслуженные повышения, а также предоставлял им понятную и конструктивную обратную связь, если считал, что кто-то из них еще не готов к следующему уровню.
По мере роста моей команды и появления подчиненных уровнем на две ступени ниже (skip-level) у меня оставалось все меньше времени на детальное менторство. Но я начал замечать некоторые типичные паттерны в обратной связи, которую давал своим сотрудникам, и поэтому решил публиковать посты в блоге с советами, как хорошо писать и проводить качественные код-ревью. Мои посты получили теплый отклик, их читали и делились ими гораздо больше людей, чем я ожидал. Тогда я и начал писать эту книгу.
Спустя два года работы у меня появился черновик, готовый к публикации. В это же время я запустил рассылку «The Pragmatic Engineer Newsletter». Основное внимание в ней уделяется актуальным событиям в IT-индустрии, подробным разборам работы известных компаний, трендам в разработке ПО, а также периодическим интервью с интересными людьми из сферы IT. Работа над статьями помогла мне осознать, как же много «пробелов» было в черновике книги. Следующие два года я посвятил переработке ее содержания, по одной главе за раз.
После четырех лет работы я могу с уверенностью сказать, что «Разработчик ПО: Путеводитель по карьерной лестнице для будущих сеньоров, техлидов и стаффов» и «The Pragmatic Engineer Newsletter» дополняют друг друга. Хотя их содержание пересекается лишь в незначительной степени.
Работа над книгой помогла мне запустить периодическое онлайн-издание, так как стало очевидно, что существует множество важных тем, которые нелогично включать в книгу, ведь она должна оставаться актуальной на протяжении долгого времени. А статьи, в свою очередь, дополнили содержание книги – я многое узнал о трендах и новых инструментах, которые, судя по всему, останутся с нами на десятилетия, например инструментах для написания кода с использованием ИИ, облачных средах разработки и порталах для разработчиков. Все эти технологии упомянуты в книге, но не рассматриваются так подробно, как в рассылке.
Невозможно переоценить важность английского языка для моей карьеры – и для карьеры в области разработки ПО в целом. Я родился и вырос в Венгрии, и моя первая работа была в венгерской IT-компании, где все говорили на венгерском. Однако даже тогда, чтобы разобраться с проблемой в коде, мне приходилось читать статьи на английском. При написании кода я использовал языки программирования, в которых используется английская лексика. Английский – это язык для разработки ПО и всего сообщества программистов. Все крупные международные технологические компании используют английский язык для общения. Именно благодаря своим знаниям английского я смог переехать в Нидерланды и работать в Uber, говоря на работе только на этом языке и сотрудничая с разработчиками из десятков других стран.
Сначала я сомневался, стоит ли переводить эту книгу, поскольку английский невероятно важен для построения карьеры в разработке ПО. Однако именно из-за доминирующего положения английского существует так мало добротных книг на других языках, которые рассказывают о том, что такое качественная разработка ПО и как выглядит успешная карьера разработчика. Перевод делает всю эту информацию более доступной и легкой для восприятия. Тем не менее овладение английским языком – это обязательное условие для профессионального роста в сфере IT и получения возможности работать в международных компаниях, включая те, что находятся в вашей стране. Поэтому уделите время изучению английского.
Надеюсь, вы найдете в этой книге полезные идеи, которые не утратят своей ценности в течение многих лет.
Введение
Эта книга – то, что я сам хотел бы прочитать в начале своей карьеры разработчика, особенно когда устроился в крупную технологическую компанию с более высокой заработной платой, но с совершенно другой инженерной культурой и почти полным отсутствием помощи в онбординге.
Книга следует структуре «типичного» карьерного пути разработчика ПО – от начинающего сотрудника до сеньора/лида, а затем и до инженера уровней стафф+. Она обобщает мой собственный опыт работы и те подходы, что я использовал, будучи ментором для разработчиков разных уровней.
Мы рассмотрим как «гибкие» навыки (soft skills), важность которых растет по мере увеличения ответственности, так и «жесткие», например концепции разработки ПО и подходы, которые помогут вашему профессиональному росту.
Названия позиций и ожидания от них могут варьироваться в зависимости от компании. Чем выше «ранг» компании, тем больше требований предъявляется к разработчикам. Например, уровень «сеньор-разработчик» предполагает значительно более высокие ожидания в таких компаниях, как Google (уровень L5) и Meta (уровень E5), по сравнению с компаниями более низкого ранга. Если вы работаете в крупной компании, вам будет полезно изучить главы и о более высоких уровнях, а не только о текущем или о том, который вас интересует.
Несмотря на различия в названиях, принципы того, что делает разработчика выдающимся и эффективным специалистом на индивидуальном, командном и организационном уровне, остаются на удивление неизменными. Независимо от того, на какой позиции вы сейчас находитесь, надеюсь, эта книга предложит вам свежий взгляд и новые идеи для будущего профессионального роста.
Как читать эту книгу
Книга состоит из шести независимых частей, каждая из которых включает несколько глав:
• Часть I. Основы карьеры разработчика
• Часть II. О компетентном разработчике ПО
• Часть III. Разносторонний сеньор
• Часть IV. Прагматичный техлид
• Часть V. Образцовый стафф и принципал
• Часть VI. Заключение
Части I и VI применимы ко всем уровням инженеров – от начинающего разработчика до принципала и выше. Части II, III, IV и V охватывают все более старшие уровни и объединяют все актуальные темы в разделы, такие как «Программная инженерия», «Сотрудничество», «Выполнение задач» и др.
Эта книга – справочник, к которому вы можете обращаться по мере вашего карьерного роста. Но сначала предлагаю сосредоточиться на темах, которые вызывают у вас трудности, либо на уровне карьеры, к которому вы стремитесь. Учтите, что ожидания могут сильно различаться в зависимости от компании.
В книге все темы и описания уровней согласованы с ожиданиями в Big Tech компаниях и скейлапах. Однако некоторые темы, полезные и на более низких уровнях, также детально рассматриваются в последующих частях. Например, в части V, в главе 24 «Надежные программные системы» подробно освещены логирование, мониторинг и дежурства, хотя знать о них полезно, а зачастую даже необходимо на уровнях и ниже стафф-разработчика. Поэтому я рекомендую использовать оглавление – перемещаясь не только по темам, но и по уровням.
А теперь давайте начнем…
Часть I. Основы карьеры разработчика
Когда я начинал свой путь разработчика, первые несколько лет меня не слишком волновали вопросы, связанные с карьерой. Я полагал, что если буду усердно трудиться и показывать хорошие результаты, то вознаграждение придет само собой. В агентствах разработчиков продвижение по службе было редкостью, а карьерный рост был весьма ограничен, но у меня не было ощущения, как будто я что-то упускаю, до тех пор пока моя должность и уровень оставались прежними на нескольких первых местах работы.
Только когда я перешел в более крупные компании, такие как JP Morgan и Microsoft, я заметил, что не всегда те, кто работает усерднее всех либо достигает лучших результатов, получают самые большие бонусы или быстрее всех продвигаются по карьерной лестнице. Когда я стал техническим менеджером в Uber, у меня была команда инженеров, которым требовалась регулярная обратная связь по результатам работы и поддержка в их профессиональном росте, например в продвижении на следующий уровень.
В этой главе обобщены наблюдения за тем, как функционируют различные компании, и советы по карьерному росту, которые я давал инженерам своей команды.
Я жалею, что не смог осознать много раньше, насколько отличаются компании, в которых нам приходится выполнять свои задачи в качестве разработчика: это могут быть известные технологические гиганты, стартапы, традиционные предприятия, не относящиеся к технологическому сектору, консалтинговые компании, научно-исследовательские организации и т. д. Переходить из одной категории компаний в другую оказывается невероятно сложно; можно столкнуться с неприятными сюрпризами после десяти лет работы в одном сегменте.
Еще одна вещь, которую я в свое время упустил, – это то, как управлять собственной карьерой. Только когда я стал менеджером, я понял, как важно, если разработчик берет на себя ответственность за свой карьерный рост, а это, в свою очередь, помогает его менеджеру защищать его интересы.
Многие инженеры, с которыми я встречался, предполагали, что их руководитель позаботится о большинстве вопросов, связанных с карьерой, и что положительные отзывы о работе и повышение по службе будут появляться как будто из воздуха. Возможно, так происходит в каких-то небольших компаниях или стартапах, но в крупных технологических компаниях для карьерного роста требуется дополнительная работа. В большинстве случаев она не слишком сложная; просто многие инженеры не знают, какие именно дополнительные действия им следует предпринимать.
Наблюдения, концепции и подходы, изложенные в этой главе, применимы ко всем уровням карьеры, начиная от новичка и вплоть до уровня стафф и выше.
Глава 1. Карьерный путь
Карьерная ситуация у каждого человека уникальна. Конечно, некоторые ее особенности легко определить, например место работы, должность и примерный размер оплаты труда. Однако другие оценить уже сложнее – взаимодействие с коллегами, возможности для профессионального роста, баланс между работой и личной жизнью и т. д.
Карьерные пути разнообразны, и не существует единого мнения, какой из них можно считать «плохим», а какой «хорошим». У каждого человека он свой, поэтому лучшее, что вы можете сделать, – это понять, что интересно и подходит именно вам.
Способы начать карьеру в разработке ПО также многообразны; можно, например, получить высшее образование по необходимому профилю или же выучиться самостоятельно. У меня был коллега – он двадцать лет проработал инженером-химиком, а потом самостоятельно научился программировать и стал разработчиком.
В этой главе мы рассмотрим следующие вопросы:
1. Типы технологических компаний
2. Типовые карьерные пути в сфере разработки ПО
3. Оплата труда и «уровни» компаний
4. Центры затрат и центры прибыли
5. Альтернативные подходы к оценке карьерного роста
1.1. Типы компаний
Не существует единой классификации компаний, но тем не менее можно определить ряд характеристик, важных именно для программиста. Так, выделяют следующие типы компаний.
Технологические гиганты (Big Tech)Это крупные публичные технологические компании, такие как Apple, Google, Microsoft и Amazon. Они нанимают десятки тысяч программистов, а рыночная капитализация составляет миллиарды долларов.
Многие программисты мечтают работать именно в таких компаниях: из-за высокой оплаты труда, перспективы карьерного роста выше уровня стафф-разработчика и возможности работать над проектами с многомиллионной аудиторией. Кроме того, в процессе работы программисты сотрудничают с лучшими специалистами из различных отраслей.
Средние и крупные технологические компанииСюда относятся компании, для которых разработка ПО является ключевой составляющей их бизнеса. Они меньше технологических гигантов и нанимают сотни или тысячи программистов. В качестве примера можно привести Atlassian, Dropbox, Shopify, Snap и Uber.
Такие компании, как правило, предлагают оплату труда, близкую к уровню техногигантов, а также гарантируют карьерный рост выше стафф-разработчика. Конечно, база их пользователей несколько меньше, но программисты все равно работают с продуктом, нацеленным на миллионы клиентов.
СкейлапыСкейлапы представляют собой стабильно развивающиеся компании с венчурным финансированием. Они уже имеют устоявшийся на рынке продукт, и поэтому стремятся к расширению доступа к рынкам. Они даже могут намеренно работать в убыток, чтобы увеличить свою долю на рынке товаров и услуг. К подобным компаниям относятся, например, Airtable, Klarna и Notion.
Развитие таких компаний обычно проходит быстро: они стремятся оправдать свою капитализацию, привлечь дополнительные раунды финансирования или подготовиться к выходу на биржу.
Одной из разновидностей скейлап-компаний являются так называемые единороги – компании с частной оценкой в $1 млрд и более. В 2010-х годах таких компаний было относительно немного, и их статус «единорога» означал, что компания впоследствии может стать крупным игроком на рынке. На сегодняшний день компаний-единорогов стало больше, и данный статус утратил свою значимость.
СтартапыСтартапы – это компании с венчурным финансированием, которые еще не привлекли достаточный объем инвестиций и стремятся к тому, чтобы их продукт соответствовал ожиданиям рынка. Подобные компании основаны на какой-либо инновационной идее, привлекающей клиентов.
Деятельность стартапов сопряжена с риском; они зачастую не имеют достаточных доходов и в своей работе зависят от новых раундов финансирования. Именно для этого им и необходимо привлечь внимание потребителей к своему продукту.
Примером успешного стартапа, который вырос до скейлап-компании, является Airbnb в 2011 году. Основанная в 2008 году, компания привлекла начальные инвестиции от фонда Y Combinator. К 2010 году услуги Airbnb начали набирать популярность, и компании удалось привлечь $7,2 млн в раунде серии A. В 2011 году компания привлекла уже $112 млн в раунде серии B, продемонстрировав инвесторам свой потенциал.
Примером неудачного стартапа может послужить компания – разработчик Secret, приложения для анонимного обмена сообщениями. Приложение было разработано в 2013 году и позволяло пользователям анонимно делиться своими секретами с другими людьми. Компания добилась хороших результатов и за два года привлекла $35 млн инвестиций. Однако в 2015 году она прекратила свою деятельность и возвратила инвесторам часть средств.
Стартапы предоставляют своим программистам наибольшую свободу, но в то же время не могут гарантировать им стабильность. Кроме того, работая в подобных компаниях, сложнее всего поддерживать баланс между работой и личной жизнью, ведь успех в данном случае зависит от способности команды выпустить продукт до того, как закончатся деньги. Рабочую атмосферу в коллективе стартапа зачастую определяют его основатели. В некоторых компаниях царит принцип «Work hard, play hard» («Хорошо поработаем – хорошо отдохнем»), в то время как другие предпочитают обеспечить устойчивую рабочую культуру. Деятельность в рамках одного стартапа разнообразна, состав специалистов зачастую разномастный, а возможности для карьерного роста обширны.
Некоторые стартапы предлагают своим сотрудникам долю акций компании – риск таких инвестиций высок, как и их потенциальная доходность. Если бизнес оказывается успешен и в итоге выходит на биржу или выгодно продается, первые сотрудники компании, владеющие значительной долей акций, получают огромную финансовую выгоду. Так и произошло с Airbnb, когда в 2020 году компания вышла на IPO (первичное публичное размещение акций) с рыночной капитализацией в $86 млрд. Другим примером может послужить и компания – разработчик сервиса для совместной работы в области дизайна Figma, которая в 2022 году была приобретена Adobe за $20 млрд.
Традиционные компании, не относящиеся к технологическому сектору, но занимающиеся разработкой собственного ПООсновная деятельность таких компаний мало связана с технологиями. Некоторые из них существуют уже более 50 лет и были основаны до начала бума разработки программного обеспечения. Другие работают в отраслях, где компьютерные технологии не являются главным источников дохода.
Примеры таких компаний включают IKEA (производитель мебели для дома), JPMorgan Chase & Co (финансовые услуги), Pfizer (фармацевтика), Toyota (автомобили) и Walmart (розничная торговля).
В настоящее время многие традиционные компании уже начали процесс цифровизации и разрабатывают собственное программное обеспечение, применимое в их сфере деятельности. Однако компьютерные технологии в подобных компаниях являются центром затрат, а не прибыли, а потому оплата труда в них ниже, чем в технологических гигантах и большинстве скейлапов.
С другой стороны, традиционные компании, как правило, гарантируют более высокую стабильность, что позволяет выстроить разумные границы между работой и личной жизнью, нежели это возможно в большинстве технологических компаний. Однако карьерных возможностей для программистов здесь значительно меньше, а рост выше позиции стафф-разработчика маловероятен.
Традиционные, но технологически подкованные компанииОтдельный подвид традиционных компаний составляют те, где технологии являются ключевым компонентом предлагаемых ими товаров и услуг, например аппаратного или программного обеспечения. На ранних этапах развития такие компании часто демонстрировали выдающиеся результаты и сейчас представляют собой зрелые, надежные и прибыльные предприятия. Однако со временем их рост замедляется, а гибкая структура, свойственная молодому бизнесу, сменяется более неповоротливой и громоздкой.
К таким компаниям относятся, например, Broadcom, Cisco, Intel, Nokia, Ericsson, Mercedes-Benz и Saab. Большинство производителей различного оборудования, а также автомобилей попадают в эту категорию.
Такие компании обычно менее привлекательны для соискателей, чем техногиганты или скейлапы. Предлагаемая ими оплата труда почти всегда ниже, а организационная система недостаточно гибкая, чтобы быстро внедрять новые методы работы, как это могут позволить себе молодые компании.
Однако подобные организации все же способны поставить перед своими специалистами сложные профессиональные задачи, выполнение которых принесет чувство удовлетворения, а масштаб работы может быть сопоставим с деятельностью технологических гигантов. Они также гарантируют высокую стабильность и позволяют выстроить более устойчивый баланс между работой и личной жизнью. Часто программисты работают в одной такой компании достаточно долго, что делает их карьеру предсказуемой и стабильной, а это значительно менее типично для молодых предприятий.
Малые компании без венчурного финансированияСамофинансируемые компании, семейный бизнес и lifestyle-компании (существующие для обеспечения образа жизни своего основателя) – все это примеры небольших компаний без венчурного финансирования. Это означает следующее:
1. Отсутствие давления со стороны инвесторов.
2. Нужна прибыль, иначе бизнес ждет крах.
Эти особенности приводят к тому, что малые компании редко демонстрируют стремительный рост и могут показаться консервативными в своем подходе к найму и ведению бизнеса. Однако они могут оказаться хорошим вариантом для тех, кто предпочитает поработать подольше в спокойной, нежели суматошной, атмосфере и при этом иметь приемлемый доход и комфортный темп работы.
Государственный секторПравительства разных стран постоянно инвестируют в разработку программного обеспечения. К преимуществам работы в государственном секторе можно отнести стабильность, четко оговоренную и прозрачную заработную плату, а также различные льготы в виде пособий и отпусков.
Среди недостатков – низкий уровень гибкости, бюрократия и необходимость поддерживать работу устаревших систем, не поддающихся корректировкам. Кроме того, в некоторых странах могут возникнуть трудности с последующим переходом специалиста из государственного сектора в частный.
Примером правительственной организации с хорошей репутацией является британское подразделение Digital Service, которое разрабатывает и поддерживает многие государственные веб-сайты. Компания публикует свои проекты на GitHub (https://github.com/alphagov), что делает ее деятельность прозрачной и общедоступной. Еще одним примером компании государственного сектора с хорошей инженерной культурой является Британская вещательная корпорация (BBC).
Некоммерческие организацииПодобные компании ставят своей целью служение каким-либо общественным интересам, как, например, Code.org, Khan Academy и Wikimedia Foundation.
Некоммерческие организации обычно предлагают меньшую заработную плату, чем компании с венчурным финансированием, и у них принципиально другая миссия, отличная от генерирования прибыли для владельцев и возврата вложений для инвесторов. Профессиональная среда в таких организациях может быть различной; некоторые могут оказаться отличным местом работы для программистов, но технологии там, как правило, являются центром затрат.