Привет, меня зовут Артём Пулявин, с 2022 года я занимаю позицию технического директора в Ситидрайве и отвечаю за всё IT в компании — от закупки серверов и ноутбуков до разработки и найма новых членов команды. За 20-летнюю карьеру я провёл более 1 000 собеседований и взял на работу более 100 айтишников. А в Ситидрайве за последние 2 года увеличил команду в 3 раза.

На Хабре уже есть статья от нашего HR-менеджера о том, как в компании выстроен процесс найма IT-специалистов. В этом материале я расскажу именно про этап технического собеседования: на что обращаю внимание при подборе новых членов команды в Ситидрайве и по каким критериям оцениваю кандидатов, а также дам рекомендации, как вести себя на финальном собеседовании. 

Обычно на интервью я проверяю, насколько хорошо кандидат умеет писать код, и оцениваю, комфортно ли ему будет работать с нашим темпом, командой, вольётся ли он в культуру компании. Поэтому для себя я разделяю процесс финального собеседования на 3 составляющие: первичный скрининг резюме, оценка hard и soft skills. 

ЭТАП 1: Скрининг резюме

Перед каждым собеседованием я просматриваю резюме кандидата — оцениваю насколько он соответствует нашим внутренним критериям и составляю список вопросов для уточнения. Да, у нас есть критерии идеального кандидата. Настолько идеального, что соответствовать им всем невозможно, я и сам по нескольким из них не подхожу ?

Логично спросить — а зачем вы тогда вообще их придумали? Всё просто — они помогают выбрать между 2 кандидатами и, опираясь на эти критерии, я могу собрать список уточняющих вопросов на собеседовании. Ниже приведу примеры.

Критерии для сотрудников уровня middle и senior

  1. Опыт работы в нашем стеке. Приветствуется, если кандидат уже работал на Go в 2–3 компаниях до нас. Но если он пишет, например, на C#, а на Go работал полгода, и при этом проявляет большой интерес к переходу на наш стек, это не станет препятствием для найма. И мы, как компания, даже поможем с обучением. На собеседовании я задам уточняющие вопросы, чтобы понять мотивацию перехода на новый стек, и убедиться в серьёзности намерений. 

  2. Опыт в продуктовой разработке. Кандидат должен понимать особенности продуктовой разработки, а ещё лучше — знать наш продукт. Здесь будет плюсом — заранее изучить предметную область, с которой предстоит работать. При этом, если кандидат не успел подготовиться и почитать подробно про деятельность компании — «минус балл» тоже не получит. 

  3. Множественный опыт работы. Для меня важно, чтобы кандидат имел опыт работы в более, чем 3 компаниях. Также если человек отработал 10 лет в одном IT-гиганте и вырос с junior до senior — это положительный фактор. Однако, если это небольшая компания с узким стеком — я буду задавать дополнительные вопросы, чтобы понять, насколько человек гибкий. Мне важно, чтобы кандидат смог быстро влиться в коллектив, вникнуть в наши проекты.

  4. Каждое место работы от 1 года, есть места от 2 и более лет. Компаниям выгодно, чтобы сотрудники работали как можно дольше, и если человек каждый год менял места работы, то какая вероятность, что у нас он проработает дольше? Это как раз тот маркер, по которому я сам не взял бы себя на работу несколько лет назад. У меня был опыт быстрого перехода из компании в компанию с разными проектами. Так, например, руководил разработкой электронной читалки в Alpina Digital, потом отвечал за серверную разработку FoodMate, которая влилась в Delivery Club, а после делал то же самое в FoodFox, которая стала Яндекс.Едой. В такой ситуации я буду уточнять, чем обусловлены такие переходы? Карьерный рост? Выгорание? Поиск себя? Закрылась компания? 

Список критериев для junior специалистов

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

ЭТАП 2: Проверка Hard skills

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

На техническом интервью мне важно понять, как кандидат перфомит — сколько задач может закрыть за ограниченное время. А также оценить, как он работает в команде. Для этого заготовлено 4 стандартных задачи. 

  • Если человек сделал одну задачу — довольно слабо, но хорошо для джуна.

  • Две задачи — крепкий середнячок. 

  • Три — крутой «перформер». 

  • Ну а если кандидат успел решить все 4 задачи — это топовый сотрудник, редчайший случай. У меня за всю карьеру таких было всего пару человек.

Разные задачи проверяют разные навыки

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

Во второй задаче главное требование оптимизация кода. Её выполнение показывает, может ли кандидат сэкономить число проходов, трату оперативной памяти. И это требование не озвучивается изначально — его нужно «вытащить» при получении задачи. 

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

Задачу можно сделать на разном уровне качества. Ключевое здесь — обговорить этот уровень до того, как начинать писать код. Банальный вопрос: «Что требуется: чтобы код просто выдавал нужный результат или чтобы это было оптимизированное решение?» — поможет не тратить лишнее время и покажет вас инженером, который может вести конструктивный диалог с заказчиком.

Можно взять подсказку

Бывает так, что кандидат упирается в одну задачу — иногда прямо в первую — и просто не может двигаться дальше. Опять же, это можно решить не только умением программировать, но и умением говорить. Например, напрямую сказать: «Эта задача совершенно не идёт. Есть ли другая, на которой я могу себя показать?». Я либо попытаюсь направить в нужное русло, либо просто дам следующую задачу.

Спрашивать напрямую, что тут нужно делать не лучшее решение. Продемонстрируйте ход своих мыслей, и это поможет получить дельный совет при минимальном минусе в карму: «Есть сомнения. У меня вот такая идея: <описание>. Я мыслю в правильном направлении или я зашёл не туда?».

Не стесняйтесь уточнять «правила игры» до написания кода и общаться в процессе. Лучше взять 2–3 подсказки и решить 3 задачи, чем решить 1 задачу, но без подсказок.

Можно даже загуглить!

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

Надо быть готовым во время собеседования:

  1. Работать быстро и перфомить.

  2. Общаться с заказчиком.

  3. Понимать, что задачи могут быть типовыми и нетиповыми.

  4. Оптимизировать предложенное решение.

ЭТАП 3: Проверка Soft skills

Техническое собеседование — это не только про написание кода. Инженер примерно 70% рабочего времени пишет код и 30% — общается с коллегами, менеджерами и другими командами. На техническом собеседовании соотношение такое же: 70% направлено на оценку написания кода и 30% — на то, как кандидат взаимодействует со мной в роли заказчика. 

Я часто проверяю soft skills во время решения задач на техническом собеседовании — уже на том этапе я могу понять, как человек будет справляться с разными ситуациями. По сути, когда я даю какую-то задачу, то смотрю не только, как кандидат её решает, но и как принял, какие вопросы задаёт, как комментирует работу, доводит ли до конца. 

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

  1. Направленность на результат

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

  1. Направленность на саморазвитие

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

  1. Направленность на партнёрские отношения

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

  1. Ответственность

Чтобы оценить уровень ответственности, я могу спросить, что кандидат предпринимал, когда его работа не соответствовала результатам заказчика? Бывало ли, что результат работы не соответствовал его ожиданиям? 

Пройти собеседование — это попасть в ожидания. И я также пытаюсь попасть в ожидания кандидата. Рассказываю о компании, стараюсь заинтересовать нашим стеком. Рассказываю про цели компании на год, и как кандидат может развиваться вместе с нами и достигать своих личных целей.

Оценка и обратная связь

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

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


  1. datacompboy
    09.04.2024 09:49
    +2

    А можно пример фидбека, который вы формируете?

    И что происходит если сразу после интервью на "а теперь время вопросов в отместку" задают "ну, как оно было, какое первое впечатление?".


    1. yonesko
      09.04.2024 09:49
      +6

      Можно:

      Большое спасибо за интерес, проявленный к вакансии "Middle Go Developer (Ситидрайв)". К сожалению, в настоящий момент мы не готовы пригласить Вас на дальнейшее интервью по этой вакансии. Мы внимательно ознакомились с Вашим резюме и, возможно, вернемся к Вашей кандидатуре, когда у нас возникнет такая потребность.

      С уважением,

      Инга



      1. nicosha
        09.04.2024 09:49
        +4

        "Возможно, когда возникнет потребность"? Серьезно? Это вас на курсах так учили отказывать кандидатам или сами придумали как отшить так, чтобы, когда у вас возникла потребность, у кандидата уже не было желания у вас работать?


    1. realbot
      09.04.2024 09:49

      дык "по нашим стандартам мы не даем фидбек для кандидата на интервью"


  1. scruff
    09.04.2024 09:49
    +6

    В принципе ничего выдающегося. Аналогичный подход присутствует и в других 100500 компаниях


    1. datacompboy
      09.04.2024 09:49

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

      Так что повторить еще раз, что задача понять как кандидат думает, и как он адаптируется к постоянно меняющимся требованиям -- не лишнее.

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


      1. novoselov
        09.04.2024 09:49
        +1

        Речь про то что человек провел 1000+ интервью, а из "секретов" только то что никто не решает 4 задачи. Ничего нового, кроме копирования существующих практик.

        зачем кто-то просит кодить в блокнотике

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

        к чему тупой впорос по алгоритмам

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

        вопросы, ответы на которые в резюме

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


  1. evoq
    09.04.2024 09:49
    +1

    Неплохо. Но схожих статей много. А вот про найм архитекторов, delivery, PO читать гораздо интреснее


  1. metamorph
    09.04.2024 09:49
    +8

    А почему CTO занимается проведением технических интервью? Разве это не задача тимлидов?


  1. ReDev1L
    09.04.2024 09:49
    +6

    "ищу топовых перформеров" и "Поскольку я прошу писать код в редакторе без автодополнения" - взаимоисключающие параграфы.

    Зачем так делать?


  1. FFunk
    09.04.2024 09:49

    "И это требование не озвучивается изначально — его нужно «вытащить» при получении задачи."

    Сомнительная практика.


  1. yonesko
    09.04.2024 09:49
    +3

    А спрашиваете ли обратную связь от кандидата? Или существует вера в собственную непогрешимость?

    Есть ли связь между поведением человека на собеседовании и в реальной работе? Так то можно наклоунадить любое поведение.

    Проверяете ли что "перформер" "перформит", а коммуникатор коммуницирует и после собеседования, где он показывает себя максимально хорошо с целью выбить хорошую ЗП?

    Проверяете ли что люди продолжают в блокноте писать код? А то вдруг перформанс упадет?


  1. Serge1001
    09.04.2024 09:49
    +1

    я прошу писать код в редакторе без автодополнения

    Зачем так делать?


  1. Seven-ov
    09.04.2024 09:49
    +3

    Зашел почитать, как людей принимают на Станцию Технического Обслуживания, а оказывается тут 100500 копия бреда про прием айтишников. =[


  1. Dywar
    09.04.2024 09:49

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