В нашем блоге мы пишем о том, как техническим специалистам найти хорошую работу — например, на что обращать внимание при составлении резюме. Но мало уметь хорошо продать себя, нужно в целом понимать, что интересует технические компании при поиске разработчиков. Чтобы ответить на этот вопрос мы собрали в одном материале рассказы представителей российских и зарубежных ИТ-компаний, а также кандидатов, проходивших технические интервью.
Для начала взглянем на то, что рассказывают о процессе найма разработчиков специалисты, которые сами работают в крупных ИТ-компаниях, проводят интервью и сами или сами их проходили в качестве кандидата.
Ник Чуботариу, бывший разработчик Microsoft и Amazon
Поработав в Amazon, Microsoft, где я помимо прочего руководил программистами и проводил интервью (в том числе с сотрудниками других технологических гигантов), вот что могу рассказать о процессе найма разработчиков в крупных ИТ-компаниях:
Сам процесс интервью крайне похож. Сначала идет предварительный этап телефонных собеседований, затем лучших кандидатов приглашают на собеседование в офис. Но есть и небольшие различия:
В Microsoft решение о найме принимается в режиме «As-App» (As Appropriate) — его особенность заключается, что в принятии решения об отказе или найме большое значение уделяется личным впечатлением интервьюеров.
Процесс найма в Amazon очень тщательный и очень технический, при этом на собеседованиях обращают внимания и на различные поведенческие вопросы. Проводится как минимум 4 технических раунда интервью. Наниматели ожидают увидеть близкий к идеальному код (кандидатов «заворачивают» за исключения нулевых указателей, пропуски базовых классов и т.п.).
Всегда проводится дебрифинг, в процессе которого анализируются все полученные о кандидате данные — при этом в процессе участвуют как представители HR-департамента, так и технические специалисты. Есть также общая планка виртуальных очков, которую нужно обязательно преодолеть, чтобы получить предложение о работе. Никого никогда не наймут, если он хотя бы чуть-чуть до нее дотянул.
В Facebook интервью похожи на то, как дело обстоит в Google, но обычно на них уходит поменьше времени. При этом, насколько я могу судить из разговор с другими разработчиками, требуемый уровень знаний в Google очень близок к Amazon, то же можно сказать про Facebook, но здесь меньше внимания уделяется психологическим моментам интервью.
Резюмируя вкратце:
Amazon, Google и Facebook одинаково тщательно проводят интервью. По моему личному мнению, сложнее всего пройти собеседование в Amazon, но другие разработчики могут с этим не согласиться. Мое собственное собеседование в Microsoft было не таким сложным, как в Amazon, Google или Facebook, но и легкой прогулкой его точно не назовешь.
Даже попасть на собеседование в любую из этих компаний (не говоря уже о предложении работы) — нетривиальная задача.
Мойше Леттвин, руководитель направления Communications APIs в Google Talk
Я провел больше 180 интервью разработчиков в Google. По результатам этого я сделал следующий вывод — чем больше кандидат знает, что ему ждать на собеседовании, тем лучше для него и для Google: это снижает нервозность и позволяет человеку лучше продемонстрировать свои сильные стороны.
И вот, к чему нужно быть готовым:
— писать много кода,
— который демонстрирует, что человек может применить свои алгоритмические знания
— к решению проблем, которые могут быть четко определены, а могут и не быть.
Кроме того, если собеседование проходит на позицию старшего разработчика, то кандидату следует ожидать высокоуровневых вопросов проектирования, которые позволяет интервьюеру понять, насколько собеседник разбирается в теме масштабирования приложений, как разбивать такие задачи на подзадачи и как работать с самыми сложными из них. Совсем не обязательно иметь опыт непосредственно в этой области, нужно лишь продемонстрировать умение разбить сложную проблему на несколько более мелких и простых и системно их решать.
Когда я провожу интервью, то обращаю внимание не на использование кандидатом большого количества «баззвордов» и даже не на опыт, описанный в резюме или то, как он сам в нем описывает свои «главные недостатки» — мне важно понять, знает ли человек, как работают компьютеры, и может ли он применить эти знания для написания кода или разработки систем, решающих определенные проблемы. Кандидат может не обладать идеальными знаниями структур данных, но если он или она понимает общие принципы, то решить эту задачу можно и без таких знаний.
В ходе интервью нужно будет писать много кода на доске. Очевидно, что кандидаты нервничают. Помимо прочего, писать код на доске – не самое естественное занятие и такой навык не нужен в ежедневной работе программиста. Поэтому перед интервью следует потренироваться.
Также следует почитать о вопросах, которые задают на интервью в Google — все же дело одним написанием кода не ограничится. Возможно, придется на ней рисовать и диаграммы, картинки, писать псевдокод — все, что поможет интервьюеру понять ход мыслей человека.
Джессика Су, CS PhD-студент в Стэнфордском университете
Однажды осенью сооснователь Quora Адам Д’Анджело приехал в кампус Калтеха, чтобы поужинать с несколькими старшекурсниками, в числе которых была и я. Адам спросил, не хочу ли я пройти стажировку в его компании. Конечно же, я хотела. Уже на следующий день состоялось телефонное интервью.
Я очень нервничала, поскольку никогда не проходила интервью на позицию разработчика в технической компании и не знала чего ожидать. К счастью, интервьюер был дружелюбным, так что само общение шло легко. Мне повезло, и мне перезвонили с приглашением на интервью уже в офисе, так что в следующем месяце я отправилась в Пало-Альто.
Всего состоялось четыре раунда интервью. Мне казалось, что все прошло хорошо, за исключением одного момента, когда я полтора часа думала, как подступиться к решению проблемы. Затем мы пообедали, и я улетела домой.
Спустя пару дней пришел отказ в стажировке. Мне также рассказали, почему я не подошла — представители Quora посоветовали мне больше времени тратить на обдумывание решений, а не бросаться сразу писать для них код. Но не думаю, что если бы даже я все так и делала, то они бы меня выбрали — туда берут самых лучших разработчиков.
А вот как дела обстоят в российских компаниях:
Галина Денина, руководитель HR-службы компании по разработке мобильных решений для бизнеса Redmadrobot
У нас в Redmadrobot отбор разработчиков проходит в три этапа: первый — отсмотр резюме, второй — оценка технических навыков и заключительный — личностная оценка кандидата.
Первый этап, резюме, это всегда первичная информация о кандидате, и часто само по себе оно не очень показательно, разработчики не те люди, которые сидят и подробно вписывают в резюме все свои умения. Мы обязательно смотрим, во-первых, на образование — оно должно быть профильным техническим — математика, computer science. Во-вторых, оцениваем опыт работы — для нас, как компании по аутсорс-разработке, идеально, чтобы у человека был опыт в аутсорсинговой компании или по крайней мере там, где он не был единственным разработчиком. Это показатель того, что кандидат знаком с работой в проектной команде, и ему не потребуется долгое погружение, нужна только подстройка под новую команду.
Второй этап — техническое интервью с нашими специалистами. Технические скиллы кандидата для нас, конечно, важнее всего — какой у человека опыт, на чем он умеет писать, какие технологии знает, а какие нет. Техническое интервью — самый важный этап отбора.
Третий этап — очное интервью, в ходе которого мы оцениваем личностные качества кандидата, его как потенциального члена команды. Тут наша задача понять, будет ли человек с нами “на одной волне”. Что это значит? Отношение к жизни, взгляды, цели, подход к решению проблем. “Наш” человек — это тот, кто хочет развиваться, а не сидеть на одном месте, ведет активный образ жизни. Если он определенным образом относится к своей личной жизни, то, скорее всего, будет соблюдать аналогичные принципы и в работе. Например, систематические занятия спортом говорят о том, что человек в принципе способен мыслить и работать системно. На очном собеседовании присутствуют не только представители HR-службы, но также технический директор и тимлид, на чьем проекте предстоит работать новому сотруднику.
Несмотря на то, что технические навыки самые важные, в нашей практике бывали случаи, когда поведение разработчика на заключительном этапе играло решающую роль — мы не нанимали специалистов, которые были очень сильны технически, но явно не разделяли наши ценности и не влились бы в команду. Есть и обратные примеры — не настолько опытные кандидаты, которые, тем не менее, успешно проходили собеседование и в итоге несколько лет работают в компании, получая удовольствие от работы, команды и профессионального развития. И такие люди умеют находить молодых разработчиков, которые сейчас такие же, какими они сами были несколько лет назад — с горящими глазами, желающие развиваться и расти.
Дмитрий Журавлев, генеральный директор HumanFactorLabs (hflabs.ru)
По нашему опыту, самое главное качество разработчика, которое можно за разумное время проверить на собеседовании — это общее любопытство. Как правило, из любопытства следует и высокая мотивация, и общая техническая эрудиция, и эксперименты с новыми технологиями. И именно к любопытным потом приходит мудрость. Остальные качества можно улучшить в процессе работы, но если нет любопытства, все остальное становится бесполезным. Конечно, обслуживание любопытства имеет свою цену, и немаленькую. Но мы готовы ее платить.
Само по себе любопытство на собеседовании проверить сложно. Но можно проверить то, что является следствием любопытства, например навык делать много проб и ошибок, на ходу меняя решения под новую информацию. На собеседовании мы даем очень простое тестовое задание, но каждые 15 минут добавляем новое условие, ломающее предыдущую архитектуру. Те немногие, кто легко проходит хотя бы 3-4 итерации и получает от этого удовольствие, получают в компании свободу принятия технических решений и дают принципиальной новые импульсы для развития наших продуктов.
Виталий Обернихин, CEO AmazingHiring
Для поиска разработчиков сначала мы используем нашу систему AmazingHiring (о ней мы рассказывали здесь). Тем, кого выбрала система, мы даем тестовое задание. Те кандидаты, которые с ним справились, попадают на техническое интервью с разработчиками — здесь уже нужно в режиме реального времени решать действительно сложные задачи.
После этого, с успешным кандидатом общаюсь я, как руководитель проекта. Обычно, это структурированное интервью — с подготовленными заранее списками компетенций и ценностей, которые должны быть у человека и списком вопросов, которые позволяют раскрыть его личностные качества и еще раз оценить профессиональный уровень кандидата . Среди ценностей могу упомянуть: желание сделать лучший в мире продукт, готовность много работать, ориентированность на результат, командная работа, позитивное отношение к людям.