Интервью с разработчиками: на что обращают внимание в Microsoft, Google, Amazon и других ИТ-компаниях
Консультант ИТ-рекрутингового агентства GMS Services Наталия Березина собрала рассказы представителей российских и зарубежных компаний, которые проводили технические интервью на позицию разработчика или проходили их в качестве кандидатов.
В нашем блоге мы пишем о том, как техническим специалистам найти хорошую работу - например, на что обращать внимание при составлении резюме. Но мало уметь хорошо продать себя - нужно в целом понимать, что интересует технические компании при поиске разработчиков. Ник Чуботариу бывший разработчик Microsoft и Amazon
Поработав в Amazon и Microsoft, где я, помимо прочего, руководил программистами и проводил интервью (в том числе с сотрудниками других технологических гигантов), могу рассказать о процессе найма разработчиков в крупных ИТ-компаниях вот что.
Сам процесс интервью во всех случаях проходит крайне похоже. Сначала идет предварительный этап телефонных собеседований, затем лучших кандидатов приглашают на собеседование в офис. Но есть и небольшие различия. В Microsoft решение о найме принимается в режиме as-app (as appropriate): в принятии решения об отказе или найме большое значение уделяется личному впечатлению интервьюеров.
Процесс найма в Amazon очень тщательный, причем на собеседованиях обращают внимания на различные поведенческие вопросы. Проводится как минимум четыре технических раунда интервью. Наниматели ожидают увидеть близкий к идеальному код: кандидатов «заворачивают» за исключение нулевых указателей, пропуск базовых классов и так далее.
Всегда проводится дебрифинг, в процессе которого анализируются все полученные о кандидате данные, и в процессе участвуют как представители HR-департамента, так и технические специалисты. Есть также общая планка виртуальных очков, которую нужно обязательно преодолеть, чтобы получить предложение о работе. Никогда не наймут того, кто хотя бы чуть-чуть до нее не дотянул.
В Facebook интервью похожи на то, как дело обстоит в Google, но обычно на них уходит поменьше времени. При этом, насколько я могу судить из разговоров с другими разработчиками, требуемый уровень знаний в Google очень близок к Amazon. То же можно сказать про Facebook, но здесь меньше внимания уделяется психологическим моментам интервью.
Краткое резюме: Amazon, Google и Facebook проводят интервью одинаково тщательно. По моему мнению, сложнее всего пройти собеседование в Amazon, но другие разработчики могут с этим не согласиться. Мое собеседование в Microsoft было не таким сложным, как в Amazon, Google или Facebook, но и легкой прогулкой его точно не назовешь. Даже попасть на собеседование в любую из этих компаний (не говоря уже о предложении работы) - нетривиальная задача. Мойше Леттвин руководитель направления Communications APIs в Google Talk
В Google я провел больше 180 интервью с разработчиками. По результатам сделал следующий вывод: чем больше кандидат знает, чего ему ждать на собеседовании, тем лучше для него и для Google. Это снижает нервозность и позволяет человеку лучше продемонстрировать свои сильные стороны. Вот к чему нужно быть готовым:
- Писать много кода, который демонстрирует, что человек может применить свои алгоритмические знания.
- Решать проблемы, которые могут быть четко определены, а могут и не быть.
Если проводится собеседование на позицию старшего разработчика, то кандидату следует ожидать высокоуровневых вопросов проектирования, которые позволяют интервьюеру понять, насколько собеседник разбирается в теме масштабирования приложений, как разбивать такие задачи на подзадачи и как работать с самыми сложными из них. Совсем не обязательно иметь опыт непосредственно в этой области - нужно лишь продемонстрировать умение разбить сложную проблему на несколько более мелких и простых и системно их решать.
Когда я провожу интервью, то обращаю внимание не на использование кандидатом большого количества «баззвордов» и даже не на опыт, описанный в резюме, или на то, как он сам говорит о своих «главных недостатках». Мне важно понять, знает ли человек, как работают компьютеры, может ли он применить эти знания для написания кода или разработки систем, решающих определенные проблемы. Кандидат может не обладать идеальными знаниями структур данных, но если он понимает общие принципы, то решить задачу можно и без таких знаний.
В ходе интервью нужно будет писать много кода на доске. Очевидно, что кандидаты нервничают, а писать код на доске не самое естественное занятие: такой навык не нужен в ежедневной работе программиста. Поэтому перед интервью следует потренироваться.
Также следует почитать о вопросах, которые задают на интервью в Google: все же одним написанием кода дело не ограничится. Возможно, придется рисовать на доске диаграммы, картинки, писать псевдокод - делать все, что поможет интервьюеру понять ход мыслей кандидата. Джессика Су computer science PhD в Стэнфордском университете
Однажды осенью сооснователь Quora Адам Д'Анджело приехал в кампус Калтеха поужинать с несколькими старшекурсниками, в числе которых была и я. Адам спросил, не хочу ли я пройти стажировку в его компании. Конечно же, я хотела. Уже на следующий день состоялось телефонное интервью.
Я очень нервничала, поскольку никогда не проходила интервью на позицию разработчика в технической компании и не знала, чего ожидать. К счастью, интервьюер был дружелюбным, так что общение шло легко. Мне повезло, и мне перезвонили с приглашением на интервью уже в офисе, так что в следующем месяце я отправилась в Пало-Альто.
Всего состоялось четыре раунда интервью. Мне казалось, что все прошло хорошо, за исключением одного момента, когда я полтора часа думала, как подступиться к решению проблемы. Затем мы пообедали, и я улетела домой.
Спустя пару дней пришел отказ в стажировке. Мне также рассказали, почему я не подошла: представители Quora посоветовали мне больше времени тратить на обдумывание решений, а не бросаться сразу писать для них код. Но не думаю, что они бы меня выбрали, даже если бы я все так и делала: туда берут самых лучших разработчиков.
А вот как дела обстоят в российских компаниях. Галина Денина руководитель HR-службы компании по разработке мобильных решений для бизнеса Redmadrobot
У нас в Redmadrobot отбор разработчиков проходит в три этапа: отсмотр резюме, оценка технических навыков и личностная оценка кандидата.
Первый этап, резюме, это всегда первичная информация о кандидате, и часто само по себе оно не очень показательно: разработчики не те люди, которые сидят и подробно вписывают в резюме все свои умения. Мы обязательно смотрим на образование, оно должно быть профильным техническим: математика, computer science.
Оцениваем опыт работы: для нас как для компании по аутсорс-разработке идеально, чтобы у человека был опыт в аутсорсинговой компании или по крайней мере там, где он не был единственным разработчиком. Это показатель того, что кандидат знаком с работой в проектной команде и ему не потребуется долгое погружение - нужна только подстройка под новую команду.
Второй этап - техническое интервью с нашими специалистами. Навыки кандидата для нас, конечно, важнее всего: какой у человека опыт, на чем он умеет писать, какие технологии знает, а какие нет. Техническое интервью - самый важный этап отбора.
Третий этап - очное интервью, в ходе которого мы оцениваем личностные качества кандидата как потенциального члена команды. Наша задача - понять, будет ли человек с нами «на одной волне». Что это значит? Отношение к жизни, взгляды, цели, подход к решению проблем. Наш человек - это тот, кто хочет развиваться, а не сидеть на одном месте, и ведет активный образ жизни.
Если он определенным образом относится к своей личной жизни, то, скорее всего, будет соблюдать аналогичные принципы и в работе. Например, систематические занятия спортом говорят о том, что человек в принципе способен мыслить и работать системно. На очном собеседовании присутствуют не только представители HR-службы, но также технический директор и тимлид проекта, на котором предстоит работать новому сотруднику.
Несмотря на то, что технические навыки самые важные, в нашей практике бывали случаи, когда поведение разработчика на заключительном этапе играло решающую роль. Мы не нанимали специалистов, которые были очень сильны технически, но явно не разделяли наши ценности и не влились бы в команду.
Есть и обратные примеры - не настолько опытные кандидаты, которые тем не менее успешно проходили собеседование. В итоге они несколько лет работают в компании, получая удовольствие от работы, команды и профессионального развития. Эти люди умеют находить таких молодых разработчиков, какими они сами были несколько лет назад - с горящими глазами, желающих развиваться и расти. Дмитрий Журавлев генеральный директор HumanFactorLabs
По нашему опыту, главное качество разработчика, которое можно за разумное время проверить на собеседовании, - это общее любопытство. Как правило, из любопытства следуют и высокая мотивация, и общая техническая эрудиция, и эксперименты с новыми технологиями. Именно к любопытным потом приходит мудрость. Остальные качества можно улучшить в процессе работы - но, если нет любопытства, все остальное становится бесполезным. Конечно, обслуживание любопытства имеет цену, и немаленькую, но мы готовы ее платить.
Само любопытство на собеседовании проверить сложно. Но можно проверить то, что является следствием любопытства, - например, навык делать много проб и ошибок, на ходу меняя решение под новую информацию. На собеседовании мы даем очень простое тестовое задание, но каждые 15 минут добавляем новое условие, ломающее предыдущую архитектуру. Те немногие, кто легко и с удовольствием проходит хотя бы три-четыре итерации, получают в компании свободу принятия технических решений и дают принципиально новые импульсы для развития наших продуктов.