[Перевод] Как нанять талантливого программиста и никому не навредить

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

2096d084944dd3613a9bc8ee23c8c2a0.pngТимлид проводит ревью решения задачи инверсии бинарного дерева, которое собеседуемый сделал на бумаге (источник: Classic Programmer Paintings)

Тимлид проводит ревью решения задачи инверсии бинарного дерева, которое собеседуемый сделал на бумаге (источник:  Classic Programmer Paintings)

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

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

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

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

(Источник оригинала: The oatmeal) * Примечание автора. Я проходил собеседование на должность программиста в Microsoft, когда мне было 19, и мне задали этот вопрос. Вместо того чтобы на него отвечать, я рассказал о том, почему, по моему мнению, то, что люди смывают в унитаз, похоже на маленькие вонючие подводные лодки. Это было за пару минут до того, как я выдал гневную тираду о том, что Windows ME — это худшее, что случилось с компьютерами со времён появления картинок, на которых творится всякое непотребство с коровами да свиньями. Работу я тогда не получил.

(Источник оригинала:  The oatmeal) * Примечание автора. Я проходил собеседование на должность программиста в Microsoft, когда мне было 19, и мне задали этот вопрос. Вместо того чтобы на него отвечать, я рассказал о том, почему, по моему мнению, то, что люди смывают в унитаз, похоже на маленькие вонючие подводные лодки. Это было за пару минут до того, как я выдал гневную тираду о том, что Windows ME — это худшее, что случилось с компьютерами со времён появления картинок, на которых творится всякое непотребство с коровами да свиньями. Работу я тогда не получил.

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

Вот твит Макса Хауэлла, создателя Homebrew, в котором он в двух словах описывает собеседование в Google: «Google: 90% наших инженеров используют программу, которую вы написали (Homebrew), но вы не в состоянии инвертировать бинарное дерево на бумажке, поэтому — на выход».

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

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

Анти-паттерны

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

Собеседование и работа (источник: r/ProgrammerHumor)

Память

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

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

Скорость

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

Наилучшие способы проведения собеседований

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

Предварительная подготовка

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

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

Реалистичность

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

Вот некоторые способы ещё сильнее приблизить к реальности процесс проверки кандидата, выходящие за пределы стандартного формата собеседования:

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

  • Домашняя работа. Предложите кандидатам возможность сделать задание самостоятельно, без наблюдения, предусмотрев при этом встречу с ними, в ходе которой будет обсуждаться предложенное ими решение. Это позволит понять, обладают ли они глубоким пониманием того, что они сделали. IT-индустрия разделилась в вопросе «домашних заданий». Свои преимущества и недостатки есть и у выполнения заданий во время собеседования, и у их самостоятельного выполнения. Почитать об этом можно здесь. Но если предложить кандидатам выбор — это может помочь в соблюдении баланса.

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

Структурирование собеседования

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

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

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

Указание кандидатам верного направления

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

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

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

Умение поставить себя на место другого человека

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

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

Итоги

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

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

О, а приходите к нам работать?

© Habrahabr.ru