Количество мест, где я работал, которые стреляют от бедра, когда дело доходит до интервью с техническими талантами, смущает. Как кто-то может надеяться создать хорошо организованную и способную команду, если в процессе собеседования отсутствуют эти качества, мне непонятно.
В надежде исправить это заблуждение я решил описать процесс и несколько примеров вопросов, которые могут помочь, и вещей, на которые вы можете обратить внимание в ответах соискателя, чтобы убедиться, что вы выбрали лучшего человека для своей роли.
Tl;Dr;
- Точное и надежное описание работы
- Обзор работодателя (о вас)
- Обзор кандидатов (о них)
- Технический стек соискателя
- Повседневная жизнь соискателя — отношения с командой, обязанности на церемониях
- Обзор вашего стека технологий
- Технический опрос/тест
- Вопросы кандидата
Создайте индивидуальное описание вакансии
Первый шаг — понять, что вы ищете. Знание того, что ваши разработчики немного переработали и были бы признательны за дополнительную пару рук, не совсем подходит. Начните со структурированного описания работы, и вы ответите на большинство вопросов, которые возникнут в связи с этой ролью, и в конечном итоге вы получите нужные резюме на свой почтовый ящик.
Хороший способ структурировать описание работы:
- О компании
- О роли и ее уровне
- Гибкие навыки соискателя
- Технические навыки соискателя
Краткое описание компании и роли будет очень полезно для кандидата. Это единственный способ, которым они смогут оценить, подходят ли им компания и должность, и в значительной степени определит, отправят ли они резюме. Как только они узнают о роли, они просто оценят свои навыки по сравнению с требуемыми.
Когда дело доходит до перечисления технических навыков, это должно быть просто. Взгляните на свой технический стек, а также на то, какое место в организации займет человек, и список должен написаться сам собой.
Точно так же не должно быть сложно определить, какого уровня вы ожидаете нанять. Подумайте о проблемах, с которыми сталкивается команда, и о том, в чем она может потерпеть неудачу, и перечислите навыки, которые заполнили бы эти пробелы. Вам нужен лидер? Вам нужен кто-то, кто может сделать что-то, не держась за руки? Можете ли вы поддержать кого-то моложе? Эти вопросы должны помочь вам определить уровень, на который вы набираете сотрудников.
Оценить необходимые вам мягкие навыки немного сложнее. Создание гармоничной команды может быть сложной задачей, и это возможно только в том случае, если вы понимаете людей в своей команде. Добавление напористой фигуры в команду конфронтационных личностей может не дать больших результатов. Более вдумчивый человек с сильными коммуникативными навыками и качествами воспитания может быть более полезным, открывая новые возможности для будущего найма.
Хорошая команда состоит не только из технически подкованных программистов, но и из сильных коммуникаторов, отличных планировщиков, наставников и креативных мыслителей. Важно найти правильный баланс, и личностные тесты могут быть полезным инструментом для оценки того, кто может быть подходящим кандидатом в команду. Взгляните на команду, в которую вы набираете сотрудников, и подумайте, какие характеристики могут быть им полезны. Это дает заявителю наилучшие возможности для процветания.
Процесс собеседования
Обычно процесс, который я видел наиболее успешно, выглядит следующим образом:
- Телефонное интервью
- Технический тест
- Лицом к лицу
Части 2 и 3 часто проходят в один и тот же день, с предварительным тестом, чтобы не утомлять вашего кандидата, прежде чем вы приступите к его допросу. Кроме того, таким образом вы сможете проверить выбор, сделанный кандидатом во время технического теста, чтобы лучше установить его возможности.
Собеседование по телефону
Основная цель здесь — сократить количество кандидатов, которых вы берете на собеседование, убедившись, что человек и роль хорошо подходят друг другу. Интервью по телефону поможет вам понять, есть ли у них потенциал, чтобы соответствовать культуре, оценивая их отношение и тип личности. Чем больше вы сможете узнать друг о друге, тем лучше.
Общая структура будет:
- Объясните процесс собеседования
- Предоставьте некоторую информацию о компании
- Предоставьте некоторую информацию о роли
- Спросите об опыте соискателя
- Спросите о навыках соискателя
- Спросите об амбициях соискателя
- Ответьте на любые вопросы, которые могут у них возникнуть
Начните с небольшого рассказа о процессе собеседования. Это должно избежать путаницы или неопределенности в будущем, а если вы упомянете технический тест, это отпугнет любых шарлатанов или мошенников.
Важен обзор компании. Это не только шанс продать компанию потенциальным сотрудникам, но и возможность объяснить стратегическое направление компании и ее операционную программу. Это дает соискателю возможность решить, хочет ли он участвовать в этом путешествии и чего ожидать, когда он появится, и в то же время выделить навыки, которые им было бы целесообразно продвигать во время собеседования.
То же самое относится и к объяснению роли, но на этом этапе вы можете немного углубиться в технические аспекты, объясняя стек, структуру команды, а также рабочие процессы и принципы. Это должно позволить кандидату указать, нужна ли ему поддержка, чтобы ускориться, а также отказаться, если он чувствует, что не справится с задачей — вы не хотите, чтобы разработчик Java работал над вашим техническим стеком JavaScript. Например. Сколько раз неопытные рекрутеры присылали вам не то резюме?
Разделы о соискателе являются наиболее важными для вас как работодателя. Это первая возможность узнать об их опыте и навыках, а также о том, что они хотят от своей следующей роли и об их долгосрочных амбициях. Помните, это не односторонняя вещь. Если вы не думаете, что сможете поддержать их в достижении их амбиций, пора быть честными — никто не хочет, чтобы недовольные сотрудники портили настроение вашей команде, и было бы несправедливо вводить их в заблуждение. Если вам кажется, что вы движетесь в одном направлении с аналогичными технологиями, вы можете стать победителем.
Завершение телефонного интервью возможностью для соискателя задать любые вопросы о компании также полезно. Хорошо заполнить пробелы или решить проблемы, помогая убедиться, что роль или компания соответствуют их ожиданиям.
Технический тест
Правильно, соискателю пора заявить о своих деньгах. Технические тесты являются обычным явлением на инженерных собеседованиях. Компании должны быть уверены, что человек может решить свои проблемы, обладает способностями, на которые они претендуют, и определить, сможете ли вы поддержать техническое развитие и карьерный рост кандидата. Обучение и развитие — это большое дело для компаний и сотрудников; поэтому вы должны оценить, сколько усилий потребуется и есть ли у вас обоих время.
Технический тест также дает возможность определить уровень навыков и, следовательно, диапазон заработной платы человека, когда речь идет о конкретном навыке. На следующем этапе необходимо оценить мягкие навыки.
Возможные типы тестов:
- Тест белой доски
- Абстрактная задача на основе машин
- Проблема реального мира на основе машин
Некоторые вещи, которые следует учитывать:
- Ограничьте время проблемы — мы не хотим, чтобы это заняло весь день
- Используйте свой технический стек — если вы набираете на роль JavaScript, проведите тест на основе JS. Как еще вы надеетесь определить способности?
- Не усложняйте задачу — вы смотрите на то, как люди подходят к решению проблем, и определяете технические возможности, а не лучший в мире кодер.
Некоторые примеры проблем/задач, которые я делал в прошлом:
- Предложите, как мы могли бы реорганизовать плохой фрагмент кода из кодовой базы компании.
- Цикл для вывода последовательности Фибоначчи
- Создать/взломать шифр, использующий простую замену символов
- Напишите функцию сортировки
- Игра «Камень-ножницы-бумага» или аналогичная игра
- Используйте API и отображайте данные на странице в соответствии с простым дизайном.
- Philip hue — создайте пользовательский интерфейс для изменения яркости и цвета лампочки
- Создайте корзину для покупок с добавлением, удалением, изменением количества и цены, НДС и т. д.
Проведение личного интервью
Во время личного собеседования вы будете дополнительно подтверждать конкретные навыки и культурное соответствие, а также социальные навыки. Является ли этот человек лидером или влиятельным лицом? Являются ли они активными и страстными? Не менее важно убедиться, что вы знаете, что ищете с точки зрения межличностных навыков, чтобы получить нужные навыки, которые дополнят вашу команду. Например, баланс между организованными и хаотичными кодировщиками в команде может действительно улучшить качество и способность выполнять работу.
Структура будет аналогична структуре интервью по телефону, опираясь на то, что вы знаете друг о друге. Часто на личном собеседовании будут присутствовать разные или дополнительные лица из вашей организации, что дает им возможность ознакомиться с кандидатом.
Общая структура может быть:
- Объясните процесс собеседования
- Предоставить информацию о компании
- Предоставить информацию о роли
- Обсудите опыт соискателя
- Обсудите навыки соискателя
- Обсудите амбиции соискателя
- Задавайте технические вопросы
- Обзор технических испытаний
- Ответьте на любые вопросы, которые могут возникнуть у заявителя
Возможные вопросы, которые вы могли бы задать:
- Как вы организуете свои задачи?
- Можете ли вы объяснить декларативное программирование императивному?
- Как вы определяете объем своих задач?
- Как обычно выглядит ваша рабочая неделя?
- Какие структуры вы бы внедрили для улучшения качества кода?
- Какую структуру вы бы использовали для улучшения способностей младшего разработчика?
- Как бы вы разрешили конфликт в команде разработчиков — например, спор о реализации фичи?
- Что такое TDD и BDD?
- Что такое ООП?
- Объясните «это»
- Как вы обозначаете функцию генератора?
- Объясните применение, вызов, привязку — контекст
- Что такое подъем в JavaScript?
- Можете ли вы объяснить разницу между модульными и e2e/автоматизированными/интеграционными тестами?
- Что такое функциональное программирование и в чем его преимущества?
- Не могли бы вы описать MVC
- Назовите некоторые распространенные шаблоны проектирования
- В чем разница между let, const и var?
- В чем разница между == и ===?
- В чем преимущество стрелочной функции?
- Назовите и объясните некоторые функции es6 и почему они могут быть полезны.
- Демонстрация инкапсуляции в функции JS
- Использовали ли вы какие-либо методологии для организации CSS (БЭМ?)
- Что имеет приоритет в CSS, идентификатор или класс, и можете ли вы выделить какие-либо подводные камни?
- Как вы думаете, под какой шаблон проектирования подпадает редукс?
- Как вы можете использовать хуки для управления состоянием в реакции?
- Использовали ли вы API-интерфейс React Hooks и не могли бы вы привести примеры использования известных вам хуков?
- Где вы могли бы разместить бизнес-логику/побочные эффекты в приложении с реакцией?
- Каков результат этой функции? (Поиграйте с областью действия, инкапсуляцией и тайм-аутами, чтобы создать фрагмент кода, который выводит одно из нескольких значений)
- Определите запах кода (приведите ряд примеров и попросите кандидата объяснить, какой запах кода они могут видеть)
- ['Токио', 'Лондон', 'Рим', 'Донлон', 'Киото', 'Париж'] в [[ 'Токио', 'Киото'], ['Лондон', 'Донлон'], ['Рим ' ], [ 'Париж' ]]
Обычно я завершаю опрос, спрашивая соискателей, чего они хотят от своей следующей роли, чтобы убедиться, что их стремления совпадают с компанией и ролью, на которую они претендуют.
Наконец, настало время вопросов соискателей. Есть ли у соискателя какие-либо вопросы о компании или ее рабочих процессах? Для них это хорошая возможность ближе познакомиться с бизнесом и лучше понять, как вы работаете, или устранить любые проблемы. Кроме того, это отличный шанс продать компанию и роль соискателю.
Подведение итогов
Правильный процесс собеседования чрезвычайно важен для создания эффективной команды. Как вы можете рассчитывать на получение нужных людей, если вы не подготовились к набору персонала или не понимаете, что вам нужно? Помните, что эти люди бесплатно потратили свое время на то, чтобы прийти на собеседование. Уважайте их время, сделайте себе одолжение и приложите усилия.