Привет, Habr!

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

Вопросы на собеседовании — вчерашний день 

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

Для кандидата:

  1. Обычно люди испытывают очень сильный стресс от собеседований-допросов. На фоне стресса они часто что-то забывают, путают, иногда даже начинают гуглить, делая вид, что вспоминают. Словом, делают то, что на самом деле ничего не говорит об их технических знаниях. Мне доводилось встречать кандидатов, которым жизненно необходимо было курить на собеседовании — из-за нервов. Кто-то может на это возразить, что кандидат должен быть стрессоустойчив, но стресс на собеседовании никак не соотносится со стрессом на работе: мой опыт показывает, что это абсолютно разные вещи.

  2. У разработчиков часто прослеживается синдром самозванца, который собеседующий на подобных интервью часто пытается использовать, «задавив»  кандидата, чтобы он не попросил высокую зарплату. Это негативно влияет и на личность кандидата, и на его последующую работу.

Для работодателя:

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

Для тимлида:

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

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

Идеальный тип собеседования: бизнес-кейс

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

Перед тем, как рассказать подробнее про план собеседования, определим понятия:

Бизнес-кейс — это ситуация, которая возникает в работе компании и требует принятия решений. Разрешение бизнес-кейса может потребовать от сотрудника не только знаний и навыков, но и креативного мышления и способности быстро принимать решения.

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

Как я провожу собеседования 

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

Этап 1. Планирование разработки

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

Хард-скилы: архитектура, сторонние зависимости.

Софт-скилы: планирование и целеполагание, тайм-менеджмент, самостоятельность, системное мышление.

История из практики: однажды на этом этапе закончилось мое самое быстрое собеседование. На «С чего ты начнешь разработку приложения?» мне ответили, что я задаю глупые вопросы.

Этап 2. Начало разработки

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

  • увеличение / уменьшение минимальной версии iOS: это проверка на знание и использование новых технологий.

  • запрет на использование каких-то технологий: проверяю умение решать проблемы различными способами.

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

Хард-скилы: UI, модульная архитектура, API, многопоточность, debug-инструменты.

Софт-скилы: командная работа, самостоятельность, адаптируемость, креативность, открытость к новому.

История из практики: мое самое любимое условие в этом пункте — работа в режиме отсутствия команды бэкенд-разработки. Мой самый «любимый» ответ — «попрошу доступы к коду и напишу все сам».

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

Этап 3. Выкладка в магазин приложений

Здесь интересно умение анализировать проблемы в приложении, особенно в ситуациях, когда локально проблема не воспроизводится, «у меня все работает».

Обычно постановка задачи звучит так: «Мы выложили протестированное приложение, а пользователи жалуются, что оно не работает». Вариации решения и анализа проблем бывают разные, в зависимости от уровня разработчика, но основная характеристика — желание помочь пользователям.

Хард-скилы: исследование крашей, логирование, фичатоглы, поэтапная раскатка, аналитика, backend driven ui.

Софт-скилы: инициативность, нацеленность на результат, критическое мышление, умение слушать, эмоциональный интеллект, клиентоориентированность, ответственность за результат.

История из практики: однажды собеседование завершилось на этом этапе после слов кандидата «но у меня же не воспроизводится, это их проблемы».

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

Этап 4. Набираем команду

Предлагаю кандидату выстроить работу команды. Для утрирования ситуации обычно рассматриваем вариант, когда в команду к сильному разработчику (кандидату) нанимают 5 джуниор-разработчиков.

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

Хард-скилы: гитфлоу, автотесты, таск-трекер, автогенерация, ci/cd, кодревью.

Софт-скилы: многозадачность, проектное мышление, убеждение и аргументация, командная работа, делегирование, наставничество.

История из практики: на этом этапе часто «раскрываются» люди, не желающие работать в команде. Однажды кандидат предложил урезать ему будущую зарплату в обмен на то, что мы дадим ему работать одному.

Этап 5. Кодревью

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

Плюсы собеседования в режиме бизнес-кейса

  1. Низкий уровень стресса у кандидата.

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

  1. Позитивный образ работодателя.

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

  1. Проверка софт-скилов.

Я считаю, что софт-скилы кандидата не менее важны, чем хард-скилы. Такой способ собеседования позволяет мне узнать и то, и другое. Честно говоря, при проверке софт-скилов в таком режиме мы довольно часто встречаем «красные флаги» — нежелательные особенности кандидата, о которых в ином случае мы узнали бы только на испытательном сроке.

  1. Практика, а не теория.

Теорию могут заучить почти все. Применять эту теорию на практике могут немногие.

  1. Погружение в проект.

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

  1. Экономия времени.

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

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

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


  1. ErshoffPeter
    19.07.2023 13:58
    +4

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


  1. Leetc0deMonkey
    19.07.2023 13:58
    +3

    О да, чем лучше кандидат отвечает на теорию, тем хуже он на самом деле умеет работать. Прямо как антипаттерн на собесах можно использовать.


    1. alexstars525
      19.07.2023 13:58

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


  1. shark14
    19.07.2023 13:58
    +7

    Предлагаю кандидату выстроить работу команды. Для утрирования ситуации обычно рассматриваем вариант, когда в команду к сильному разработчику (кандидату) нанимают 5 джуниор-разработчиков.

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

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


    1. Leetc0deMonkey
      19.07.2023 13:58
      +1

      ближе к обязанностям тимлида

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


    1. shybovycha
      19.07.2023 13:58

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

      • хард-скиллы по всем фронтам - от разработки (благо в веб-ориентированой работе осталось еще разделение на фронт- и бекенд работу, то настоящий фулл-стек не требуют)

      • деплой - настройка и поддержка CI/CD, разворачивание окружений

      • тестирование на всех уровнях - ответственность и за тесты в коде, и за процессы тестирования, и за CI/CD, и за метрики-мониторинг, и собственно саппорт - on-call и прочее взаимодействие с пользователями

      • менторинг, хайринг

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

      • при этом человек должен сам отвечать за свой карьерный рост - планировать его и исполнять план, чтобы не застаиваться в позиции

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


      1. N4N
        19.07.2023 13:58

        Это и во многих компаниях РФ так. Но в одну команду несколько синьоров только не набивают конечно)


    1. Pashamalkov Автор
      19.07.2023 13:58

      Мы ищем программных инженеров)

      Но спасибо за комментарий! Мы действительно стараемся максимально подробно расписать требования к вакансии. Все, что не входит в требования, как правило, не является причиной отказа кандидату. Однако, мне очень полезно на этом этапе узнать дополнительные возможности/желания кандидатов, чтобы потом успешно применять это в рабочем процессе

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


  1. stackjava
    19.07.2023 13:58
    +2

    Звучит очень здравомыслеще.

    Однозначно, лучше классического собеседования.


  1. Slavik7
    19.07.2023 13:58
    +3

    Мой самый «любимый» ответ — «попрошу доступы к коду и напишу все сам».

    Кавычки у слова "любимый" подразумевают, что это плохой ответ? Если так, то почему? =)


    1. Ohar
      19.07.2023 13:58
      +2

      Тоже интересно.
      Единственная гипотеза: автор предполагает что надо просить нанять команду.


    1. Pashamalkov Автор
      19.07.2023 13:58
      +1

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

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


  1. Slavik7
    19.07.2023 13:58
    +1

    Может быть не очень корректно писать 2 комментария подряд, но, имхо, они разные, поэтому разделил.

    Лично я считаю такой подход хорошим и даже стало интересно самому провести такой собес. Наверное, лучше всего предлагать кандидатам ситуации, которые реально случались на проекте, тогда решение кандидата можно будет сравнить с тем, как эта проблема уже когда-то решилась в реальности. И вот тут может оказаться несколько вариантов:
    1. кандидат не додумается ни до какого решения, либо придумает что-то очень плохое вообще не туда;
    2. кандидат будет мыслить в верном направлении и либо придет к тому же, - идеальный кандидат, либо ему чего-то не хватит, что тоже его делает отличным кандидатом, у которого еще всё впереди;
    3. кандидат придумает решение еще круче.

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


  1. Panda_sama
    19.07.2023 13:58
    +12

    а после успешного собеса выходишь на работу и там опять JSONы перекладывать


  1. varton86
    19.07.2023 13:58
    +1

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


    1. Leetc0deMonkey
      19.07.2023 13:58

      Раньше так и было.


  1. event1
    19.07.2023 13:58

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


  1. Istanbul
    19.07.2023 13:58

    Благодарю, что поделились опытом.

    Подготовка бизнес кейсов к конкретной вакансии с учётом внутренней специфики фирмы и требований, которые они предъявляют к соискателю, дело серьёзное и требует опыта и креативности от


    1. Pashamalkov Автор
      19.07.2023 13:58

      Спасибо!

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


  1. N4N
    19.07.2023 13:58

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


  1. VZ1
    19.07.2023 13:58

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


  1. gluck59
    19.07.2023 13:58

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

    Пробовать снова? А разве работодателю это нужно?

    Немного в сторону с вашего позволения.

    Я откликнулся на какую-то вакансию, отклик сколько-то провисел в "просмотрено", затем получил отказ — все по-классике. Тем временем я продолжал искать и фильтровать вакансии, отправлять отклики, как вдруг я получил интересный ответ на какой-то очередной свой отклик. Текст ответа гласил (цитата копипастом):

    я же вам отказала на той неделе зачем вы опять суетесь???

    "Сначала я не понял, а потом ка-а-ак понял" ©

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

    Скриншот с вашего позволения не цепляю — компания известная на всю страну, все ее знают.