Гайд для разработчиков по собеседованиям в крупнейшие американские ИТ-компании

Читатель ЦП Иван Богатый на основе своего опыта написал инструкцию о том, как проходить собеседования в Google, Facebook, Microsoft и другие американские ИТ-компании — от написания резюме до обсуждения зарплаты.

Гайд для разработчиков по собеседованиям в крупнейшие американские ИТ-компании

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

Спустя несколько месяцев подготовки, долгие дни собеседований (которые, впрочем, были гораздо более интересными, чем напряженными) и ночи в шикарных корпоративных отелях у меня были офферы от Google и Facebook (у Microsoft, увы, в тот момент был hiring freeze), а также, по случайному стечению обстоятельств, от одного из топовых Нью-Йоркских хэдж-фондов, занимающихся алгоритмическим трейдингом.

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

Опирается она на мои впечатления от собеседований c Google, Facebook, парой алгоритмических хэдж-фондов в Лондоне и Нью-Йорке, а также «Яндексом» и Microsoft Research (мои два предыдущих места работы). Многое подсказывали друзья и знакомые, прошедшие тот же процесс.

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

Резюме

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

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

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

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

Довольно обширный массив советов (в том числе и от рекрутеров, которые эти резюме читают) находится поиском на Quora, более краткий можно посмотреть тут. Удивительно, что об этом нужно говорить, но зарегистрируйте приличный email (пока не увидел своими глазами, не поверил бы, что люди из топовых вузов оставляют в резюме адреса вида kingofnerds@yahoo.com) и не делайте орфографических ошибок. Помимо этих базовых советов — вместо того, чтобы тратить усилия на полировку резюме, этот этап нужно просто проскочить.

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

  1. Однозначно лучший источник задач для подготовки — книжка Cracking the Coding Interview by Gayle Laakmann McDowell (предпоследнее издание несложно найти поиском, хотя я рекомендую честно купить последнее). Автор работала в нескольких крупных компаниях (Google, Microsoft, Apple) и провела огромное количество собеседований. Книга особенно хороша тем, что задачи разбиты по темам (покрывающим более-менее все типы задач, которые я встречал), и к каждой есть решение.

    Начальная подготовка у всех разная, но к собеседованию нужно уметь решать абсолютно все. Лично мне (как и многим олимпиадникам) более-менее все алгоритмические задачи казались тривиальными, зато было полезно почитать стандартные решения в systems design and scalability. Возможно, у кого-то будут противоположные трудности. Cоветую не лениться и прорешать книгу от начала до конца. Один знакомый, которому я дал этот совет, возразил, что ему жаль тратить на такую ерунду неделю своей жизни. С моей точки зрения, разница между крутой работой в сильной команде и средненьким проектом может вылиться в годы жизни. Более прагматично, парень вполне мог получить оффер тысяч на 5-10 долларов в год больше, если бы сделал меньше ошибок на собеседовании.
  2. К книжке прилагается сайт, там люди постят вопросы, которые им задавали на реальных интервью. Можно прорешивать задачи с собеседований той конкретной компании, куда вы хотите.
  3. Все на том же сайте можно пройти тестовое интервью за $150, получив после этого подробную обратную связь. Думаю, это отличное вложение денег. Более простая альтернатива — начать собеседования с компаний, которые вам менее важны, чтобы потренироваться. «Первый блин комом», и потренироваться очень важно, особенно если опыта собеседований нету вообще.
  4. Если и этого будет мало, есть еще geeksforgeeks.org (задачи там хорошие, но люди часто постят неверные решения, верить им не надо). Очень рекомендую также topcoder.com/tc и codeforces.com (на этих сайтах нужно поразбираться, как отсылать свои решения в систему, зато потом оценка верно/неверно дается автоматически).
  5. Еще есть projecteuler.net — этот сайт мне порекомендовал для практики рекрутер из Google, но там скорее математические задачи, которые попадаются на собеседованиях значительно реже.
  6. Крутая статья от человека, который уже много лет собеседует в Google, и YouTube-видюшка — рекомендации моего рекрутера из Google.

Насколько серьезно стоит готовиться? Думаю, отвести пару месяцев на подготовку — не перебор. Иначе в запасе будет как минимум год до следующей попытки.

Переговоры и подписание оффера

Вот мы и подошли к самой интересной части. Зарплаты талантливых программистов в Долине начинаются от $100 тысяч в год (сразу после вуза), и разница в зарплате людей с примерно одинаковыми способностями может достигать $10-20 тысяч в год в зависимости от разных случайных обстоятельств. Поэтому при правильном поведении те несколько часов, которые вы решитесь потратить на переговоры о зарплате, скорее всего будут самыми высокооплачиваемыми в вашей жизни.

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

В связи с этой спецификой большая часть советов, которые можно прочитать о переговорах в интернете — полная ерунда. Например, один из самых частых советов в статьях о переговорах за зарплату — не называть сумму первым (пример). В нашем случае это самая грубая ошибка, которую можно сделать (для более подробного объяснения советую почитать этот ответ на Quora от бывшего рекрутера Google). У ИТ-компаний в Долине есть стандартная лесенка «технических уровней», по которым классифицируют инженеров, с соотвествующими вилками зарплат. Этот механизм позволяет компаниям не платить больше, чем нужно, а также не разгонять конкуренцию за сотрудников между компаниями (некоторые из этих методов, кстати, расследовались антимонопольными органами США). Короче говоря, вероятность приятного сюрприза довольно мала. Если молчать, гораздо вероятнее получить оффер на уровне или слегка ниже ожиданий, и исправлять это постфактум будет сложнее.

Какова же правильная стратегия? Во-первых, насколько возможно точно определить сумму ожидаемого оффера исходя из ваших навыков (Glassdoor и сарафанное радио в помощь). Во-вторых, попросить чуть больше. Например, почти всем выпускникам вузов без опыта работы Google предлагает одну и ту же сумму, пусть это будет X. Если на вопрос рекрутера «Сколько вы ожидаете получать?» многозначительно промолчать, то ровно X вам и предложат. Но если вы отлично прошли собеседование и считаете, что выделяетесь даже среди тех, кого берут в Google — можно заранее попросить 1,05Х, и шансы гораздо выше. По неизвестным причинам поднять количество акций значительно проще, чем базовую зарплату, поэтому если нет разницы — начинайте с этого.

Но, вообще, единственная реально работающая точка опоры — офферы от других компаний. BATNA, все дела. В таких случаях уже вполне реальны скачки X→1,2X и больше. Для русского менталитета такой «аукцион» может показаться недопустимым или по крайней мере скользким поведением, однако в США это норма и обижаться на вас не будут. Более того, рекрутеры обычно напрямую спрашивают, какие еще компании вы рассматриваете, и сколько они вам предлагают. И если никто больше вас не зовет, хороший ли это признак? Шутки ради добавлю, что дейтинг в Америке работает примерно так же.

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

Краткий итог

  1. Отправляем резюме рефером через знакомых.
  2. Прорешиваем Cracking the Coding Interview.
  3. Собеседуемся в несколько компаний одновременно, даже если хотим в одну конкретную. Не боимся обсуждать зарплату.
  4. ...
  5. Профит!

Почта для связи с автором.

30 комментариев

Тут один дизайнер рассказал, как его хайрили в Apple. https://lmjabreu.com/post/700-billion/

Куча потраченного времени, но его все равно не взяли

1
Ответить

Глянул его портфолио. Радовался бы что сразу не послали. У него просто не было шансов...

1
Ответить

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

1
Ответить