Мои мысли о том, что должен спросить хороший интервьюер

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

Есть масса ресурсов о том, как быть идеальным кандидатом на собеседование. Но есть ограниченное руководство о том, как стать квалифицированным интервьюером.

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

К счастью, есть несколько хорошо продуманных постов о том, как провести хорошее интервью по программированию, особенно это Ли Хаойи. Кроме того, этот пост Гейл МакДауэлл о том, существует ли вообще связь между работой и результатами собеседования, является отличным чтением и подчеркивает, насколько сложна проблема найма для компаний-разработчиков программного обеспечения.

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

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

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

  1. Могут ли они написать хороший код?
  2. Могут ли они обсудить с нами код и проблемы?
  3. Могут ли они рассуждать о открытых проблемах и ограничениях?
  4. Вы видите себя работающим с ними?

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

Он проверяет ваши базовые навыки программирования (№1). Это также намеренно двусмысленно, поскольку мы хотели бы проверить их способность рассуждать о таких препятствиях (см. № 3). Имейте в виду, что как интервьюеры мы должны быть открыты для множества решений, и у этого вопроса есть несколько вариантов решения.

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

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

Но что делает эту проблему интересной, так это крайние случаи, о которых следует помнить.

«Что произойдет, если я нажму« + »несколько раз?» или «Что, если я нажму« + », а затем после этого нажму« = »?»

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

Эта преднамеренная двусмысленность также поощряет диалог. Вы бы хотели увидеть №2 - как они обсуждают код и проблемы. Такие вопросы, как «Мне нужно набирать равные или я могу просто продолжать делать 10 + 20 + 30?» следует аплодировать.

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

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

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

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

Всего наилучшего! Не только для кандидата, но и для интервьюера.