October 31

Инженерная культура Google: часть 1

Подробное и глубокое погружение в работу Google с точки зрения инженеров-программистов и технических руководителей. Что делает Google особенным с инженерной точки зрения, инженерные роли, оплата труда и многое другое

Сегодня технологический гигант Google с помощью таких продуктов, как Google Search, Android, Chrome, Gmail и других, охватывает больше людей, чем любая другая компания в мире, во всех отраслях. Он также управляет самым посещаемым веб-сайтом в мире и вторым по посещаемости веб-сайтом: YouTube. Основанная в 1998 году компания Google в прошлом году получила самую большую прибыль ($115 млрд после вычета всех расходов и налогов) среди всех компаний в мире.

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

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

Эта статья представляет собой «то, что я хотел бы знать о Google до того, как устроился туда инженером-программистом / менеджером по разработке».Она предназначена для всех, кто хочет работать в Google, а также для тех, кто хочет узнать, понять и, возможно, вдохновиться подходами, которые работают в одной из ведущих мировых компаний.

Эта мини-серия статей, посвященных Google, содержит больше информации о различных аспектах инженерной культуры компании, чем когда-либо публиковалось в одном месте. Мы потратили почти 12 месяцев на ее изучение, в том числе пообщались с 25 нынешними и бывшими руководителями технических отделов и инженерами-программистами Google, большинство из которых занимают должность Staff (L6) или выше.

Конечно, невозможно описать каждую деталь в компании, где работает более 60 000 инженеров-программистов, а продуктовые направления (в Google это называется orgs) и команды работают по-разному. Google предоставляет инженерам и командам большую свободу в принятии решений о том, как им работать, и, хотя мы не можем охватить всё это разнообразие, мы стремимся предоставить практичный и полезный обзор.

В первой части этого мини-сериала мы рассказываем о:

  1. Обзор. Google приносит больше прибыли, чем Microsoft и Meta, и является крупным технологическим гигантом, в котором, вероятно, работает больше всего инженеров-программистов в более чем 25 инженерных подразделениях. Миссия компании заключается в том, чтобы «систематизировать мировую информацию и сделать её общедоступной и полезной».
  2. Что делает Google особенным? За разнообразием подходов к работе стоит универсальная инженерная культура в отношении инструментов и практик. У Google уникальный, специально разработанный инженерный стек, и с самого первого дня компания создавала системы, отличающиеся от систем конкурентов, что сделало её «технологическим островом». Google исторически была более открытой, чем другие крупные технологические компании, в отношении своей внутренней работы. Имея более 120 активных продуктов, она больше всего похожа на Microsoft по широте своей деятельности и возможностям для инженеров-программистов работать над разными проектами.
  3. Уровни и роли. Между уровнями L2 и L11 существует двухуровневая карьерная лестница, а роль технического руководителя (TLM) является «третьим карьерным путём». Процесс определения уровня в Google во время собеседований является самым строгим в отрасли, а «технический руководитель» — это роль, а не уровень. К другим инженерным ролям относятся SRE, EngProd, научный сотрудник, DevRel и UXE. К другим должностям, связанным с разработкой, относятся менеджеры по продуктам, менеджеры программ, TPM, дизайнеры и технические писатели.
  4. Вознаграждение. Google платит больше, чем на других региональных рынках, и известна своими выдающимися выплатами, которые включают базовую зарплату, акции, денежные премии, а иногда и бонус за подписание контракта. Примеры таких высоких зарплат:
    • Инженер среднего звена (L4) обычно получает зарплату в диапазоне:
      • Общая сумма компенсации в США составляет 250–350 тысяч долларов
      • Другие регионы: 125–185 тысяч фунтов стерлингов в Великобритании, 140–180 тысяч евро в Германии, 210–260 тысяч швейцарских франков в Швейцарии, 210–280 тысяч канадских долларов в Канаде, 200–280 тысяч австралийских долларов в Австралии, 380–450 тысяч злотых в Польше и 65–88 миллионов индийских рупий в Индии
    • Штатный инженер-программист (L6) обычно получает зарплату в диапазоне:
      • Общая сумма компенсации в США составляет 550–700 тысяч долларов
      • Другие регионы: 270–380 тысяч фунтов стерлингов в Великобритании, 250–330 тысяч евро в Германии, 370–500 тысяч швейцарских франков в Швейцарии, 420–650 тысяч канадских долларов в Канаде, 350–550 тысяч австралийских долларов в Австралии, 750–850 тысяч злотых в Польше и 1,5–2,2 миллиона индийских рупий в Индии
    • Мы предлагаем пакеты для начинающих (L3), старших сотрудников (L5), руководящего состава (L7), а также специальные бонусы от Google, такие как бонусы для коллег, разовые бонусы и программы поощрения.
    • Google — одна из немногих компаний, которая предлагает инженерам финансово выгодную карьерную траекторию, не вынуждающую их становиться менеджерами
  5. Подбор персонала. В Google, как известно, очень сложный процесс собеседования, который копируют многие другие технологические компании. Собеседования на знание структур данных и алгоритмов, проектирование систем, «гуглевость» и собеседования на руководящие должности также являются частью процесса найма, а некоторые команды используют углубленное изучение предметной области и домашние задания. Окончательное решение о найме принимает комитет по подбору персонала, но это еще не конец процесса — успешные кандидаты затем проходят «подбор команды».

Во второй части мы дополнительно рассмотрим:

  • Инфраструктура планетарного масштаба. Внутренняя инфраструктура Google по умолчанию рассчитана на «планетарный масштаб», но Google Cloud не поддерживает его «из коробки»; поэтому большинство инженерных команд используют стек Google PROD, а не GCP.
  • Монорепозиторий. Также известный как «Google3», он на 95 % состоит из кода Google, хранящегося в одном гигантском репозитории с миллиардами строк. Разработка на основе магистрали является нормой. Кроме того, монорепозиторий не означает, что у Google монолитная кодовая база.
  • Технологический стек. Официально поддерживаются C++, Kotlin, Java, Python, Go и TypeScript с активным использованием Protobuf и Stubby. У Google есть руководства по языковому стилю для большинства языков, которые почти всегда соблюдаются.
  • Инструменты для разработки. Набор инструментов для разработки отличается от любого другого рабочего места. Прощайте, GitHub, Jenkins, VS Code и другие известные инструменты: здравствуйте, Piper, Fig, Critique, Blaze, Cider, Tricorder, Rosie и другие.
  • Вычисления и хранение данных. Borg, Omega, Kubernetes, BNS, Borgmon, Monarch, Viceroy, Analog, Sigma, BigQuery, Bigtable, Spanner, Vitess, Dremel, F1, Mesa, GTape и многие другие пользовательские системы, на которых работает Google. Этот стек инфраструктуры не похож ни на один другой.
  • ИИ. Gemini интегрирован в инструменты для разработчиков и большинство внутренних инструментов, и Google всячески поощряет команды к созданию ИИ, когда это возможно. Команды могут запрашивать ресурсы графического процессора для тонкой настройки моделей, и существует множество внутренних проектов GenAI.

Эта статья почти в два раза длиннее большинства подробных обзоров. О Google можно рассказать очень много интересного!

Похожие подробные обзоры см. в Инсайдерском обзоре инженерной культуры Meta, Инсайдерском обзоре инженерной культуры Amazon и других подробных обзорах инженерной культуры, в том числе в OpenAI, Stripe и Figma.

Примечание для программистов: на этой неделе выпуск подкаста The Pragmatic Engineer выйдет завтра (в среду), а выпуск The Pulse не выйдет.

1. Общий обзор

Давайте начнём с краткого обзора показателей, благодаря которым у Google больше пользователей и клиентов, чем у любой другой компании в мире:

В 2015 году, когда Google сменила название на Alphabet, это было сделано для того, чтобы отделить основной бизнес по веб-поиску, который приносил львиную долю дохода, от убыточных проектов, таких как Waymo, Google DeepMind, Google Fiber и т. д. На практике почти весь доход Alphabet поступает от подразделения Google, и с тех пор мало что изменилось. В этой статье при упоминании Alphabet используется название «Google».

Невероятно прибыльно и с большим количеством рекламы

В абсолютном выражении Google в настоящее время является самой прибыльной компанией в мире. За последние 12 месяцев её прибыль (чистый доход) составила 115 миллиардов долларов при выручке в 371 миллиард долларов. Для сравнения приведём чистые доходы других крупных технологических компаний за этот период:

  • Microsoft: 101 миллиард долларов (из 281 миллиарда долларов выручки)
  • Apple: 99 миллиардов долларов (доход — 408 миллиардов долларов)
  • Meta: 71 миллиард долларов (доход — 178 миллиардов долларов)
  • Amazon: 70 миллиардов долларов (доход — 670 миллиардов долларов)

По своей сути Google по-прежнему остаётся рекламной компанией: около 75 % дохода поступает от продажи рекламы в Google Поиске, на YouTube и в сети Google Рекламы. Однако у компании есть несколько сервисов, которые не зависят от рекламы:

  • Google Cloud:третий по величине поставщик облачных услуг после AWS и Azure, годовой доход которого составляет более 50 миллиардов долларов (около 13 % от общего дохода). В эту цифру включен доход от Google Workspace.
  • Оборудование плюс подписки: смартфоны Pixel, гаджеты для умного дома Nest, носимые устройства Fitbit, подписки на YouTube Premium и Google One. Google зарабатывает на этом более 40 миллиардов долларов в год (около 10 % дохода)

У Google есть несколько убыточных подразделений, которые в будущем могут начать приносить прибыль, например:

  • Gemini и искусственный интеллект: Google является лидером в области искусственного интеллекта благодаря своим моделям Gemini, которые интегрированы в несколько продуктов, таких как веб-поиск. Это как бесплатный, так и платный продукт, который в настоящее время, скорее всего, приносит убытки.
  • Waymo: лидер в области беспилотных транспортных средств, который в настоящее время обслуживает более 1 миллиона поездок в месяц в Сан-Франциско и Финиксе, США.
  • Google Fiber: сверхбыстрый оптоволоконный провайдер со скоростью передачи данных от 1 до 8 Гбит/с. Он работает в 25 городах в 19 штатах США, включая Остин (Техас), Атланту (Джорджия), Чикаго (Иллинойс), Майами (Флорида), Денвер (Колорадо) и Сан-Диего (Калифорния).
Структура доходов Google на 2024 год

Глобальные офисы

В Google по всему миру работает 183 000 человек, а в 2022 году их число достигло пика — 190 000 сотрудников. В 2023 году произошли массовые увольнения, и с тех пор численность сотрудников перестала расти.

Google уже не развивается так быстро, как до 2022 года

Как упоминалось выше, в Google работает около 60 000 инженеров-программистов, о чём мы можем судить по тому, что в 2020 году их было 50 000, как указано в книге «Разработка программного обеспечения в Google» — около 35 % от общего числа сотрудников. Рост численности персонала с тех пор говорит о том, что сегодня там работает 60 000 инженеров. Это делает Google одним из крупнейших работодателей для инженеров-программистов. В Amazon работает почти 35 000 разработчиков, а в Meta около 32 000 инженеров-программистов. Мы уверены, что у Google самый высокий «коэффициент инженеров-программистов» среди крупных технологических гигантов.

У Google более 25 инженерных офисов. Самый крупный из них:

  • США: Маунтин-Вью (штаб-квартира компании) и прилегающий к нему район залива Сан-Франциско, Сан-Франциско, Нью-Йорк и Сиэтл (Киркленд), а также несколько небольших офисов в таких городах, как Кембридж (Массачусетс), Лос-Анджелес (Калифорния), Сан-Диего (Калифорния), Питтсбург (Пенсильвания), Роли и Дарем (Северная Каролина).
  • Канада: Торонто, Монреаль, Ватерлоо и Китченер
  • Европа: Цюрих (Швейцария), Лондон (Великобритания), Дублин (Ирландия), Мюнхен (Германия) и Париж (Франция) — крупнейшие. К более мелким офисам относятся Гамбург (Германия), Милан (Италия), Амстердам (Нидерланды), Мадрид (Испания), Стокгольм (Швеция), Копенгаген и Орхус (Дания), Хельсинки (Финляндия), Варшава и Краков (Польша), Прага (Чехия), Вильнюс (Литва), Бухарест (Румыния) и Будапешт (Венгрия).
  • Индия: Крупнейшими офисами являются Бангалор и Хайдарабад.
  • Южная Америка: Мехико (Мексика), Сан-Паулу и Белу-Оризонти (Бразилия)
  • Ближний Восток, Азия и Австралия: Тель-Авив (Израиль), Токио (Япония), Сидней (Австралия), Новый Тайбэй (Тайвань)

У Google есть более 70 офисовв более чем 50 странах. Общее количество офисов превышает количество инженерных офисов, потому что во многих офисах Google нет команд разработчиков программного обеспечения, а есть нетехнические команды, такие как отделы продаж, маркетинга, консалтинга (например, для Google Cloud) и другие.

Хотя это и не является стандартной практикой, Google может нанимать инженеров для работы в основном в неинженерных отделах в качестве «одиночек». Один из нынешних инженеров Google рассказал нам:

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

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

История, миссия, ценности

Как известно, Google был основан аспирантами Ларри Пейджем и Сергеем Брином, которые разработали более эффективный алгоритм поисковой системы под названием PageRank. Использование PageRank для поиска в интернете позволило значительно улучшить результаты по сравнению с самыми популярными поисковыми системами того времени, такими как Yahoo!, AltaVista, Lycos и Ask Jeeves. Некоторые из них были порталами, на которых «рекомендовались» сайты для посещения (например, AltaVista), а другие представляли собой примитивные поисковые системы, выдававшие до 15 не особо точных результатов.

Ведущие поисковые системы в 2000 году. Google отказался от популярного в то время дизайна «избранных сайтов»

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

Со временем миссия компании изменилась:

  • «Систематизировать мировую информацию и сделать ее общедоступной и полезной». Это была миссия компании с момента ее основания в 1998 году, и она не изменилась.
  • «Не будь злым». Неофициальный девиз, который был частью кодекса поведения Google примерно с 2000 года, чтобы напоминать сотрудникам о необходимости действовать этично. Он оставался актуальным до 2015 года, когда Google стала частью Alphabet.
  • «Поступай правильно». Девиз компании с 2015 года, который заменил собой «не будь злым».

У Google также есть пять основных ценностей:

  • Защита пользователей
  • Ответственный подход к созданию и внедрению ИИ
  • Расширяющиеся возможности
  • Помощь в решении проблем общества
  • Строительство для всех

Нынешние сотрудники Google сообщают, что эти ценности не особо учитываются в повседневной работе и кажутся довольно абстрактными и «корпоративными». Такой поверхностный подход отличается от подхода конкурентов, таких как интернет-магазин Amazon, чьи 16 принципов лидерства с таким же успехом могли бы быть высечены на камне на стенах.

«Гугловость» — это то, что объединяет большинство сотрудников компании. Это качество, на которое Google обращает внимание при найме сотрудников, и которым должны обладать все работники. Этот термин не имеет четкого определения, но подразумевает, что сотрудник должен быть умным, легко адаптирующимся и командным игроком, с которым приятно работать. Подробнее о «гугловости» мы рассказываем в разделе «Найм».

Игривый и амбициозный: стиль Google начинается со знаменитой кепки «Нуглер». Источник: бывший инженер Google Мохаммад Фраз («Хуглер») из своего видео «Набор для вступления в Google»

В собственных продуктах Google можно найти множество примеров «гугловости», которые показывают, насколько ориентирована на инженеров корпоративная культура. Например, попробуйте ввести в Google запрос «рекурсия»:

Рекурсия — непростая для понимания концепция. Вместо того чтобы объяснять, Google просто демонстрирует эту концепцию в поиске Google, предлагая вариант «Вы имели в виду: рекурсия?» Нажмите на эту ссылку, и вы вернётесь на ту же страницу… рекурсия!

2. Что делает Google особенным?

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

Никакого “единого” Google

Google разделена на продуктовые направления, которые функционируют как отдельные компании. Внутри компании их часто называют «направлениями» или «организациями». Основные направления:

  • Знания и информация: включает поиск Google, внутренние платформы и основные сервисы
  • YouTube: всё, что связано с платформой для обмена видео
  • Облако: Gоблачная платформа и рабочее пространство Google
  • Реклама и монетизация: такие продукты, как Google Ads, AdSense и AdMob
  • Платформы и устройства: программные платформы, такие как Android, Chrome, Chrome OS, и аппаратные устройства, такие как Pixel, Nest, Fitbit, Chromecast, Google TV и Google Home

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

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

Технический руководитель подтвердил, что приоритеты у разных PA различаются.

«Приоритеты между продакт-агентами сильно различаются. Честно говоря, они также различаются между подгруппами в рамках одного продакт-агента. В Google принято договариваться между собой, чтобы добиться результата, а не следовать приоритетам, установленным сверху. Лично я считаю, что такое количество переговоров неэффективно и утомительно, и я бы не отказался от более четких указаний сверху!»

Единая инженерная культура

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

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

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

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

  • Политика. Как вы влияете на лиц, принимающих решения в вашей организации, чтобы они отдавали приоритет тому, что важно для вашей команды? Для этого нужно хорошо разбираться в тонкостях влияния, знать самых влиятельных людей и сделать их своими союзниками. Это непростая задача для любой компании среднего или крупного размера. Ранее мы рассказывали о внутренней политике для разработчиков и менеджеров.
  • Культура и эффективность. Google утверждает, что существует «единая инженерная культура», но инженеры рассказали нам, что в разных организациях расставляют приоритеты по-разному: одни больше ценят качество, другие сосредоточены на инновациях, а третьи ставят во главу угла быструю доставку. Оценка эффективности называется GRAD (Google Reviews and Development) и зависит от организации, то есть ожидания для каждого уровня немного отличаются в разных организациях. Мы рассмотрим эту тему во второй части этой мини-серии.

Уникальный инженерный пакет

Инженерная организация Google существует в другом мире, отличном от того, в котором работают другие технологические компании. Всё сводится к одному: масштабу.

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

Какие бы инструменты или поставщиков ни использовала ваша компания для масштабирования, скорее всего, Google создала свои собственные версии на 10 или более лет раньше.

  • Борг (управление контейнерами в масштабе): предшественник платформы для оркестрации контейнеров Kubernetes
  • Боргмон/Монарх (наблюдаемость в масштабе): предшественник решения для наблюдаемости, Datadog
  • Поиск кода (поиск кода в больших кодовых базах): предшественник поставщика услуг поиска кода Sourcegraph
  • Piper (система контроля версий в масштабе Google): предшественник лидера в области контроля версий, GitHub

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

«Благодаря Google все работает так хорошо. Поскольку весь технологический стек разработан внутри компании, каждая система имеет встроенную прозрачную интеграцию с корпоративной системой аутентификации и авторизации, а также с «волшебной» системой выставления счетов.Внешние средства всегда должны:Предоставлять абстракции аутентификацииПредоставлять абстракции выставления счетовЭти два ограничения делают внедрение новых инструментов действительно чертовски сложным!”

С самого начала создавайте системы по-разному

С момента своего основания компания Google отличалась от других компаний в сфере разработки.С самого начала, в 1998 году, компания делала ставку на скорость и надёжность как отличительные черты всех своих продуктов. Они рассчитывали, что инструмент веб-поиска справится с нагрузкой планетарного масштаба, как и последующие продукты, такие как Gmail, который в 2004 году был запущен с 1 ГБ бесплатного хранилища. Это было неслыханно в то время, когда хранение данных стоило гораздо дороже. Предполагалось, что эти продукты должны были быть рассчитаны на миллиарды пользователей.

Чтобы достичь такого масштаба, Google с самого начала пришлось создавать собственный технологический стек, поскольку не существовало готовых технологических стеков, способных справиться с нагрузкой планетарного масштаба. В конце 90-х общепринятой практикой было вертикальное масштабирование машин, то есть покупка максимально мощного сервера (называемого мейнфреймом) и попытка запустить приложение на одном сервере. Компания Sun была одним из крупнейших производителей мейнфреймов того времени, и большинство компаний вкладывали значительные средства в дорогостоящее высокопроизводительное оборудование.

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

Вот как работал поисковый кластер Google в 2003 году, согласноофициальному документу Googleописывающему архитектуру кластера Google:

«Чтобы обеспечить достаточную пропускную способность для обработки запросов, наш сервис состоит из нескольких кластеров, распределённых по всему миру.В каждом кластере насчитывается несколько тысяч машин, а географически распределённая система защищает нас от катастрофических сбоев в работе центров обработки данных (например, вызванных землетрясениями или масштабными отключениями электроэнергии).Система балансировки нагрузки на основе DNS выбирает кластер с учётом географической близости пользователя к каждому физическому кластеру. Система балансировки нагрузки минимизирует время обработки запроса пользователя, а также учитывает доступную пропускную способность в различных кластерах.

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

«Топология центра обработки данных Google:

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

Необычная открытость

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

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

«Политика открытости по умолчанию» начала меняться примерно в 2019–2020 годах. Именно тогда Google начал заниматься более спорными темами, и в прессу стало чаще попадать конфиденциальные документы.По умолчанию доступ к внутренним документам Google Docs был открыт для всех сотрудников компании. Примерно с 2019–2020 годов доступ по умолчанию предоставляется только на уровне подразделения, то есть вы можете искать документы только в своём подразделении, а не во всём Google.

Внешне Google опубликовал более 10 000 статей с подробным описанием того, как работает компания и как создаются продукты. Ни одна другая компания не публиковала столько информации о своей внутренней работе.

Как известно, в 2017 году компания Google опубликовала статью под названием «Внимание — это всё, что вам нужно», в которой описывалась новая сетевая архитектура под названием «трансформеры». Эта статья легла в основу больших языковых моделей (БЯМ), и эта идея лежит в основе ChatGPT и других БЯМ. Опубликовав эту статью вместо того, чтобы придержать свой прорывной метод, компания Google, возможно, ускорила развитие ИИ на несколько лет!

Технологический остров

В Google всё, что связано с разработкой программного обеспечения, уникально. Новички могут забыть о том, как использовать систему контроля версий, как запускать CI/CD и как управлять инфраструктурой. В Google используются разные уникальные системы для всего, что связано с созданием, развертыванием и поддержкой программного обеспечения, и всему этому нужно учиться.

Термин «технологический остров» был придуман Урсом Хёльцле, восьмым сотрудником Google, во внутреннем документе почти десять лет назад. Как рассказал нам бывший сотрудник Google:

Термин «технологический остров» впервые был использован Урсом Хёльцле много лет назад в его докладе о том, что уникальный технологический стек Google (он же «жизнь на собственном технологическом острове») может стать проблемой в долгосрочной перспективе. В своём докладе он утверждал, что нам следует искать способы приблизиться к «технологическому материку», а не продолжать существовать на нашем собственном острове.В начале 2000-х подход «по-гугловски» был преимуществом. Но по мере того, как отрасль развивалась и появлялись новые технологии с открытым исходным кодом, этот «технологический остров» начал негативно влиять на производительность. Например, новым сотрудникам Google требуется больше времени на обучение по сравнению с компаниями, которые используют «стандартные для отрасли» технологические стеки.

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

«Сама идея перехода на более стандартизированный стек технологий вызывает некоторые разногласия внутри Google. Некоторые давние сотрудники Google, с которыми я общался, настолько привыкли к внутренним технологиям, что искренне считают их лучшими. Конечно, есть и те, кто придерживается противоположного мнения и пытается перевести Google на GCP, поскольку сервисы GCP общедоступны и не привязаны к Google, а значит, являются «мейнстримом». Однако все попытки провалились.В наши дни более распространена точка зрения, согласно которой Google следует использовать гибридный подход: использовать GCP и объединять его с открытым исходным кодом, когда это целесообразно. Это отличается от подхода «поднять и перенести», при котором всё переносится на более стандартный стек. Гибридный подход предполагает, что некоторые сервисы Google никогда не будут работать без внутренних технологий.”

Делаю много вещей

По сравнению с такими компаниями, как Meta и Amazon, Google создаёт множество продуктов, платформ и технологий.

  • Поисковая система: основной продукт
  • Операционные системы: Android и ChromeOS
  • Браузер: Chrome
  • Аппаратное обеспечение: устройства Pixel и ноутбуки ChromeOS
  • Облачный провайдер: Google Cloud
  • Корпоративные инструменты: Google Документы и Google Meet
  • Платформа для контента: YouTube
  • Сервис потоковой передачи музыки: YouTube Music
  • Инструменты разработчика: Flutter, Firebase
  • Языки программирования и открытый исходный код: Go, Kubernetes, Angular, PyTorch и другие

Крупнейшая технологическая компания, наиболее близкая к Google по широте ассортимента продуктов, — это, вероятно, Microsoft. У производителя Windows также есть поисковая система (Bing), операционная система (Windows), браузер (Edge), аппаратное обеспечение (Surface), облачный провайдер (Azure), корпоративные инструменты (Office 365, Microsoft Teams), социальные сети (LinkedIn, GitHub), инструменты для разработчиков (VS Code) и языки программирования / открытый исходный код (TypeScript, .NET и другие).

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

У Google более 120 активно разрабатываемых продуктов

3. Уровни и роли

В Google есть карьерная лестница с двумя направлениями для инженеров-программистов и технических руководителей, а также интересная должность под названием «технический ведущий менеджер» (Tech Lead Manager, TLM). На каждом уровне, как правило, одинаковая общая сумма вознаграждения (подробнее о вознаграждении мы расскажем в следующем разделе).

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

Инженерные уровни Google: IC, менеджер и TLM

Мы опубликовали подробный обзор сходств и различий между ролями IC, менеджера и TLM в инженерных карьерных траекториях в крупных технологических компаниях и стартапах.

Карьера программиста

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

В Google самые строгие требования к уровню подготовки на собеседованиях. Новых инженеров часто понижают в должностикогда они приходят: например, старший инженер в Amazon может получить должность L4 (старший инженер III уровня), а штатному инженеру в быстрорастущей компании могут предложить должность L5 (старший инженер) в Google. Обычно это происходит по двум причинам:

  • Комитет по найму Google принимает решения о найме и повышении в должности, и понижение в должности встречается гораздо чаще. Компания скорее наймёт человека, у которого есть потенциал для роста, чем возьмёт того, кто не справится с работой.
  • Google платит больше, чем в среднем по рынку. Даже при понижении в должности предложение от Google часто означает повышение зарплаты. Если есть предложение с более высокой зарплатой на должности, с которой будет проще перейти на следующий уровень, то почему бы не согласиться?

Подробнее о понижении и повышении уровня мы рассказываем в выпуске «Американские горки» стажа.

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

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

Стать научным сотрудником Google очень сложно. В настоящее время в компании работает не более 20 научных сотрудников Google из 60 000 инженеров; на этом уровне находятся менее 0,1 % всех инженеров Google. В некотором смысле это логично: перейти на следующий уровень после уровня L6 (штатный сотрудник) становится экспоненциально сложнее, поэтому логично, что сотрудников уровня L7 гораздо меньше, чем сотрудников уровня L6, а сотрудников уровня L8 — ещё меньше, чем сотрудников уровня L7, и т. д.

Среди известных сотрудников Google Урс Хёльцле (инженер № 8 и первый вице-президент Google по инженерным вопросам), Амит Сингхал (возглавлял Google Search в течение 15 лет) и Блейз Агуэра-и-Аркас (технический директор по технологиям и обществу).

В Google всего два старших научных сотрудника (на уровне L11): Санджай Гхемават и Джефф Дин. Эта пара внесла огромный вклад в создание масштабируемой и отказоустойчивой инфраструктуры Google, в том числе написав MapReduce. The New Yorker рассказывает об их истории в статье «Дружба, которая сделала Google огромным».

Роль Ведущего технического менеджера

Должность технического руководителя появилась в Google раньше, чем в других компаниях, таких как Uber, была введена аналогичная должность. Это сочетание функций индивидуального разработчика и менеджера, при котором индивидуальный разработчик уровня L6 или выше принимает на себя ответственность за 4–6 непосредственных подчиненных и получает должность «технического руководителя».

По словам технических руководителей Google, логика этой роли такова:

  • Многие инженеры Staff+ (на уровне L6 и выше) не хотят становиться менеджерами на полную ставку или руководить большими командами
  • Тем не менее многие из них — отличные технические руководители
  • Для проектов, в которых задействована небольшая команда — максимум 5–6 человек, — почему бы не создать «гибридную» руководящую должность? Технический руководитель L6+ фактически выполняет функции менеджера
  • Ограничение: команда не может состоять более чем из 6 человек
  • В качестве отдельной роли TLM учитывает, что они занимаются некоторыми аспектами управления персоналом и не могут выполнять столько же работы, как коллеги, не имеющие отчетов

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

«Я не видел, чтобы TLM использовались так же широко, как в Google. На позициях TLM обычно работают самые сильные специалисты, управляющие небольшими командами. Цель состоит в том, чтобы выпускать продукт быстрее и с меньшими бюрократическими проволочками. Например, у меня был TLM уровня L7, и я видел, как TLM уровня L8 управляют командами из 4–6 специалистов.Эти TLM, как правило, являются оченьталантливыми специалистами, которые хотят работать очень быстро с очень небольшой командой. Роль TLM также довольно распространена в исследовательских проектах».

Самый большой недостаток роли TLM заключается в том, что продвигаться по карьерной лестнице в этой должности сложно. На уровнях IC и менеджер достаточно чётко обозначены требования для перехода на следующий уровень. Но инженер, занимающий должность TLM, может рассчитывать на то, что останется на этом уровне до тех пор, пока он занимает эту должность. Это ещё одна причина, по которой эта должность больше подходит для специалистов IC уровня 7+, которые не ожидают — и даже не хотят — повышения.

Карьерный рост менеджера

Менеджеры по инжинирингу отвечают за продуктивность, эффективность и удовлетворённость своих подчинённых. Наиболее распространённое соотношение между менеджером и инженерами — от 1:8 до 1:12. В крайних случаях это может быть всего 3 подчинённых или около 30. Чем больше число, тем меньше внимания менеджер может уделять каждому подчинённому и тем выше риск выгорания.

В обязанности технических руководителей входит:

  • Обучение инженеров для их профессионального роста
  • Содействие карьерному росту сотрудников
  • Управление эффективностью: пройдите процедуру GRAD (Google Reviews and Development)
  • Участвуйте в найме сотрудников и обсуждении вопросов оплаты труда. Чем выше должность технического руководителя, тем больше у него возможностей для участия. Директора и вышестоящие руководители часто имеют больше прав при обсуждении вопросов оплаты труда

Менеджеры по инжинирингу должны быть инженерами. В книге «Инженерия программного обеспечения в Google» объясняется, почему компания требует наличия инженерного образования:

«Многие компании нанимают квалифицированных менеджеров по работе с персоналом, которые могут практически ничего не знать о разработке программного обеспечения, чтобы те руководили инженерными командами. Компания Google с самого начала решила, что менеджеры по разработке программного обеспечения должны иметь инженерное образование. Это означало, что нужно было нанимать опытных менеджеров, которые раньше были инженерами-программистами, или обучать инженеров-программистов менеджменту».

Раньше Google гораздо меньше доверял своим техническим руководителям.Бывший штатный инженер Google рассказал нам:

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

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

Подробнее об управлении и лидерстве в Google читайте в главе «Как руководить командой» в книге «Разработка программного обеспечения в Google».

Другие роли

Помимо инженеров-программистов (SWE) и технических менеджеров, в Google есть и другие инженерные должности.

Инженеры по обеспечению надёжности сайтов (SRE) — это должность, появившаяся в Google в 2003 году. «Сайт» изначально означал «Google.com», а SRE отвечают за работу крупных сайтов и приложений. Как вспоминал Дэйв О’Коннор, один из первых SRE, о происхождении этой должности:

«В 2003 году появилась должность SRE-инженера. Бену Трейнору Слоссу было поручено создать «производственную команду» Google, и, по его собственным словам, он создал «то, что получается, когда вы просите инженера-программиста разработать операционную команду». Так в Google появилась должность SRE-инженера. С самого начала в SRE-команде в разной степени присутствовали специалисты по системам и операциям, а также инженеры-программисты. Значительная часть работы команды заключалась в создании инструментов и методов, необходимых для управления автопарком Google.

В каждой продуктовой организации есть собственная команда SRE, обычно состоящая из 30–200 специалистов. Они сотрудничают с инженерами-программистами, как описано в Как Google SRE и разработчики работают вместе:

Как SRE и разработчики сотрудничают в Google

Роль SRE была популяризирована в книге Google о SRE в 2016 году. Это бесплатная книга, которую можно прочитать здесь. Мы также подробнее рассказали о роли SRE в статье Что такое инженерия надёжности.

Другие роли, о которых стоит упомянуть:

EngProd: Функция, которая обеспечивает инженеров и команды необходимыми инструментами и средой для работы над продуктом: настройка тестовых стендов, запуск приложений, упаковка, настройка тестовых лабораторий для устройств, промежуточных сред и т. д.

Исследователи (RS). Работают вместе с SWE и занимаются исследованиями. Требования к кандидатам очень высоки, и одной докторской степени недостаточно. На самом деле в Google большинство людей с докторской степенью, которые занимаются исследованиями, — это SWE, а не RS, которые должны не только иметь внушительный список научных публикаций, но и хорошо разбираться в программировании.

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

  • Создание статей и видеороликов для инженеров
  • Выступления на конференциях и онлайн
  • Быть «нулевым клиентом»: первопроходцами и тестировщиками новинок
  • Фрикшн-логгинг (также называемый «фрикшн-ингом»): ведение блога с явной целью зафиксировать моменты трения

DevRel — это инженерная должность, а не маркетинговая; многие функции и инструменты для продуктов Google созданы DevRels.

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

UX-инженеры (UXE): это подмножество SWE и гибридная роль, в рамках которой UXE работают с командами дизайнеров и разработчиков над такими задачами, как:

  • Создание прототипов
  • Разработка интерфейса
  • Разработка дизайн-систем, например работа над Material Design
  • Разработка фреймворка пользовательского интерфейса

Недостаток работы UX-дизайнером в Google по сравнению с работой SWE-инженером заключается в том, что внутри компании гораздо меньше возможностей для карьерного роста, потому что вакансий SWE в 10 раз больше, чем вакансий UX-дизайнеров.

Инженер по продажам (SE), инженер по работе с клиентами (CE), инженер по техническим решениям: эти должности чаще встречаются в подразделении Google Cloud. Инженеры по продажам работают с клиентами GCP и обычно участвуют в процессе продаж. Инженеры по работе с клиентами взаимодействуют с отделами продаж, клиентами и продуктовыми командами и выполняют функции, аналогичные инженерам с расширенным доступом (FDE). Инженеры по техническим решениям часто работают с крупными клиентами, в том числе из государственного сектора, выполняя функции, аналогичные функциям инженеров с расширенным доступом. Подробнее о FDE мы рассказали в выпуске Кто такие инженеры передового базирования и почему они так востребованы?

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

Вы можете просмотреть все открытые вакансии Google на сайте вакансий.

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

  • Менеджеры по продукту: они работают с разработчиками, чтобы убедиться, что нужная вещь будет создана.
  • Менеджеры программ: похожи на менеджеров по продукту, но они управляют проектами, процессами или операциями.
  • Менеджеры технических программ (TPM): выполняют те же функции, что и менеджеры программ, но обладают дополнительными техническими знаниями. Ранее мы рассказывали о том, чем занимаются TPM и чему инженеры-программисты могут у них научиться.
  • Дизайнеры: существует множество разновидностей этой профессии: UX-дизайнеры, UI/визуальные дизайнеры, моушн-дизайнеры, исследователи пользовательского опыта, UX-исследователи (UXR), менеджеры программ дизайна (DPM) и разговорные дизайнеры (CUI)
  • Технические писатели: создают документацию и примеры кода, которые публикуются на страницах для разработчиков, например на Android, в облаке и т. д.

4. Компенсация

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

Будучи менеджером в Uber, я столкнулся с такой ситуацией, когда мы набирали сотрудников в новый офис в Бангалоре, Индия. Кандидаты, которым мы предлагали работу, а также Google, почти всегда выбирали не Uber. Дело в том, что, когда они сообщали Google о нашем предложении, компания просто добавляла 10%, чтобы перебить наше предложение.

Структура компенсации

Компенсационный пакет состоит из нескольких компонентов:

  • Базовая зарплата.Годовая компенсация выплачивается раз в две недели в США и Канаде и ежемесячно в Европе. Это фиксированная сумма, на которую не влияют никакие факторы, связанные с эффективностью работы.
  • Акции / паи. При трудоустройстве в Google вы получаете новый пакет акций, которые распределяются в течение 4 лет. 33 % распределяются в первый год, 33 % — во второй, 22 % — в третий и 12 % — в четвёртый. После распределения акций их можно продать в любое время или оставить у себя.
  • Бонус за трудоустройство. Не предоставляется каждому новому сотруднику, но более опытные сотрудники (L5 и выше) могут договориться о единовременной выплате денежного бонуса при трудоустройстве в Google. Бонус выплачивается в течение первых месяцев работы, но может быть возвращен, если сотрудник уволится в течение двух лет.

В конце года бонусы выплачиваются как наличными, так и в виде акций:

  • Денежный бонус. При выполнении плановых показателей выплачивается целевой денежный бонус. Если показатели выше или ниже плановых, размер бонуса может варьироваться.
  • Повторное распределение акций. В конце года, если ожидания по результатам работы оправдались, обычно проводится повторное распределение акций наряду с выплатой денежного бонуса. Повторное распределение акций происходит в течение 4 лет с шагом в 25 %.

Общая сумма вознаграждения (ОСВ) представляет собой сумму базового оклада + денежного бонуса + выплаченного акционерного капитала.

Типичные компенсационные пакеты L3 и L4

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

Разработчик начального уровня: 160 000–250 000 долларов в США, и пропорционально меньше в других регионах. Должность L3 в Google — это должность начального уровня. Компания нанимает выпускников и специалистов с опытом работы от нескольких лет.

Реальные предложения от Google. Источник большинства данных: Levels.fyi, вознаграждение Google L3

Вознаграждение в Google зависит от местоположения. Компания выплачивает вознаграждение высшего уровня в рамках тримодальной модели вознаграждения. Однако компания корректирует пакеты вознаграждения в зависимости от местоположения и гарантирует, что выплачивает больше, чем региональные конкуренты. Однако, если посмотреть на пакеты вознаграждения L3, становится ясно, что общая сумма вознаграждения в США и Швейцарии значительно выше, чем в других регионах.

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

L4 — это средний уровень, который всё же ниже уровня старшего SWE (L5). Типичные диапазоны для этого уровня:

  • США: 250 000–350 000 долларов (общая годовая компенсация)
  • Швейцария: 210 000–260 000 швейцарских франков
  • Великобритания: от 125 000 до 185 000 фунтов стерлингов
  • Германия и Ирландия: 140 000–180 000 евро
  • Канада: 210 000–280 000 канадских долларов
  • Австралия: 200 000–280 000 австралийских долларов
  • Польша: 380 000–450 000 злотых в Польше,
  • Индия: 65–88 лакхов

Компенсация старшим SWE (L5) и штатным SWE (L6)

Старший специалист по SWE может зарабатывать в США до 500 000 долларов. На этом уровне опционы становятся более значимыми по сравнению с базовой зарплатой. На уровне старшего специалиста (L5) вознаграждение значительно увеличивается за счёт пакетов опционов. Обычно при получении предложения можно договориться об опционах, но имейте в виду, что они могут быть намного ниже или — в удачных случаях! — выше, чем в предложениях ниже:

Реальные компенсационные пакеты в Google, в том числе для сотрудников с большим стажем. Источник: Levels.fyi, Пакеты L5 в Google

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

  • США: $550,00–700,000
  • Швейцария: 370 000–500 000 швейцарских франков
  • Великобритания: от 270 000 до 380 000 фунтов стерлингов
  • Германия и Ирландия: 250 000–330 000 евро
  • Канада: 420 000–650 000 канадских долларов
  • Австралия: 350 000–550 000 австралийских долларов
  • Польша: 750 000–850 000 злотых в Польше,
  • Индия: 1,5–2,2 миллиона рупий

Работа на миллион долларов: старший специалист SWE

Должность L7 (старший штатный инженер-программист) — это самая низкая должность, на которой некоторые специалисты в США могут зарабатывать более 1 млн долларов в год — обычно в районе залива Сан-Франциско. Компенсационные пакеты в значительной степени зависят от акций: размер пакета определяется первоначальным грантом и дополнительными выплатами. В США на таких должностях почти всегда платят больше 600 000 долларов, и разброс становится очень большим.

Фактические компенсационные пакеты в Google. Источник данных: Levels.fyi, Пакеты L7 в Google

В Google достаточно сложно получить должность L6, а продвинуться по карьерной лестнице до L7 ещё сложнее. Чтобы получить эту должность извне, кандидатам обычно нужно долгое время проработать на аналогичной должности в другой крупной технологической компании, добиться влияния в отрасли или получить признание в конкретной области. В настоящее время специалисты по машинному обучению и искусственному интеллекту получают более высокие зарплаты, поскольку на эти должности сложнее найти кандидатов, чем на «традиционные» должности SWE.

В небольших офисах очень сложно получить должность уровня L6+. Должности уровня L7 в основном встречаются в США и в крупных офисах, например в Швейцарии. В таких офисах, как Бангалор, таких должностей очень мало, а в небольших офисах часто нет должностей уровня L7 и выше. Должности уровня L8 обычно встречаются в крупных офисах в районе залива Сан-Франциско, Нью-Йорке, Сиэтле и Лос-Анджелесе, а также в Швейцарии.

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

Большинство компаний требуют, чтобы инженеры становились менеджерами или старшими менеджерами, чтобы получать такое же вознаграждение, как инженеры уровня L6 и выше в Google. Это можно назвать «золотыми наручниками», потому что инженеру уровня L6+ в Google сложно найти место, где он мог бы работать как индивидуальный специалист, не согласившись на значительное снижение зарплаты!

Бонусы для коллег, разовые бонусы, программы поощрения

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

Премии от коллег — это небольшие награды, на которые вы можете номинировать коллег. Сумма варьируется в зависимости от региона: около 200 долларов за номинацию в США и Цюрихе. Премии используются для того, чтобы сказать «спасибо» за хорошую работу. Сумма довольно небольшая, но особенность в том, что она исходит от коллег! И она может накапливаться: если вы получаете одну такую номинацию в месяц от коллеги, которому помогаете, то это около 2400 долларов в год. Как объяснил нам один из нынешних инженеров-программистов:

«Премии для коллег используются часто, и вы можете выплачивать до пяти таких премий в квартал. Обычно это делается, например, так: «Спасибо, что отвлеклись от своей обычной работы и помогли мне вчера исправить эту ошибку!»

Существуют разумные ограничения на получение бонуса: каждый инженер может выплатить до пяти бонусов коллегам в течение квартала и не может назначать одного и того же человека на несколько кварталов подряд. Во многих крупных компаниях есть внутренние системы, позволяющие сотрудникам благодарить друг друга (так, чтобы это видел их руководитель), но микробонусы в виде наличных — это уникальная особенность Google!

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

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

5. Прием на работу

В процессе найма сотрудников в Google есть уникальные элементы: алгоритмические собеседования, «гугловость» и подбор команды.

Алгоритмические интервью

Google, вероятно, стал первопроходцем в области алгоритмических собеседований, которые мы называем «LeetCode-интервью».

Цикл собеседований в Google для инженеров-программистов почти всегда включает в себя написание кода, то есть решение алгоритмической задачи за 30–60 минут. Этот тип собеседования часто называют собеседованием по структурам данных и алгоритмам (DSA).

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

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

Книга «Как пройти собеседование по программированию» была написана бывшим инженером-программистом Google Гейл Лаакманн Макдауэлл, чтобы помочь инженерам подготовиться к алгоритмическим собеседованиям. Книга переиздавалась шесть раз, а также было выпущено продолжение, «Как пройти собеседование по программированию. Часть 2». Ведущий автор Майк Мроцка поделился в этом информационном бюллетене советами о том, как опытные инженеры справляются с трудностями во время собеседований по программированию.

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

  • Достаточно хорошая эвристика. Инженеры, которые успешно проходят такие собеседования, обычно хорошо пишут код. С другой стороны, кандидатам очень сложно показать себя с лучшей стороны, если их навыки программирования слабы.
  • Легко масштабируется для новых интервьюеров. В Google работают десятки тысяч инженеров, которые проводят собеседования, и каждый год к ним присоединяются тысячи новых специалистов. По этой причине необходим процесс, в который легко вовлечь людей, чтобы даже новые интервьюеры могли достаточно хорошо оценивать кандидатов.
  • Легко заменить утекшие вопросы. В масштабах Google утечка вопросов во внешний мир — это обычное дело. Поэтому необходим процесс собеседования с банком из тысяч взаимозаменяемых вопросов.
  • Можно сделать за час. Собеседования не должны затягиваться, а процесс, который занимает несколько дней или недель, не сработает, потому что кандидаты часто работают полный день в другом месте и не могут взять несколько дней отгула, например, для испытательного срока.

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

Типичный процесс собеседования

Вот как проходит типичное собеседование с инженером-программистом в самой прибыльной компании мира:

Чтобы получить предложение о работе инженером-программистом в Google, нужно пройти несколько собеседований

Каждый этап сложнее и занимает больше времени, чем предыдущий. Собеседование на месте обычно состоит из 2–3 последовательных собеседований, перерыва на обед и ещё 2–3 собеседований. Термин «собеседование на месте» связан с тем, что раньше Google привозил кандидатов «на место» в офис. С 2020 года большинство собеседований на месте проводятся по видеосвязи в Google Meet. Есть признаки того, что Google начинает возвращать очные собеседования для некоторых собеседований, но на момент публикации большинство собеседований проводится по видеосвязи.

«Гугловость» — это гугловская версия «соответствия корпоративной культуре». В своей книге Work Rulesбывший вице-президент Google по работе с персоналом Ласло Бок даёт следующее определение:

«Гугловость» включает в себя такие качества, как интеллектуальная скромность, добросовестность, терпимость к неопределённости и склонность к сотрудничеству. Она воплощает в себе соответствие корпоративной культуре, которое Google ищет не только в технических навыках».

Ветеран Google Энди Майло работает там уже 15 лет и определяет «гугловость» следующим образом:

«За годы работы здесь я понял, что в Google есть множество составляющих. Если бы мне нужно было выделить три наиболее важных аспекта, я бы сказал следующее:
  1. Ставя пользователя на первое место
  2. Мышление в 10 раз
  3. Всегда поступаю правильно.

Я думаю, что, ориентируясь на эти три принципа, мы сможем помочь миру достичь невероятных высот».

«Гуглистость» обычно сводится к демонстрации таких качеств, как:

  • Любопытство
  • Будьте скромны и открыты для обратной связи
  • Доводить дела до конца
  • Поступаешь правильно
  • Поддержание высоких стандартов
  • Наличие новых идей

Для уровней L5 и выше также проводится оценка лидерских качеств. В руководстве, которое Google разослал менеджерам по продуктам, содержатся советы по проведению собеседований на Googleyness и Leadership:

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

Этот совет предназначен для менеджеров по продукту, но также применим к старшим инженерам и техническим руководителям.

Подробнее о процессе найма мы рассказываем в подробных обзорах Найм инженеров-программистов и Найм технического директора.

Подготовка к собеседованиям в Google

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

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

Руководство Google по подготовке к собеседованию

Технический скрининг, структуры данных и алгоритмы: Существует бесчисленное множество книг, видео и онлайн-курсов по подготовке к собеседованиям в стиле LeetCode:

Проектирование систем: это ещё одна область, которая была тщательно задокументирована.

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

Собеседование на тему Google и лидерства: разберитесь в ценностях Google, кратко опишите свой опыт и достижения, чтобы привести лучшие примеры во время собеседования, и ознакомьтесь с советами по проведению поведенческих собеседований, такими как метод STAR. Это собеседование довольно типично для «собеседования с менеджером по найму». Большинство кандидатов испытывают трудности на технических собеседованиях, а не на этом.

Приёмная комиссия (ПК)

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

  • Сильный найм (SH)
  • Прокат (H)
  • Бережливый наем (LH)
  • Бережливое увольнение (LNH)
  • Без проката (NH)
  • Strong No Hire (SNH)

На этом этапе специальная комиссия по найму рассматривает отзывы и принимает решение о найме. Гейл Лаакманн Макдауэлл описала этот процесс в выпуске 2016 года Cracking The Coding Interview:

«Письменный отзыв передается в комитет по найму (КН), состоящий из инженеров и менеджеров, для вынесения рекомендации о найме/отказе в найме. Отзыв обычно разбивается на четыре категории (аналитические способности, программирование, опыт и коммуникация), и вам выставляется общая оценка от 1,0 до 4,0. В состав КН обычно не входят ваши интервьюеры. Если это происходит, то исключительно по воле случая.Чтобы продлить предложение, HC хочет видеть хотя бы одного интервьюера, который является «энтузиастом и сторонником». Другими словами, пакет с баллами 3,6, 3,1, 3,1 и 2,6 лучше, чем пакет со всеми баллами 3,1.Вам не обязательно блистать на каждом собеседовании, а качество экрана вашего телефона обычно не является решающим фактором при принятии окончательного решения.Если комиссия по найму рекомендует принять вас на работу, ваше резюме будет передано в комиссию по компенсациям, а затем в комиссию по управлению персоналом. Принятие решения может занять несколько недель, поскольку процесс состоит из множества этапов и комиссий.

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

Подбор команд и срок действия пакетов

После того как комиссия по найму принимает решение о «приеме на работу», предложение о работе поступает не сразу. Успешному кандидату сначала нужно найти команду, которой он нужен. До 2023 года этот процесс был довольно быстрым, потому что Google постоянно расширялся, а команды нуждались в новых сотрудниках. Однако сегодня подбор команды становится препятствием, из-за которого некоторые рекомендации о «приеме на работу» остаются без внимания. Как мы сообщали в The Pulse:

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

После одобрения комитетом по найму следует годичный период, в течение которого команда должна «заявить» права на успешного кандидата, прежде чем ему будет сделано предложение. Поскольку подбор команды становится всё более сложной задачей, стоит знать, что существует крайний срок, до которого вы должны занять своё место в компании. В недавнем посте на Reddit внешний кандидат уровня L4, проходивший собеседование в Google, пожаловался, что получил один отзыв «Strong Hire», два отзыва «Hire» и один отзыв «Lean Hire», а также общую рекомендацию «Hire» от комитета. Но, несмотря на эти заслуги, они не получили ни одного предложения. Один из комментаторов предположил, что это произошло из-за отсутствия интереса со стороны команд, написав:

«Менеджеры по найму просто не проявили к вам интереса. После сокращения штата в Google стало очень распространённым явлением, когда кандидат «проходит» собеседование, но не получает предложения о работе. У вас есть год, чтобы найти работу в команде, прежде чем истечёт срок действия вашего пакета документов для собеседования».

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

«Фундаментальное отличие от других компаний заключается в том, что Google проводит подбор персонала в масштабах всей компании, а не в рамках отдельных команд. Google нанял вас, и вы попали в команду. Это значит, что люди, которые проводили собеседование с вами, могли больше никогда вас не увидеть, менеджер команды не проводил собеседование с людьми, которые присоединялись к команде, и т. д.»Предполагалось, что такой подход приведёт к повышению стандартов. Когда руководителю действительнонужно кого-то нанять, он может быть готов снизить требования к кандидату, чтобы нанять его сейчас, а не ждать несколько месяцев.Недостаток такого подхода в том, что, когда вы присоединяетесь к команде, вы ещё не знаете, в какую команду попадаете. Обычно люди принимали предложение Google, а в первый рабочий день узнавали, в какой команде они работают. Люди, у которых были чёткие предпочтения в отношении команд, иногда просто не принимали предложение Google.Плюсами были более доверительные отношения между командами и внутренняя мобильность. В такой компании, как Microsoft, чтобы перейти в другую команду, нужно было пройти повторное собеседование, потому что в каждой команде были свои стандарты найма, и команды не доверяли друг другу. В Google, если вы хотите перейти в другую команду, собеседование не требуется.

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

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

Выводы

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

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

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

Перевод: https://newsletter.pragmaticengineer.com/p/google