Три совета, которые помогут вам не отсеивать хороших кандидатов

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

Давайте посмотрим, как интервьюеры могут разработать задачу кодирования, чтобы оценить опыт и навыки кандидата примерно за час.

1. Используйте простую задачу

Задача должна быть достаточно простой, чтобы подходящий кандидат мог реализовать решение за 15–20 минут в нестрессовой обстановке.

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

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

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

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

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

2. Не требует знания сложных структур данных и алгоритмов

Хорошо подтвердить, что кандидат знаком с некоторыми простыми структурами данных (стеками, множествами, очередями, деревьями) и понимает сложность O(n) популярных алгоритмов, таких как быстрая сортировка и бинарный поиск.

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

Более того, многие кандидаты не имеют соответствующей степени и никогда не проходили курс CompSci. Возможно, они научились программировать сами и не очень хорошо знакомы со структурами данных и алгоритмами.

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

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

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

3. Сделайте задачу релевантной проблемному пространству команды по найму

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

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

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

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

Лучше всего давать задание, связанное либо с чем-то, с чем знакомо большинство кандидатов, либо с предметной областью, в которой работает команда по найму.

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

Выводы

Подводя итог, при разработке задачи для живого собеседования по программированию для вашей команды:

  • Используйте простую задачу, которую ваши нынешние члены команды решат за 15–20 минут, чтобы кандидаты с аналогичным опытом могли сделать это вовремя на собеседовании даже в условиях стресса.
  • Для разработки и реализации решения требуются только базовые знания компьютерных наук, поскольку сильные навыки CompSci не означают сильных навыков разработки программного обеспечения, и для большинства должностей эти знания не требуются.
  • Сделайте задачу релевантной проблемному пространству команды по найму, чтобы ее было легче понять.