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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Итоги

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

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

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

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

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

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

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

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

Комментарии (18)


  1. Farongy
    19.05.2023 14:36
    +3

    "Задачи не соответствуют реальной работе."

    А в вашей компании при реальной работе тоже пара человек наблюдает, кто как код пишет?


    1. lunev_roman Автор
      19.05.2023 14:36
      +3

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

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

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


  1. sergey-gornostaev
    19.05.2023 14:36
    +5

    А что вы делаете с тем, что очень большой процент программистов на лайвкодинге просто теряется?


    1. lunev_roman Автор
      19.05.2023 14:36

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

      А так, на своем личном опыте пришел к следующим лайфхакам.
      1. Общаемся, если вижу что кандидат поплыл или завис - вывожу его на разговор: что вызывает сложности, какие есть идеи, что его смущает в его идеи. И самое главное, в рамках общения я стараюсь отмечать что-то хорошее, мы все люди и большинству из нас становится легче что-то делать, когда в нашей работе подмечают что-то хорошее.
      2. Даю разогревочную задачу, это позволяет получить кандидату маленькую победу и лучше поверить в себя, а времени отнимет не много.
      3. Очень редко, я прибегаю к такому финту, я трачу первый лайвкодинг на то чтобы кандидат погрузился в этот процесс, притерся ко мне и такому формату, привык к IDE с которой мы работаем, а затем зову на второй кодинг. Попадая второй раз в схожие условия кандидат ощущает себя куда более комфортно и показывает результаты гораздо лучше. Мы так в итоге делали офер и нанимали несколько кандидатов с таким подходом (время показало что это было правильным решением).
      4. Для меня в лайфкодинге главное не конечное решение кандидата, а то как он мыслит и приходит к нему, и я всегда это озвучиваю еще до старта этапа. На удивление многим становится легче от мысли, что ошибиться при решении допустимо и не фатально.


  1. serjeant
    19.05.2023 14:36
    +2

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

    Какие альтернативы и на каком этапе собеса вы предлагаете кандидату если онлайн кодинг ему не подходит?
    Я не умею лайв кодинг, всегда предлагаю альтернативу по разбору существующего кода, поску ошибок, рефакторингу. Практически всегда получаю отказ. И да, в VK тоже отказали изменить формат собеса (one day offer).


    1. lunev_roman Автор
      19.05.2023 14:36

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


  1. kazimir17
    19.05.2023 14:36
    +2

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

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

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


    1. stackjava
      19.05.2023 14:36

      Просто чем выше конкуренция, тем жестче отбор. Даже если он превращается в неадекватный.

      Дальше конкуренция будет только расти и все больше компаний будут переходить на формальный отсев.


    1. lunev_roman Автор
      19.05.2023 14:36

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

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

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


  1. evoq
    19.05.2023 14:36

    Отличный план, и особенно пункты связанные с эмпатией и альтернативой. Респект. Как с языка сняли


  1. diogen4212
    19.05.2023 14:36

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


    .

    Долбиться в закрытую дверь? Тратить своё и чужое время? Легче (и полезнее) пробовать искать новые места работы, если понимаешь, что не тянешь здесь требования.


    1. lunev_roman Автор
      19.05.2023 14:36

      Если вопрос в том что зачем это кандидату, то это сугубо его личное дело, что его мотивирует на это. Однако факт остается фактом, что в некоторые компании кандидаты стремятся попасть целенаправленно.

      Если вопрос в том зачем это компании, то тут все просто, замотивированный на работу в компании сотрудник всегда на вес золота.


  1. Farongy
    19.05.2023 14:36
    +3

    Мне хватило полугода проведения собеседований, чтобы понять, что человек хорошо делает то, что часто и много делает. (внезапно!) Невозможно в моменте помнить всё. Даже на реализацию элементарного бинарного поиска уйдёт время пока кандидат сообразит как и что сделать, если он не готовился заранее. Что мне может сообщить то, что человек не успел в моменте что-то сообразить за отведённое время? Я не знаю. Поэтому самым адекватным считаю вопросы по технологиям текущего места работы. Если человек говорит, что много работал с реляционный БД и при этом не может более менее сложный селект написать, это действительно говорит многое о кандидате, и выяснить это можно за 2 минуты, а не за полтора часа.


    1. lunev_roman Автор
      19.05.2023 14:36
      -1

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

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

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

      P.S. Ну и в конечном счете, никто не защищен от того, что с тем же селектом он вдруг не запнется, например, от волнения.


      1. Farongy
        19.05.2023 14:36
        +1

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

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

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

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

        Ага. Есть такая чудная идея про решения нестандартных, неизвестных задач. Так вот - наш мозг не умеет в что-то из ничего. Мозг умеет компилировать старые факты, чтобы выдавать новые. Соответственно, когда вы даёте рандомную задачу рандомным людям, и один решает лучше другого это означает лишь, что у первого в моменте более релевантный опыт по этой задаче. Ответы же по реальной работе как раз и говорят о том что кандидат решает поставленные перед ним задачи. И для получения таких ответов нет необходимости тратить полтора часа, чтобы направлять его по- всякому.


        1. lunev_roman Автор
          19.05.2023 14:36

          По поводу лайвкодинга у меня складывается стойкое ощущение, что под ним вы понимаете исключительно решение абсолютно абстрактных алгоритмических задач из секции алгоритмов с условного литкода, типа покрутить красно-черное дерево, обойти граф хитрым способом и тд. Но если вернуться к этому пункту "Задачи не соответствуют реальной работе.", то видно, что я против подобного подхода.
          Давайте понимать, что есть разные отделы с разными задачами, обязанностями и особенностями и давать всем одно и то же - это смертоубийство для самих себя же, хотя ряд компаний, даже крупных и известных, грешат этим.
          Я не говорю что задачи описанные выше не нужны на кодинге, они нужны, но только если вы ищите человека, который будет заниматься оптимизацией алгоритмов и структур. Мы же, как во многом продуктовая команда, на кодинге стремимся давать продуктовые задачи, с описанием похожим на то, которое затем можно встретить в проекте. Дальше, все в руках кандидата.
          При таком подходе аргументы про то что для него это "нестандартная, неизвестная задача" уже не особо валидны, тк в таком случае все задачи при работе у нас будут для него такими.
          То есть тут все просто, можешь решить задачу - молодец. Не можешь решить задачу, давай общаться и разбираться (как мы это делали бы в реальной работе), не можешь или не хочешь, тогда извините, нам такой кандидат не подходит.
          "Очень многие не готовы к лайвкодингу. Многие не рассуждают вслух, пока думают." - тут же все просто, если вы беретесь проводить лайвкодинг, то вы должны быть готовы выводить кандидата на разговор. Это не просто, но этому можно и нужно учиться. И кстати, в диалоге про опыт тоже не всегда можно вывести на хороший плотный диалог, и это также не означает что кандидат не знает технологию.

          Что касается вашего подхода, тут замечу что вы оставили без внимания риски №2 и №4, а второй в купе с первым дают очень страшную и опасную смесь. Более того, за свои годы проведения интервью я применял самые разные подходы (в разных компаниях разные стандарты, под которые так или иначе приходится подстраиваться) и на своем опыте могу сказать что "языком болтать не мешки ворочать". Я видел очень много кандидатов, которые отлично говорят о чем-то, но потом встают в ступор, при необходимости это применить на практике.

          PS Вообще, я сторонник комплексного интервью, когда мы и за жизнь общаемся и код пишем и размышляем. Да, это более утомительно для кандидата, но это дает куда более объективную оценку.

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


        1. lunev_roman Автор
          19.05.2023 14:36

          А также давайте рассмотрим еще такой вариант, мы отказываемся от лайвкодинга и оставляем только общение за технологии. К нам приходит кандидат, который блестяще отвечает на вопросы, мы берем его на синьора, с очень весомой ЗП и спустя время выясняем, что он совершенно не тянет данную позицию. Это вполне реальная ситуация, которая может возникнуть из того что кандидат просто очень хорошо подготовился к собеседованию по всяким видео интервью и статьям.
          Как итог имеем следующее, мы потеряли деньги, мы потеряли время, нам заново нужно искать кандидата. Кандидат же при этом получил свой опыт в крупной компании и деньги. Теперь давайте помножим этот риск на масштабы найма в крупных компаниях. Хотя мы могли дать упрощенные задачи из реальных тасок команды и отсеять такого кандидата.


          1. kazimir17
            19.05.2023 14:36

            Безусловно, как можно подготовиться и к лайвкодингу, да у вообще вся предыдущая жизнь человека это в некотором смысле подготовка к собеседованию :) Вообще типы собеседования это скорее дань моде: я например застал периоды когда модно было говорить за паттерны проектирования (тогда Фаулер и GoF были на слуху), потом были nosql базы и CAP теорема, потом вопросы про люки и гномиков, сейчас популярно делать несколько сессий с кодингом, наверное где-то были еще и стресс собеседования но они мимо меня прошли. В целом это ничего особо меняет в качестве подбора кандидатов и успешности проектов. Представьте вам нужно набирать сотрудников в некую силовую структуру, нужно провести входной контроль по физическим способностям, варианты: спарринг с несколькими противниками, забег на длинную дистанцию, заплыв на длинную дистанцию, гребля. И вроде как не так уж и важно какой вариант выбрать, ну просто в одном случае у вас будет чуть больше гребцов, а в другом борцов. Но с другой стороны важна мотивация и если человек хочет служить в данном подразделении то он подготовиться под конкретные тесты.