На DOU.UA часто обсуждают алгоритмы и подходы к переходу в крупные компании из Кремниевой долины. Для многих работать в FAANG — мечта. Недавно редакция сайта DOU опубликовала статью одного разработчика, который анонимно поделился своей историей прохождения собеседований в Google. Представляем вам перевод этой статьи.
Я хочу поделиться своей историей провала и рассказать о марафоне продолжительностью более полугода под девизом «Пройти собеседование в Google и получить офер с суммой, в которой будет больше пяти нулей».
Хочу получить офер Google и отказаться
Сейчас я работаю лидом большой команды, сочетая обязанности People и Project Management. Код не писал уже некоторое время и вовсе не искал новую работу. Рекрутеры время от времени пытались добавляться в друзья в LinkedIn или присылали корректные личные сообщения с описанием своих вакансий.
В январе я получил сообщение от сорсера из Google с предложением пообщаться. «Хмм, а почему бы нет? Ничего не теряю», — подумал я. А еще было бы круто получить офер и отказаться!
Не скажу, что искал работу, но от мысли «хочу офер от Google» глаза загорелись.
Во время первого звонка сорсер рассказал, что они ищут человека на должность SRM (Site Reliability Engineering Manager) с возможностью релокации в Дублин. Именно в дублинcких Silicon Docks расположен один из крупнейших хабов Google в Европе.
Во время разговора специалист описал позицию и спросил, готов ли я релоцироваться. После утвердительного ответа он пояснил дальнейшие шаги. Оплату затронули поверхностно, и конкретные цифры тогда не прозвучали.
Сорсер также убедился, что я не прохожу другие интервью, и попросил сразу сообщить, если что-то изменится.
В названии должности есть два словосочетания, которые нечасто используются на территории нашей айтишечки: Site Reliability Engineer (SRE) и Engineering Manager (EM).
SRE — это симбиоз DevOps-инженера и инженера поддержки в понимании Google. SRE не только Kubernetes крутит, но и обеспечивает работоспособность сервисов, и вообще включается на ранних этапах в разработку системы (или сервиса) для реализации нефункциональных требований. Об этом есть даже отдельный сайт и несколько книг.
EM — это менеджер, который достаточно технический, чтобы делать code review и фасилитировать команду к принятию технических решений. Значительной частью задач EM является People Management. EM — это не Project Manager.
Стоит также обратить внимание на описание вакансии на сайте Google. Она поверхностная, и многие из кандидатов могут сказать, что он (или она) точно подходит! Это сделано для того, чтобы сюда направилось как можно больше специалистов, а дальше уже пойдет тщательная проработка и отсеивание.
Итак, после такого формального разговора я получил письмо с описанием трех шагов к выполнению: Apply, Googlers, Scheduling.
Первый из них — Apply — достаточно необычный шаг для украинских реалий. Сорсер попросил самостоятельно податься на вакансию. То есть как будто я сам пришел в Google, хотя меня вроде бы нашли.
Второй — Googlers — тоже не популярен у нас: нужно обратиться к людям, которые работают в Google и могут дать обратную связь о вас. Поиск в собственной сети в LinkedIn показал десять человек, я отправил контакты трех.
Последний, третий шаг самый простой — предоставить несколько вариантов времени для прохождения интервью.
Кроме алгоритма из трех шагов, в письме были документы и ссылки для подготовки к первым двум собеседованиям: code review и management fundamentals.
Во время телефонного разговора с сорсером мы договорились, что техническим собеседованием будет code review на Python. Google предлагает готовиться при помощи их гайда по стилю программирования, вспомнить или выучить алгоритмы, а также потренироваться на TopCoder, Project Euler и careercup.com.
И еще дали ссылку на YouTube, как происходит собеседование (но обещали, что оно будет адаптировано к менеджерской позиции).
Для management fundamentals рекомендовали ресурс re:Work, статью HBR и саморефлексию с выпиской примеров и поведения в различных ситуациях.
Для саморефлексии предоставили ориентировочно 15 вопросов, в частности:
- какими командами руководил,
- сколько в них было людей,
- как удавалось улучшать производительность команды,
- подходы к Career Development инженеров,
- как менеджерам оставаться связанными с технологиями.
Дополнительно в письме было пять ссылок на различные ресурсы и видео, связанные с SRE, и доступ к запароленному сайту с информацией о городах для релокации. Там собрана полезная информация о городе, стоимости жизни и налогах в Ирландии.
Круто видеть такой структурированный подход к организации собеседований. Вы понимаете, хотя, может, и не осознаете до конца, что именно вас ждет, и можете целенаправленно готовиться.
Для подготовки я взял немногим больше месяца и договорился о собеседованиях на конец марта. Готовился по рекомендациям. Для code review перечитал книгу об алгоритмах и структурах данных и прошел 50 задачек на LeetCode. Для team management проработал ресурс re:Work, а результаты саморефлексии записал в блокнот.
Конечно, пересмотрел ресурсы для вдохновения о Дублине и Ирландии — инстаграмные локации, места для собственного хобби, а также стоимость квартир, проживания и, что очень важно, темпы вакцинации!
Что касается последнего, то ситуация была странной. Информация о прививках есть на официальном сайте. Вакцинация началась в январе 2021 и по состоянию на конец марта 13% населения (637 000) получили по меньшей мере одну дозу. Для сравнения: в Украине одну дозу вакцины в то же время получили 267 000 человек.
Забегая вперед, скажу, что в мае 2021-го информация о вакцинации в Ирландии перестала обновляться. Это случилось из-за кибератаки на информационные системы здравоохранения.
Казалось бы, в Ирландии крутое IT и такие системы должны быть суперзащищенными, но есть проблема: оплата работы в государственном секторе значительно ниже, чем в FAANG.
Топовые айтишники в системе здравоохранения получают 150К евро в год, что в разы меньше, чем получает средний менеджмент в Google.
Собеседования в FAANG — это марафон или даже вторая работа
За несколько дней до интервью присылают email-чек. Мол, не забудьте, что скоро собеседование, посмотрите, как пользоваться Google Meet, и почитайте еще раз о компании.
В конце марта я прошел оба интервью и очень радовался этому. Я не только классный менеджер, но и ничего так программист! Кстати, code review был несколько проще, чем пишут в интернете, всего две задачи.
Первая — реализация стека, мы анализировали эффективность и гибкость (а если нужно добавить новую операцию, эффективно ли будет работать?).
Вторая — обработка файла (код был плохо написан, и надо было в нем покопаться).
Разворачивать красно-черные деревья не нужно (хотя я к этому был готов!). Также не было знаменитых задач о теннисных мячиках.
Работа с кодом происходила онлайн через Google Virtual Interview. Это такая себе эмуляция работы на доске, но с подсветкой синтаксиса выбранного языка программирования (других фич IDE не предусмотрено).
Во время подготовки я понял, насколько соскучился по коду и алгоритмическим задачам.
Далее началось самое худшее для меня и, пожалуй, наиболее необычное для нашего рынка — долгое ожидание обратной связи.
Полторы недели тишины. Да, я взял много времени на подготовку, но можно и быстрее реагировать! Никто никуда не спешит, то перегрузки рекрутеров и технической команды, то плохие процессы в «корпорации добра». Я впервые понял, что следующие ответы могут идти еще дольше.
После предоставления положительного ответа меня передали другому рекрутеру.
Уже во время звонка с ним я узнал, что меня рассматривают на первый уровень для SRM — L6. На уровень L5 Google не нанимает, а выращивает из собственных специалистов.
Для понимания уровней есть прекрасный сайт Levels.fyi, на котором можно посмотреть ориентировочные зарплаты различных специалистов. Так, L6 может получить офер с пятью нулями!
Следующий шаг — это еще три собеседования. Уже знакомое code review, тогда еще не известный мне non-abstract large scale design (NALSD) и leadership and Googleyness.
На этот раз для подготовки мне прислали новый и больший email. 25% письма занимали Tips for Mental Preparedness: не расстраивайся, фокусируйся на процессе, найм в Google — это взаимодействие (у нас тоже работают разные люди, у всех разный стиль и подход к собеседованию).
Для code review важно не только понимание языка программирования и основных библиотек, но и выбор структур данных, стиль, эффективность и идиоматичность кода.
Рекомендовали проработать ресурсы Hackerrank, Pramp и книгу Cracking the Coding Interview, а также книги по языку программирования. В моем случае — Fluent Python и Effective Python.
В отличие от management fundamentals, leadership-интервью предполагает ролевую игру и определение ваших действий как лидера в определенных ситуациях.
Например: «Нужно открыть новый офис в Африке» или «Вы становитесь CEO новой компании. Что будете делать, какие препятствия видите?».
К ним я готовился так, как и к предыдущим: опять LeetCode и чтение кода с ответами на задачи на GitHub, еще раз прошелся по заметкам собственной рефлексии, и, конечно, просмотрел видео на YouTube типа What Does A Google Engineering Manager Do?
А вот к NALSD нужно было готовиться с нуля. Когда впервые о нем услышал, не совсем понял, с какой стороны заходить. Помогли курсы по архитектуре, подготовка к System Design интервью (Pragmatic System Design и The Complete Design Interview Course) и общий курс по прохождению собеседования. Все это — на Udemy.
Самое удивительное — это потребность выучить на память цифры для back-of-the-envelope calculations. Например, прохождение пакета данных между дата-центрами в Нидерландах и Калифорнии и обратно занимает 150 мс. Но главный вопрос, который нужно задавать себе, — может ли мое решение масштабироваться в 10 раз?
Все три интервью были назначены на один день во второй половине мая. Отмечу, что процесс назначения собеседований затянулся на две недели. Причем я несколько раз писал в Google и спрашивал, не забыли ли они обо мне.
В доковидном мире второй этап был бы визитом в офис Google. Это был бы насыщенный день с маркерами у доски. В нынешних реалиях интервью происходят онлайн. Все собеседования были интересные, хотя и классические.
На code review анализировали код rate limiter (его корректность, эффективность и возможность тестирования) и даже немного поговорили о механических клавиатурах!
На leadership задавали вопросы в лоб: что делать CEO новой компании. Во время NALSD-интервью нужно было разработать систему централизованной обработки логов с распределенных локаций. Такие решения уже есть, но я с ними не сталкивался на практике… В течение собеседования мы нырнули в протоколы взаимодействия между серверами и рассмотрели различные варианты передачи логов. Когда пришли к сохранению данных, я уперся в SQL-решения, хотя и вспомнил о шардинге.
Все семь собеседований на Engineering Manager пройдены, но Google не для тебя. По крайней мере на этот раз
После очередных двух недель рекрутер назначил еще одну встречу. Он сообщил, что я справился с code review, а вот leadership и NALSD стоит пройти повторно. You did not quite hit the mark! Что ж, я взял еще один месяц на подготовку.
И перешел от просмотра видео к активному чтению различных курсов на Educative (Behavioral Interview, System Design Interview, Advanced System Design Interview) и материалов.
Курс Behavioral Interview предоставил еще больше вопросов для саморефлексии (всего 40-50 вопросов).
Для leadership-части я осознал, что нужно искать больше примеров на личном опыте. Google смотрит на него, а не на теорию. Поэтому я создал перечень типовых вопросов и для каждого придумал ответ («какая самая большая неудача и чему научился», «какие конфликты были и как решал» и т.п.). Ответы на вопросы я уже не записывал, но проговаривал вслух.
Непосредственно перед собеседованием я прошел имитацию System Design интервью с другом, который работает в американской компании. Это было полезно по нескольким причинам. Прежде всего это проверка себя на знание различных компонентов и декомпозиции задачи. Также определение слабых мест, например, погружение в детали и опять-таки базы данных! И терминология: Control и Data Plane я раньше не видел.
В конце июня уже с удовольствием прошел два собеседования. На NALSD нужно было разработать MMO, и здесь мы с интервьюером дошли до подсчета циклов процессора во время обработки данных.
Выдыхаю и впадаю в режим ожидания на очередные две недели. В середине июля в Google происходит hiring committee, и я получаю отрицательный ответ. В виде приятного бонуса — я прошел бы на уровень L5, но на него не берут снаружи. Также результат NALSD был значительно лучше. Я все еще прикольный менеджер и крутой инженер. На пятерочку!
Далее cooldown-период продолжительностью 12 месяцев, после которого можно попробовать еще раз. Рекрутер сказал, что есть люди, которые устроились на позицию EM с третьего раза.
Через некоторое время я получил форму обратной связи о прохождении собеседований. В форме были вопросы о взаимодействии с людьми в Google, мое впечатление о компании, а также общая оценка интервью. Большинство вопросов нужно было оценить по пятибалльной шкале.
Стоило оно того? Несомненно, да
Оглянемся назад. Первый контакт с рекрутером был в середине января, а финальный ответ «нет» я получил в середине июля. Марафон в шесть месяцев карантинной жизни.
В течение этого времени неизвестно сколько вечеров и выходных было выделено для обучения. Традиционные весенние праздники (8 марта и майские) прошли дома с книжкой и LeetCode. Дополнительно я взял на подготовку несколько дней отпуска.
В итоге: четыре курса на Udemy (1350 грн), три курса на Educative (35 USD), 60 задач на LeetCode, книга по алгоритмам на 900 страниц, изучен стиль Google для Python (4 пробела!).
Я не искал работу в Google, поэтому до начала этого марафона не совсем понимал детали процесса. Из позитивного — это возможность целенаправленной подготовки в собственном темпе. Во время этого я рефлексировал и осознал свои сильные и слабые стороны. Обратная связь помогает убедиться, что ничего не напутал. Самое главное — не впасть в уныние (а это сложно!), когда отказали. Расспросить о деталях и поблагодарить.
Также нужно быть готовым, что между собеседованиями и результатами есть двухнедельные паузы. Можно было бы сказать «nobody is perfect», но мы не знаем нагрузки на систему рекрутинга. Однако меньшим компаниям нужно этим пользоваться и быстро снимать «сливки» с рынка!
Во время подготовки я понял, куда двигаться дальше. Еще не решил, буду ли подаваться снова в Google, но работу Engineering Manager, когда сочетается управление командой и инженерные задачи, точно хочу попробовать! И для этого уже есть план действий 🙂
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]