Мои мысли о том, что должен спросить хороший интервьюер
Всякий в программном бизнесе, который говорит людям, что им нравится писать код, лжет. Это неприятное сборище в тесноте, которое обычно длится час и может закончиться плачем. Этот пост призван предоставить предложения, чтобы сделать этот процесс более эффективным и долговечным.
Есть масса ресурсов о том, как быть идеальным кандидатом на собеседование. Но есть ограниченное руководство о том, как стать квалифицированным интервьюером.
Следует иметь в виду, что на собеседовании очень легко ошибиться, потому что у вас гораздо больше степеней свободы. Люди, отвечающие на вопросы, во время сеанса думают только об одном, но на другой стороне стола - прямо противоположное. Таким образом, действительно сложно провести хорошее собеседование, и, если кто-то не приложит активных усилий для его улучшения, он, вероятно, будет очень плохим. Произвести негативное впечатление на кандидата - это минимальное последствие, а недостатки идут гораздо дальше, например, потеря талантливых сотрудников, рост затрат на найм и непреднамеренное создание с течением времени токсичной культуры труда.
К счастью, есть несколько хорошо продуманных постов о том, как провести хорошее интервью по программированию, особенно это Ли Хаойи. Кроме того, этот пост Гейл МакДауэлл о том, существует ли вообще связь между работой и результатами собеседования, является отличным чтением и подчеркивает, насколько сложна проблема найма для компаний-разработчиков программного обеспечения.
Прежде чем перейти к тому, что составляет цель хорошего собеседования, сделайте шаг назад, чтобы понять, что все, что нам нужно сделать в ходе этого упражнения, - это определить, что лучше всего подходит для текущей должности. И процесс найма может начаться задолго до самого собеседования.
Одна практика, которую я настоятельно рекомендую, - это интерес к чьим-то GitHub, StackOverflow или любым другим образцам работы. Вы можете увидеть их навыки программирования в непринужденной обстановке, виды проблем, которые их интересуют, и подход, который они используют. Кандидаты должны размещать ссылки на свои профили в своем резюме.
Во время собеседования цели должны быть простыми и никогда не быть демонстрацией силы. Сообщение Ли красиво резюмирует их с помощью четырех ключевых вопросов, которые я здесь перефразировал.
- Могут ли они написать хороший код?
- Могут ли они обсудить с нами код и проблемы?
- Могут ли они рассуждать о открытых проблемах и ограничениях?
- Вы видите себя работающим с ними?
Основываясь на вышеизложенных принципах, я со временем нашел один вопрос, который получил хорошие отзывы в качестве первого раунда собеседования для ролей начального уровня. Вопрос короткий и простой - реализовать простой калькулятор. Мы все видели один, и они тоже могут открыть его на своем ноутбуке.
Он проверяет ваши базовые навыки программирования (№1). Это также намеренно двусмысленно, поскольку мы хотели бы проверить их способность рассуждать о таких препятствиях (см. № 3). Имейте в виду, что как интервьюеры мы должны быть открыты для множества решений, и у этого вопроса есть несколько вариантов решения.
В зависимости от роли, можно было бы сделать акцент на аспектах внешнего интерфейса или просто сосредоточиться на логике калькулятора при нажатой клавише. Также очень легко судить, все ли у них хорошо, и сами кандидаты имеют хорошее представление о том, как идут дела, что помогает им не паниковать во время и без того стрессовой ситуации и сводит к минимуму наше вмешательство.
Этот вопрос также поощряет передовой опыт. Необходимо использовать некоторую форму объектно-ориентированного программирования, чтобы избежать использования глобальных переменных, а также проверять повседневные концепции (вместо инвертирования двоичного дерева), такие как функции, обратные вызовы, циклы и даже безопасность типов, потому что вы рассуждаете с числами, которые отображаются в виде текста.
Но что делает эту проблему интересной, так это крайние случаи, о которых следует помнить.
«Что произойдет, если я нажму« + »несколько раз?» или «Что, если я нажму« + », а затем после этого нажму« = »?»
Это поощряет использование написания тестовых примеров, и кандидатам крайне необходимо менять свой подход в зависимости от того, какие функции они хотели бы использовать. Они могли бы положить конец этому, используя функцию eval
, но вышеперечисленные вопросы остались бы без ответа.
Эта преднамеренная двусмысленность также поощряет диалог. Вы бы хотели увидеть №2 - как они обсуждают код и проблемы. Такие вопросы, как «Мне нужно набирать равные или я могу просто продолжать делать 10 + 20 + 30?» следует аплодировать.
Устный обмен также дает хорошее представление об их личности. Являются ли они из тех, кто не стесняется просить о помощи, когда застрял, или они опускают голову и ждут, пока дамба прорвется? Это обязательно произойдет, поскольку для этой проблемы нет предела. Вы можете пойти дальше и использовать скобки или даже научные операции, если у вас есть аппетит.
Я также наблюдал, как люди используют для этого множество языков, поскольку для этого не требуется никаких необычных библиотек, а эффективность кандидатов была довольно одинаковой, независимо от их выбора. Что наиболее важно, многие кандидаты смогли заполнить минимальную, но функциональную версию этого в установленные сроки.
Это упражнение также произвело большое впечатление на других членов комиссии. В конце концов, это те люди, с которыми я буду продолжать работать, и они очень ценили правило «Никаких изгибов». Первые раунды должны устанавливать только минимальную планку. Существует достаточно сайтов по конкурентоспособному программированию, и при необходимости вы можете подвести кого угодно, установив нереалистичные стандарты.
В конце концов, я смиренно согласен с тем, что нет правильного способа пройти собеседование. Всегда будут ложные срабатывания и отрицания. Некоторые выступают за политику «Нанимай быстро, быстро увольняй». Это самостоятельный пост, и хотя я до некоторой степени согласен с тем, что отказ от увольнения, особенно в более высоких ролях, где это труднее, вызывает каскад эмоциональных травм и финансовых потерь. Но даже эта стратегия сводится к тому, чтобы компании нанимали и удерживали людей, больше похожих на своих основателей, чем делая то, что лучше всего.
Всего наилучшего! Не только для кандидата, но и для интервьюера.