Я не собираюсь революционизировать мир этим постом, но за последние несколько лет я провел много интервью. Я тоже несколько раз был на приеме. Я не очень хорошо разбираюсь в различных процессах собеседования — это скорее объединение личного опыта и книг или сообщений в блогах.

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

Он начинается с сопроводительного письма и резюме. Если я ищу младшего кандидата, полезно знать, чему он хотел бы научиться. Например, если они хотят познакомиться с Vue. Это помогает мне немного отфильтровать кандидатов до тех, кто получит то, что они хотят от роли. С другой стороны, в отношении старших кандидатов полезно знать, как долго они находятся на разных должностях и какой у них опыт. В обоих случаях, если у них есть код на Github для проверки, это особенно полезно. Затем я составлю таблицу или какой-нибудь документ с приблизительными значениями того, насколько хорошо они знают технологический стек, и интереса к ним как к кандидату в целом. Это очень большой палец против ветра.

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

Как только я немного сужу список кандидатов, я обращусь к тем, кто подходит лучше всего. Обычно я использую Doodle, чтобы сделать свой календарь доступным для них. Это первое интервью короткое — около 20 минут в качестве скрининга. Я представлю компанию кандидатам, немного расскажу о роли. Мне нравится спрашивать об одном из их предыдущих проектов, их мотивации и ожиданиях по зарплате. Обычная вещь, которую я стараюсь делать на всех этапах, — максимально четко указать сроки процесса и следующие шаги. Однако не всегда возможно сделать это ясно, если ваш график ненадежен.

После предварительного звонка я отправляю кандидатам электронное письмо с вызовом на дом. Задача — это задача программирования, которую они должны решить самостоятельно, в свое время, как и в любом обычном проекте. Я стараюсь уложиться в 2 часа или меньше, уважая время кандидата и добиваясь более последовательного выполнения теста. Было бы несправедливо сравнивать 50-часовой проект с двухчасовым. Одним из недостатков такой короткой формы является то, что она проверяет настройку проекта больше, чем это обычно уместно. Другими словами: вполне возможно запускать приложение create-react-app только один раз в год, если вы работаете только над одним монолитным проектом. Точно так же вы можете использовать среду тестирования в своем рабочем проекте, но кто-то другой может нести ответственность за ее настройку и запуск. По этим причинам я стараюсь сосредоточить внимание на проблеме, одним из возможных решений которой является простой код без фреймворка.

Получив ответы на вынос, я просматриваю каждый и делаю пометки для следующего интервью. Обычно я ищу не мелкие ошибки, а скорее темы для обсуждения. «Почему вы реализовали X таким образом?», «Вы применяли TDD раньше?», «Если бы вы просмотрели этот код, что бы вы сказали?». На собеседовании я подниму эти вопросы, чтобы попытаться оживленно поболтать с кандидатом. Интервью помечено как собеседование по кодированию, но в основном это обсуждение, чтобы увидеть, насколько хорошо они объясняют или рассуждают о коде. Как я уже сказал, в Норвегии большинство программистов умеют программировать. Но работа с другими программистами — это тема для обсуждения. Когда я провожу собеседования с младшими кандидатами на этом этапе, я ищу готовность учиться или слушать — они должны хорошо получать обратную связь и опираться на нее. Когда я беру интервью у старших кандидатов, я ищу возможность объяснить их мысли достаточно хорошо, чтобы другие, возможно, более молодые, были в состоянии понять.

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

И, наконец, посвященное культуре интервью. Это когда интервьюируемый встретится с другими членами команды, к которой он присоединится. Здесь не так уж много структуры — цель на данном этапе — немного заинтересовать кандидата, чтобы он знал, на что подписывается. Я пойду и представлю всех, а затем уступлю место свободному обсуждению и вопросам. Хобби, биография, любимые проекты — все это отличные темы для разговора. Вы можете захотеть, чтобы их линейные менеджеры или генеральный директор участвовали в этой встрече.

Если кандидат прошел все собеседования, значит, пора делать предложение. Переговоры о зарплате лучше всего вести честно и откровенно. Если в вашей компании еще нет заранее определенного диапазона, который они обычно платят людям, это очень поможет вам сделать это. Это не означает, что вы не можете выйти за пределы этого диапазона, но хорошо делать предложение, зная, что обе стороны считают его достойным для этой роли.

Если предложение будет принято, блестяще! Теперь пришло время их загрузить. Я расскажу об этом в следующей статье. Если предложение будет отклонено, ничего страшного. Пожелайте кандидату всего наилучшего на его будущем пути.