Как проводить технические собеседования?

16.09.2021

Не секрет, что программисты часто жалуются на то, как проходят собеседования, и на тех, кто их проводит.

Кому то не нравится, что интервьюеры самоутверждаются за счёт соискателя. Других раздражают заумные задачи, которые не имеют отношения к реальной работе. Соискатели сетует и на плохую организацию процесса, и на запутанную коммуникацию.

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

Какие вопросы следует считать хорошими, а какие — плохими? Какой настрой должен быть у человека, который проводит собеседование? Влияет ли удалённый формат интервью на вопросы — надо ли их подгонять или вообще отказываться от них?

Московский клуб программистов провёл онлайн-дискуссию и постарался сформулировать основные принципы проведения технических интервью и подбора вопросов.

Конспект

  1. Бывает, что самолюбие соискателя страдает, если он не знает ответа на вопрос. Он даже может вести себя агрессивно. Рекомендация интервьюерам: предупредить, что нельзя объять необъятное и соискатель может пройти интервью, даже если не ответит на часть вопросов.
  2. Лучше приготовить вопросы заранее. Желательно проверить их на собственных сотрудниках, и убедиться, что они понятные, подразумевают единственный ответ, не слишком простые и не слишком сложные.
  3. Приготовьте больше вопросов, чем задаёте на интервью. Это привнесёт разнообразие, и поможет по-разному проверять разных кандидатов. Если соискатель толковый и быстро щёлкает вопросы, ему можно задать несколько сложных вопросов, они сделают интервью интереснее.
  4. Лайвкодинг это здорово, но не у всех кандидатов есть опыт программирования под присмотром. Если соискатель нервничает, можно заменить лайвкодинг домашним тестовым заданием.
  5. Читайте резюме кандидата перед собеседованием. Это важно. Многим не нравится, если их спрашивают о том, что они уже осветили в резюме. Резюме, помимо всего прочего, прекрасный источников поводов для дополнительных вопросов.
  6. Fizz Buzz — хороший способ убедиться, что программист владеет языком программирования.
  7. Работают простые схемы. Постарайтесь избегать сложных регламентов. Обычно достаточно списка вопросов и простой констатации ответил или не ответил.
  8. Спрашивайте про языки, но не про фреймворки. Фреймворк можно выучить, это не займёт много времени. Как вариант, запишите фреймворк в раздел пожеланий, а не требований. Если кандидат его знает, можно задавать вопросы по фреймворку, а если не знает, его можно будет ввести в курс дела.
  9. Никаких каверзных вопросов и вопросов на креативность. Программисты не понимают, какое отношение такие задания имеют к реальной работе. Если вы не пишете код вида a++ * ++a, не надо спрашивать, как вычисляется такое выражение. Если пилите круды, незачем фантазировать, сколько заправок в Лос-Анджелесе, или почему люки круглые.
  10. Будьте готовы ответить на технические вопросы соискателя. Система контроля версий? Регламент пулл-реквестов? Как проводим code review? Среди интервьеров должен быть кто-то, кто делает реальную работу и может рассказать, как она организована.
  11. Прекрасно, если интервью проводят несколько человек. Они могут помогать друг другу, в том числе давать обратную связь. Так можно делать интервью всё лучше и лучше.
  12. Про работу в компании можно говорить заготовленными фразами, а можно неформально, выражая личное отношение. Второй способ больше нравится соискателям.
  13. Формулировки вопросов лучше отшлифовать заранее, но задавать их надо не по бумажке, а на память. Программист, тем более сеньор, не должен чувствовать себя студентом на экзамене.
  14. Соискатель нервничает и может неправильно ответить на простой вопрос. Как понять, знает он на самом деле, или нет? Задайте несколько несложных вопросов по одной теме. Если он знает, он ответит правильно почти на все, а если не знает, то почти на все ответит неправильно.