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

Читатель ЦП Иван Богатый на основе своего опыта написал инструкцию о том, как проходить собеседования в 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 (пока не увидел своими глазами, не поверил бы, что люди из топовых вузов оставляют в резюме адреса вида [email protected]) и не делайте орфографических ошибок. Помимо этих базовых советов — вместо того, чтобы тратить усилия на полировку резюме, этот этап нужно просто проскочить.

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

  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. Профит!

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

0
30 комментариев
Написать комментарий...
Даниал Сиддики

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

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

Ответить
Развернуть ветку
Alexey Novov

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

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Вадим Жогальский

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

Ответить
Развернуть ветку
Гала Перидоловна

А как управлять командой не зная основ того, чем занимаются подчиненные? Они сами расскажут что будут делать? :)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Вадим Жогальский

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

Ответить
Развернуть ветку
Вадим Жогальский

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

Ответить
Развернуть ветку
Гала Перидоловна

При чем тут алгоритмическая подготовка? К примеру, задача стоит написать k-v storage, который будет масштабироваться на 5 дата-центров. Прийдет менеджер, который знает как управлять php разработчиками и что он сможет сделать?

Ответить
Развернуть ветку
Ashot Golovenko

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

Ответить
Развернуть ветку
Renat Badgiev

1 пункт из итогового списка - какой-то наивняк.

Ради эксперимента: Есть среди читателей ЦП сотрудники Google/Facebook/Apple, готовые передать резюме достойного программиста в HR?

Ответить
Развернуть ветку
Alexander Shibaev

Есть конечно.

Ответить
Развернуть ветку
Renat Badgiev

Предполагать и я могу))))

Я хотел чтобы этот человек отписался в треде и выразил готовность))

Ответить
Развернуть ветку
Alexander Shibaev

ну у меня есть непосредственные знакомые в двух из этих трех компаний и они читают ЦП. Что тут такого-то? Я не предполагаю, я знаю.

Ответить
Развернуть ветку
Renat Badgiev

Это великолепно!

У меня есть сомнение, что люди будут именно рекомендовать. То есть взять резюме, почитать, приложить его в письмо своей корпоративной почты и отправить в hr с комментарием "dude, you better check this out!"

Мало кто будет возиться с резюме знакомого друга старого друга.

В этом и был вопрос: есть те сотрудники (западных офисов) кто готов возиться?

Ответить
Развернуть ветку
Антон Пискунов

Я постоянно так делаю. Я конечно в Гуглах не работал, но в целом ситуация очень простая - мне или соседу-менеджеру-лиду в команду нужен разработчик и самый простой вариант это привести знакомого или знакомого знакомого. Даже знакомый знакомого знакомого - приемлимый вариант если человек адекватен. Все так хантят даже в России - не я один такой.

Ответить
Развернуть ветку
Renat Badgiev

Уверен, у Вас отличная команда!

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

Ответить
Развернуть ветку
Renat Badgiev

...ятся

Ответить
Развернуть ветку
Антон Пискунов

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

Ответить
Развернуть ветку
Konstantin Loginov

Работаю в Microsoft. Не вижу ничего дурного в описанном методе. Для сотрудников - это приличная премия, для претендентов - лишний шанс попасть в компанию. Win-Win.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Ivan Bogatyy

Так вы хотите "передать резюме" или "возиться и рекомендовать" незнакомого человека? Передать могу в том числе и я (в гугл и фб), а писать фейковую рекомендацию - конечно, нет.

Ответить
Развернуть ветку
Alexander Shibaev

А у меня нет сомнений. Вы переоцениваете проблему. Знакомый написал весьма известному в твиттере Павлу Сенько (IT'шник, работает в США давно) с просьбой помочь, тот без проблем переслал резюме. Задаться целью, найти людей и попросить переслать резюме - это мелочи по сравнению с тем, чтобы пройти собеседование что в гугл, что в майкрософт, что в эппл и переехать потом.

Ответить
Развернуть ветку
Гала Перидоловна

Не сотрудник G/F/A. Есть контакты рекрутеров в LinkedIn через которых можно отправить резюме в эти компании.
Amazon, например, откликается на резюме через форму на сайте.

Ответить
Развернуть ветку
Nikolay Ryazantsev

Иван, а расскажите пожалуйста о требованиях к возрасту. Скажем, начиная от 18 лет и до 50.
Одно дело искать работу 20-25-летнему сотруднику.
И совсем другое 35-40-летнему.
Почему-то всегда этот момент упускается, а он очень важен.

Ответить
Развернуть ветку
Ivan Bogatyy

Хороший вопрос. Мне на момент собеседований было 23, поэтому да, гайд ориентирован на junior & midlevel разработчиков. Если человека устраивает в 40 идти на эту позицию - процесс будет абсолютно тем же, дискриминация по возрасту в США запрещена и это реально работает.

Как 40-летнему устроиться в Google руководителем подразделения или distinguished engineer? Ну явно не с помощью моих советов =)

Ответить
Развернуть ветку
Ramil Galiaskarov

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

Ответить
Развернуть ветку
Nikolay Ryazantsev

А где собственно проблема?
Если вы выяснили, что человек совсем не тот за кого себя выдаёт, то вы свою работу выполнили на отлично.

Ответить
Развернуть ветку
Ilya Razenshteyn
Шутки ради добавлю, что дейтинг в Америке работает примерно так же.

Если не секрет, что имелось ввиду?

Ответить
Развернуть ветку
Berlon Berlon

Реферить знакомых в компанию где работаешь не всегда хорошая идея... в канаде, если твой зареференный человек набуровили и его уволили.. тебя в след за ним увольняют, так как ты его привел в компанию) И наоброт.. если ты привел человека и он прошел 3 месячный исптытательный срок - тебе дают премию 1000-4000 уе.

Ответить
Развернуть ветку
Alexander Konovalov

Слова нету в русском языке нет, а по теме очень интересно.

Ответить
Развернуть ветку
27 комментариев
Раскрывать всегда