Все, что описано ниже — личный опыт тимлида, который регулярно собеседует кандидатов. Я не буду уходить глубоко в детали, мне кажется, полезнее описать сам подход к собеседованиям и привести в пример несколько кейсов. Это пригодится и другим тимлидам, и соискателям.
До собеседования с тимлидом: этап HR
Первый человек, который знакомится с кандидатом, — это HR. Если HR считает, что кандидат подходящий, он организует собеседование с тимлидом. HR рассказывает соискателю об участниках встречи, продолжительности разговора, возможности лайвкодинга и других подробностях.
На самом собеседовании тоже есть небольшой блок вопросов HR, которые помогают раскрыть кандидата. Мы слушаем как соискатель говорит о прошлой работе, своих обязанностях и причинах ухода. Таким образом мы понимаем, вписывается ли претендент в наши проекты, будет ли ему интересно, в чем его личный запрос и не уйдет ли он через месяц.
К каждому кандидату свой подход
Для многих собеседование — это стресс. Большинство кандидатов волнуется, поэтому с первых минут мы заводим small talk и создаем доверительную атмосферу. Чтобы максимально приблизиться к живому разговору, общаемся онлайн с включенными камерами.
Некоторые претенденты волнуются, потому что боятся собеседования в формате «допроса». Я их понимаю. Однажды проходил интервью в известной компании и оно напоминало именно допрос. Когда я обратил на это внимание, мне ответили, что здесь собеседуется кандидат, а не интервьювер. После такого захотелось сбежать.
В целом, на стресс все реагируют по-разному. Интроверты чаще замыкаются и молчат, экстраверты, наоборот, много разговаривают. В обоих случаях задача интервьюера создать комфортную обстановку. Но в зависимости от претендента способы немного отличаются.
С интровертом мы шутим и обсуждаем нейтральные темы, чтобы он мог успокоиться и начать уверенно отвечать на вопросы. Когда кандидат расслабляется, переходим к делу. По опыту, собеседование интроверта занимает около часа, но бывают варианты: иногда сильным кандидатам хватает и 30 минут. А иногда мы сами понимаем, что претендент не подходит под наши задачи, и досрочно завершаем собеседование.
Для экстраверта схожий подход — small talk обязателен. Обычно такие люди могут говорить обо всем на свете, поэтому их нужно фокусировать на важных, интересующих вопросах. Собеседования с разговорчивыми соискателями могут длиться часами. Чтобы не выходить за тайминг, мы придерживаемся правила «1 собеседование — 1 час».
«Я приду к тебе с топором». Как-то мы собеседовали достаточно сильного кандидата. Однако по первому впечатлению было непонятно, сработается ли он с командой. Возникало ощущение, что соискатель любит потянуть одеяло на себя. Чтобы разобраться, собеседование продлили до полутора часов.
К концу разговора кандидат подустал и его речь стала более откровенной. После нескольких вопросов о прошлых местах работы, оказалось, что в его увольнениях виноваты все вокруг. Это, конечно, был толстый намек, что однажды мы тоже окажемся виноватыми.
Кроме этого сработали и другие тревожные маркеры. В конце беседы соискатель пошутил: «Скажи мне свой адрес, и я приду к тебе с топором». Пришлось ответить, что я провожу так много собеседований, что приходится часто менять место жительства 😊
Голодный соискатель. Обычно на техническом собеседовании решение принимается в первые 10 минут. За это время становится ясно, стоит ли растягивать общение до часа.
Однажды мы сидели с камерами, а кандидат без остановки ел. Закидывал в себя орешки, жевал и хрустел. Послушав 10 минут звуки еды, HR пожелала приятного аппетита. Кандидат сказал спасибо и продолжил щелкать. Было смешно.
Мы почти сразу подумали, что соискатель не подойдет. Дальнейшее собеседование показало, что кандидат не дотягивал еще и в техническом плане.
Технический блок: лайвкодинг, гуглежка и теория
Раньше для оценки претендентов мы использовали тестовые задания, но отказались от этой практики. Получая тестовое задание на пару часов, соискатель в большинстве случаев ничего не делал и пропадал. С готовым решением возвращались считанные единицы. Мы теряли кандидатов на ровном месте.
Вместо тестовых задач решили попробовать лайвкодинг на 15–30 минут. Такой формат понравился кандидатам намного больше. Теперь именно на этом этапе мы узнаем основную информацию о соискателе и оцениваем его грейд.
Во время лайвкодинга можно гуглить. Невозможно знать все, но нужно уметь быстро находить информацию. Заодно мы смотрим, как кандидат ищет ответ, отбирает источники и ориентируется в потоке данных.
Правильно гуглить — важный навык. Если соискатель им не владеет, это плохо. Бывает, что правильный ответ виден на третьей строке выдачи, но разработчик до него не доходит.
Случается и наоборот. Как-то спросил у соискателя сложный термин, он говорит: «Не знаю, сейчас загуглю», и через полминуты выдал правильный ответ. Было довольно неожиданно, что кандидат смог найти неизвестное решение. Так умеют далеко не все.
Есть несколько маркерных вопросов, которые помогает понять насколько кандидат погружен в разработку. Существует терминология под названием GOF и GRASP. GOF — это паттерны «банды четырех», GRASP — это шаблоны распределения ответственностей. На базе этой теории мы пишем бэкенд.
Так или иначе мы затрагиваем эту тему на интервью. Однако не все кандидаты знают эти аббревиатуры. По сути, это взгляд на программирование с другой стороны.
Самый правильный лайвкодинг
Лайвкодинг помогает проверить логику соискателя. Мы не просим писать код в чистом виде, потому что не все кандидаты к такому готовы. Наш лайвкодинг проходит в форме рефакторинга с возможностью полностью переделать код.
Например, в задании по бэкенд-разработке есть пара небольших стандартных классов, где нужно ввести интерфейс, абстракцию и прочее. Если соискатель говорит, что нужно инкапсулировать класс или что-то с ним сделать, это круто. Если выполнит инкапсуляцию без использования термина, тоже хорошо: значит кандидат знает об этом и применяет в работе.
Многие сильные разработчики говорят: «Я не знаю точную терминологию, буду кодить как умею. Вы просто смотрите и принимайте решение». Эти соискатели показывают самые хорошие результаты, и такой лайвкодинг зачастую самый правильный, с нашей точки зрения. На этом этапе становится ясно, какими навыками обладает кандидат.
Быстрая обратная связь для джуна. Иногда мы ищем джунов, чтобы доучить на определенных задачах и взять в штат. Один из таких кандидатов на собеседовании не справлялся с вопросами и понимал это. Вопросы, на самом деле, были несложные, мы часто их используем, но соискателю было тяжело.
Через 15 минут он произнес: «Я вижу, что не тяну и хочу получить обратную связь. Чего мне не хватает? Что изучить, чтобы дойти до нужного уровня?».
Мне понравилось, что у человека есть стремление, которое можно направить в правильное русло. Обычно мы берем время на подготовку обратной связи, но в тот раз пришлось отвечать сходу: какие вещи подтянуть, что изучить, о чем почитать. Из этой истории я сделал вывод, что под рукой всегда должны быть обучающие материалы, которые можно рекомендовать.
Как пришли к лайвкодингу
Мы остановились на формате лайвкодинга после ряда экспериментов. Сначала давали кандидатам тестовые задания. Затем отказались от задач и начали проверять теорию без практики. Из-за этого в штат стали попадать слабые специалисты, которые идеально знают теорию.
Был такой случай. Кандидат прекрасно знал базу и легко прошел теоретическую часть. А потом оказалось, что в практике у него серьезные пробелы. Пришлось с ним распрощаться, потому что обратная связь по его работе была в основном отрицательная.
Так мы пришли к собеседованию с лайвкодингом, который помогает оценить кандидата по первым минутам общения.
Правда, иногда возникает путаница с терминами. Некоторые соискатели напрягаются, услышав про лайвкодинг. Тогда HR приходится объяснять, что это не то, о чем они подумали. У нас что-то среднее между настоящим лайвкодингом и рефакторингом. Но слова «рефакторинг» люди боятся еще больше, поэтому его мы вообще не используем. Мало кто любит работать с чужим кодом. Есть даже такая шутка: «Каждый раз, когда я увольняю старых программистов и набираю новых, приходят все более умные разработчики. Они видят чужой код и говорят: „Ну и какой чудак это писал?“».
Как выглядит наш лайвкодинг
На лайвкодинге мы даем готовый работающий код и просим сделать его настолько оптимальным, насколько возможно. Это помогает увидеть, как кандидат понимает структуру кода, и может ли ее изменить.
В заданиях проверяются не только технические навыки. Там есть отсылки на знание английского языка или фундаментальных предметов, например, геометрии. Есть пасхалки на внимательность и умение усваивать информацию.
Иногда мы применяем небольшую провокацию, чтобы проверить, как соискатель справляется с несколькими задачами одновременно. Например, разработчик пишет код, а мы под руку задаем вопросы: «Почему здесь вот так?», «А если написать по-другому?».
Реакция на провокацию бывает разной. Сеньоры обычно ее даже не замечают: спокойно говорят что, почему, когда и зачем использовать. Мидлы могут засомневаться, но тоже ответят. А джуны часто теряются, если опираются на одно решение.
Помню кандидата, который прошел лайвкодинг идеально. По его манере переписывания кода было видно, что он настоящий дирижер, который структурирует хаос. Было очень интересно наблюдать.
А некоторые соискатели наоборот спрашивали: «Зачем нам объектно-ориентированное программирование? Давайте напишем всё в один метод, и будет работать». Для меня это показатель, что кандидат, вероятно, не владеет ООП и привык программировать с использованием функционального подхода. Где-то применяют функциональное программирование и это хорошо, но мы ищем специалистов по ООП на бэкенд и на фронтенд ввиду заказной разработки.
Лайвкодинг занимает 10–15 минут. В следующие полчаса общаемся с кандидатом по теории. После этого мы уходим на обсуждение с командой и решаем: наш человек или все-таки нет.
Теоретическая часть
Теория — это диалог двух программистов на равных. Во время разговора у нас есть принцип: «Не оставлять открытых вопросов». Если соискатель растерялся с ответом, мы не выдерживаем театральных пауз, а подсказываем и задаем наводящие вопросы.
Претендент сумел справиться с волнением и ответил — замечательно, нет — рассказываем сами. Бывает, что во время объяснений кандидат подхватывает и дальше дает развернутый ответ.
По времени теоретический блок занимает 30 минут.
Порядок в хаосе
Мы в Neti занимаемся разработкой под заказ, поэтому подбираем кандидатов, которые смогут одновременно работать на двух или более проектах. Таким специалистам нужно быстро переключаться, сохраняя концентрацию на главном.
Со стороны наше собеседование выглядит слегка хаотичным. Например, сначала спросили про PHP, потом перешли к MySQL, отвлеклись на MVC, а затем обсудили ООП. Однако постепенно вопросы выстраиваются в единую картину. Благодаря такому интервью мы оцениваем не одну область знаний, а их совокупность. Между собой называем этот подход «порядком в хаосе».
Каждый следующий вопрос завязан на предыдущем ответе. Переходя от темы к теме, мы быстро понимаем, в чем кандидат разбирается и легко ли перестраивается вслед за нами. Получается, как на экзамене: все, что соискатель скажет, может быть использовано «против» него.
Кандидат-интервьюер, который сам проводит собеседования. Иногда клиенты просят нас собрать команду аутстафф-разработчиков.
Мы отбирали претендентов для заказчика. Напротив меня сидел сильный специалист, который регулярно собеседует людей. Его soft skills были на высоте. Он легко отвечал на вопросы, и я понимал, что он оценивает само собеседование.
В конце разговора он дал обратную связь: где было круто, а что осталось недоработанным. Ему понравился наш «порядок в хаосе». Было приятно, что человек сложил всю картину и оценил подход.
Финал собеседования
Есть три базовых сценария, которыми обычно завершаются собеседования. Они описаны на картинке ниже.
Однако мы помним, что жизнь переменчива, поэтому всегда опираемся на золотое правило.
Нет плохих кандидатов. Есть кандидаты, которые сегодня не подходят под конкретные задачи. Возможно, через месяц мы перезвоним и предложим поработать над чем-то новым ❤️