Как стать автором
Обновить
780.25
VK
Технологии, которые объединяют

Как провести лайвкодинг так, чтобы кандидат хотел к вам вернуться даже после провала

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров12K

Привет, хабровчане! Многие из нас дорастают до момента, когда приходится проводить собеседования для поиска нового сотрудника в команду или стороннего исполнителя. Вне зависимости от направления (бэкенд, фронтенд, тестирование, мобильная разработка) интервью строится на основе ограниченного набора инструментов: скринингов, тестовых заданий, лайвкодинга и теоретических секций. В статье расскажу про типовые ошибки интервьюеров и лучшие практики, поделюсь своим планом собеседования и подробно остановлюсь на одном из инструментов — лайвкодинге.

Перед тем, как начать, буквально пару слов о себе. Меня зовут Роман Лунев, я руковожу отделом бэкенд-разработки в команде развития суперприложения ВКонтакте. Разработкой занимаюсь более 10 лет, а собеседования провожу уже порядка 6–7 лет. За это время я много раз успешно заваливал, а потом, с опытом, и успешно проводил собеседования как интервьюер. А ещё насмотрелся на косяки коллег, потому что время от времени погружал в этот процесс интервьюеров-новичков. А это даёт очень много пищи для размышлений. Расскажу про свой план собеседования.

Этап 1. Знакомство

Цели: на этом этапе необходимо установить контакт с кандидатом, первично оценить его уровень, а также рассказать про команду, в которой ему предстоит работать.

Что может пойти не так

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

Не рассказали о себе и команде. Этот пункт не так страшен, как предыдущий, но мы же хотим, чтобы кандидат побольше узнал про нашу команду. Иногда эту часть собеседования недооценивают, но зря: она позволяет начать «продавать» свою команду потенциальному коллеге и понять, знает ли человек о нашей компании и специфике работы. А ещё оценить, насколько вы можете быть интересны новичку. Иногда уже на этом этапе можно понять, что по духу кандидат — явно наш человек (он знает про нас, следит за нами, работал с какими-то нашими инструментами). Либо можно своим рассказом сильно заинтересовать человека и мотивировать его показать все свои навыки на собеседовании. Ещё важно, что в крупных компаниях очень часто разные этапы собеседования проводят представители разных команд, и именно эта часть общения может сильно повлиять на итоговый выбор кандидата (у меня ВКонтакте ровно так и вышло в итоге).

Не дали кандидату рассказать о себе. Зачастую соискатель приходит на встречу уже подготовленным — с заранее составленным резюме или анкетой. Но важно ещё и дать человеку высказаться. Во-первых, мы можем выяснить всё, что нам интересно (или показалось странным). Во-вторых, мы даём человеку включиться в диалог. Отлично, если рассказ о себе плавно перейдёт в беседу — это хороший признак того, что собеседование проходит успешно, и можно смело двигаться дальше.

Кандидат слишком долго рассказывал о себе. Иногда попадаются крайне разговорчивые соискатели. Они начинают рассказ с детской мечты стать программистом и проводят нас по всему своему жизненному пути. Чтобы избежать этого, важно сразу корректно сформулировать вопрос про опыт. Например, фразы «Расскажи о своём опыте», «Чем ты занимался в последнее время?», «Расскажи о себе» имеют слишком размытые границы. «Последнее время» — расплывчатое понятие. Более жёсткие границы для ответа ставят фразы «Расскажи о последнем месте работы», «Расскажи, над чем работал в последние год-два». Если всё-таки соискателя понесло не туда или он сильно затягивает рассказ о себе, стоит его аккуратно прервать.

О чём важно помнить. Не забывайте — не только вы ищете работника среди соискателей, но и кандидат выбирает себе новое место из разных вариантов. Будьте дружелюбны и заинтересованы, помните, что вы выступаете от лица всей компании. Даже если человек не подходит именно вам, он может быть интересен другим командам в вашей организации.

Этап 2. Правила игры

Цели: на этом этапе рассказываем соискателю, как будет проходить его испытание, что допустимо на нём, а что нет, и отвечаем на вопросы.

Что может пойти не так

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

Рассказали не про все ограничения. Этот пункт очень похож на предыдущий, но есть важное отличие: если вы обозначили ограничения, но о чём-то забыли, то на такие «спорные» моменты будет распространяться правило «что не запрещено, то разрешено». И тогда мы не можем предъявлять претензии, например, за использование поисковика — если заранее не проговорили это как запрет. Важно проверить, что вы донесли до соискателя исчерпывающий список правил.

Меняем правила игры по ходу собеседования. Интересный приём, который можно применить без негатива. Основная идея здесь такая: «закручивать гайки» во время лайвкодинга можно, но это нужно правильно подать: чётко объяснить, почему мы усложняем задачу, и сделать это как бы невзначай. Например, если кандидат решил одну-две задачи без проблем, то можно вывести его на новый уровень сложности вот с таким посылом: «Ты хорошо показал себя на предыдущих задачах, давай немного усложним условия и теперь... (то правило, которое мы меняем)». Такой подход показывает нашу мотивацию и делает коммуникацию более прозрачной.

Этап 3. Лайвкодинг

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

Что может пойти не так

Нет достаточного пула задач. Как правило, за успешный лайвкодинг решается от двух задач и больше. Если у нас в запасе всего три-четыре задачи, то высок риск, что их довольно быстро «сольют» друзьям или комьюнити и это сведёт КПД этапа почти до нуля. Поэтому важно иметь богатый пул задач, из которых можно выбирать. В нашей команде есть несколько десятков разных задач, которые мы обновляем раз в полгода.

Нет ротирования задач. Здесь проблема идёт от самого интервьюера. Я неоднократно видел, как ребята дают одну и ту же задачу от собеседования к собеседованию, хотя у них есть и другие. А всё потому, что она им очень нравится, и они считают её самой показательной.

Кандидат уже решал эту задачу. У этой проблемы может быть два источника. Первый — соискатель пришёл к нам на повторный лайвкодинг, а мы дали ему ту же задачу, которую он решал в прошлый раз. Второй — кандидат уже сталкивался с этой задачей в другом месте. В первом случае важно выстроить коммуникацию между теми, кто проводит собеседование. В нашей команде, например, после каждого собеседования интервьюер пишет отчёт с задачами, которые решались, и сохраняет его в архив. Это позволяет при переходе кандидата между командами легко выяснить, что уже решалось. Со второй ситуацией всё намного сложнее: далеко не каждый кандидат честно признается, что уже решал эту задачу (хотя такие ситуации в моей практике были). Зачастую это можно определить, когда соискатель обошёл все типовые проблемы или выдал сразу идеальное решение с учётом всех подводных камней — вероятно, задача ему уже знакома. Либо с помощью усложнения и расширения задачи — можно попросить решить её без каких-то конструкций, например рекурсии, или вывести дополнительную информацию, которая требует небольшого рефакторинга.

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

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

Задача не соответствует уровню кандидата. Эта проблема возникает в ситуациях, когда мы нанимаем кандидатов разных уровней. При таком подходе очень важно выбрать задачи, соответствующие уровню кандидата. Тут есть несколько советов. Первый — изучайте резюме кандидата. Если оно заполнено честно, можно оценить примерный уровень соискателя. Второй — используйте стратегию выбора задач с калибровкой. Тут можно выделить две основных стратегии. Первая — мы начинаем со средней задачи и на основе её решения уходим либо в сторону усложнения, либо в сторону упрощения. Вторая — мы начинаем с относительно простой задачи (мы называем её разминочной) и на основе её решения калибруем дальнейший уровень задач. Второй подход нравится больше, так как он ещё и помогает кандидату подстроиться под работу с нами.

Отстранились от кандидата. Бывают ситуации, когда интервьюер выдаёт кандидату все вводные, отвечает на его вопросы и дальше максимально от него отстраняется, дабы не мешать кодить. В целом это хороший подход, однако важно всё равно следить за кандидатом и ловить момент, когда стоит вернуться к диалогу. Иногда соискатель упирается в какую-то мелкую проблему, но она полностью его тормозит. В такие моменты бывает полезно включиться и попросить рассказать, что смущает кандидата, какие сложности он видит, какие есть мысли по работе с ними (грубо говоря, побыть резиновой уточкой). Такое отношение позволит вам понять, что вызывает сложности у кандидата и как он мыслит. А соискатель сможет проговорить свои опасения и выработать решение. Всё это поможет не растягивать этап впустую.

Постоянно вмешиваемся. Обратная сторона предыдущей проблемы — гипервовлечённость в процесс. Это ситуация, когда даже минутное молчание кандидата расценивается как призыв о помощи. Такая проблема часто возникает у новичков и вызвана ощущением дискомфорта от того, что на протяжении некоторого времени вообще ничего не происходит. Здесь важно внутренне тормозить себя. Если это не удаётся, можно засекать время тишины и ставить себе установку, что первые N минут мы даём кандидату спокойно подумать.

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


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

Этап 4. Завершаем интервью

Цели: отвечаем на вопросы кандидата и даём фидбэк.

Что может пойти не так

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

Оставили кандидата без фидбэка. К сожалению, некоторые компании считают нормой не возвращаться к соискателю, если он им не подходит. В итоге это бьёт по репутации самой компании. Не обязательно давать фидбэк сразу после собеседования, это можно сделать и после. Достаточно объяснить дальнейший флоу общения и потом вернуться с ответом. Ещё очень полезно не просто сказать «вы нам не подходите», а подсветить точки роста. Так появляется хороший шанс в будущем встретиться с этим же кандидатом, но уже гораздо лучше подготовленным. Расценивайте это как инвестиции в будущее.

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

Общий план собеседования

В целом всё повествование я старался вести как раз по своему эталонному плану, но на всякий случай приложу его отдельно.

Итоги

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

  • хороший и понятный рассказ про команду;

  • эмпатия и взаимоуважение;

  • интересные и релевантные работе задачи;

  • демонстрация уровня знаний, которые потребуется кандидату для успешной работы в компании;

  • грамотный и объективный фидбэк.

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

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

Теги:
Хабы:
Всего голосов 17: ↑14 и ↓3+21
Комментарии27

Публикации

Информация

Сайт
team.vk.company
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия
Представитель
Дмитрий Головин