[Из песочницы] Антисобеседования
Я побывал на многих плохих собеседованиях, и в качестве кандидата и в качестве ведущего, и в качестве наблюдателя. В результате сформулировался крайне субъективный набор заметок о том, как стоит и как не стоит проводить собеседование разработчиков.
Собеседование — это экзамен
Ведущий — строгий учитель, а кандидат — студент. Классический сеттинг. Обычно проходит так. Спросили откуда ты, что ты, и потом пошло техническое собеседование.
Начинается с простых вопросов на раскачку, примерно таких:
«Как написать накопленную сумму на чистом sql? Используя аналитические функции?»
«В чем разница между хэш-контейнером и контейнером на основе дерева? Почему нельзя обойтись только одним? Может ли tree_map работать быстрее hash_map? В каких случаях?»
Вопрос. Следующий вопрос. Экзаменатор всегда прав и строг. Студент-кандидат волнуется, потеет? Хорошо, так ему и надо. Экзаменатор хмурится: «Ну вот же, тут вот так надо было, все просто». Так, все давайте дальше. И так часа два.
Ведущий собеседование фокусирует внимание на задавании относительно сложных и специфичных вопросов. Для него важны вопросы и ответы. Что за человек на них отвечает и как он встроится в команду волнует меньше. Учитель по правилам игры всегда прав, всегда умнее и опытнее. Поэтому часто присутствует страх оказаться глупее. Что провоцирует задавать вопросы поумнее и интереснее. И чем богаче опыт и знания в резюме, тем вычурнее и сложнее будут вопросы. Решение принимается по принципу «кто лучше ответил, того и берем».
Кандидат фокусирует внимание на том, чтобы ответить на сложные технические вопросы. И часто ничего кроме вопросов не видит. Когда идет на собеседование готовится к ним, пытается узнать зараннее. Выходит с собеседования, прокручивает, что же он ответил, правильно ли ответил, и «какую оценку я получил»? Часто плывет и стрессует, потому что срабатывает модель поведения, знакомая со школы и университета: «на экзамене». Про место работы спрашивает немного, мало и сумбурно. Не пытается узнать, особенно, если плохо ответил, подходят ли ему условия работы. Главное сдать экзамен, а дальше разберемся.
В таком карикатурном виде собеседования редко проводятся. Но тень экзамена часто витает. Собеседование должно отвечать на вопрос «А подходим ли мы другу другу?» и экзаменационный сеттинг этому мешает.
Благодаря этому замечательному подходу, мы имеем уникальную возможность работать с очень умными мудаками, профессиональными проходимцами собесов, имеем счастье получить в наставника прекрасно ответившего на все технические вопросы и выполнившего все тестовые задания плоскоземельщика и любителя теории заговоров. И избавлены от работы со многими хорошими людьми, которые бы прекрасно справлялись со своими обязанностями. Но вот не оказалось у них настолько же специфичного опыта, как и у собеседующего, или не настолько хорошо человек подготовился, как надо было.
На самом деле собеседование — это свидание. И за одно часовое свидание надо решить готовы ли вы будете жить вместе в горе и радости, если не оставшуюся жизнь, то хотя бы год.
Цель экзамена — оценить максимально объективно знания. Цель собеседования — выяснить подходите ли вы друг другу. Знания, лишь одна из переменных, на которые стоит смотреть. Стоит искать человека подходящего конкретному руководителю, в конкретной роли для конкретного проекта, в конкретной команде.
Пока ты собеседуешь кандидата, он — собеседует тебя
Собеседование — это обоюдный, взаимный процесс. Кандидат продает свои умения, компания продает свое место работы. И это же относится к испытательному сроку. Испытательный срок идет как для кандидата, так и для компании.
Но когда продаете компанию и работу, не стоит переусердствовать. Продавать — одно, врать — совсем другое.
Зачем рассказывать про бигдату, интересные клевые задачи и свободу творчества, если когда человек выйдет на работу, этого всего не будет? Главное завлечь, а дальше хоть потоп? Это оборачивается сплошными минусами для компании. Человек поработает несколько недель или даже месяц, поймет что все не так и уйдет. Это прямые потери на найм, вывод и обучение сотрудника. А потом на каждом следующем собеседовании он будет рассказывать, почему в компании «Рога и Копыта» он проработал всего пару месяцев и как эти мудаки его обманули.
Счастье происходит, когда компания адекватно оценивает кандидата, и когда кандидат адекватно оценивает компанию и место работы.
Лучшая продажа — это честно показать, какие конкретные задачи делаете, конечно же с акцентом на интересующиеся и важные для кандидата моменты. Познакомить с командой, или дать возможность команде пособеседовать самой. Рассказать про реальные задачи, про то, какие есть в работе особенности как хорошие и так плохие. Так у человека не будет когнитивного диссонанса, эффекта неоправданных ожиданий. А принятое им решение будет адекватным.
Честность и открытость — необходимое условие как для счастливого брака, так и для собеседования. От честности и открытости выигрывают в конечном итоге все.
Сколько роботов, которые переключают лампы в комнатах бесконечного тоннеля, нужно, чтобы затрахать кандидата, убить кучу времени и ничего при этом не получить?
Что кандидате проявит при решении лампочной/олимпиадной задачи про роботов? Узнаем ли мы, насколько подходит кандидат к выполнению той работы, которую мы можем или хотим ему предложить? Поймем ли мы, например, способность кандидата к написанию сервисов на golang? Или насколько подойдет человек для написания внутреннего интранета с нуля? Нет. Никак этот вопрос не проявляет способностей человека, кроме одной — способности решения лампочных вопросов. Умение решать олимпиадные задачи не переносится на умение разрабатывать промышленный код. К сожалению.
Существует миф, что такая задача покажет ум и интеллект, способность человека рассуждать. На самом деле нет. Опыт показывает, в таких задачах лучше всего будет рассуждать тот, кто уже такие задачи решал. А соображалку может показать и вполне себе обычная стандартная задача.
Что покажет ответ на вопрос «Какие сортировки за линейное время знаешь? Быстрая сортировка является устойчивой? Какие алгоритмы устойчивые? Как сделать из неустойчивой устойчивую?» Для человека, которому хотим поручить 90 процентов времени клепать формы? Алгоритмическую эрудицию и хорошие базовые знания — да. Узнаем ли мы, насколько подходит кандидат для нас? Нет, не узнаем. В данном случае, это бесполезный для нас вопрос. И это прекрасный вопрос, если мы ищем системного разработчика для создания высокопроизводительного сервера со сложными алгоритмами.
«Что такое синглтон? Как работают метаклассы в питоне? А напишешь декоратор?». Замечательные, восхитительные вопросы. Если вы хотите найти человека, который пишет синглтоны на метаклассах и оборачивает их в декораторы каждый день или хотя бы несколько раз в неделю. Во всех остальных случаях, вы узнаете, подготовился человек к собесу или есть ли у человека недавний не релевантный опыт.
Какие технические навыки и знания вскроет вопрос «В чем разница между select count (*), select count (1) и select count (column)»? Не так уж и много. Что либо человек уже отвечал на него на других собеседованиях или пару раз в своей разработческой жизни он сталкивался с этой разницей.
Как понять, что человек будет хорошо справляться с той работой? Удивительно, но лучший способ узнать — это дать ему задачи, максимально приближенные к тем, что ему придется решать 99% времени, каждый день.
Придется программировать? Дайте задачу на реализацию простого алгоритма. Придется писать на SQL несложные запросы? Дайте простую задачку на left join. Придется разрабатывать веб приложение? Спросите, как устроен хотя бы примерно http. Придется делать прогнозные модели? Спросите центральную предельную теорему по Ляпунову и метод максимального правдоподобия (на самом деле, нет).
Простые и понятные вопросы хороши тем, что они показывают базовые знания и навыки, которые используются каждый день. Плюс на простых вопросах намного меньше вероятность словить ступор и фрустрацию у кандидата. Стресс-собеседование — это то, что нужно меньше всего при собеседовании разработчика.
Как же на не сложных вопросах понять, насколько хорош программист? Все просто. Хороший, опытный программист решит быстрее, четче и лучше простую задачу.
Сложные вопросы и сложное собеседование иногда можно устраивать, но только как элемент продажи, и очень, очень аккуратно.
Светлая голова важнее фреймворка, а работа в команде важнее хэш-таблицы
Вы наняли человека и вдруг оказалось, что он знает ваш любимый фреймворк не так хорошо. Ошиблись, бывает. Что стоит исправить? Разработчик по несколько часов в день посвящает работе с фреймворкам и программированию. Подучить фреймворк или еще один метод сортировки — это вопрос времени.
Вы наняли человека и внезапно оказалось, что знание внутреннего устройства хэш-таблиц ему не помогло, и человек просто соображает мееееедлееееено. Ошиблись, бывает. Только добавить мозгов уже не получится.
Цена ошибки разная. Обращать внимание надо на то, что поменять тяжело или невозможно в рамках работы. Это соображалка, стиль взаимодействия, базовые установки, амбиции, образ мышления. Научить работать в команде — сложно, изгнать тараканов из головы — сложно, исправить мудака или корпоративного психопата — нельзя, насильно изменить систему мотивации — невозможно, добавить проактивности — анреал, внедрить новый паттерн поведения — тяжеловато.
Отсутствие знаний и опыта — это вопрос времени. Поэтому проактивность, интеллект, общая адекватность и хорошие базовые знания забарывают хард-скиллы на длинной дистанции.
Но, к сожалению, чаще всего софт-скиллы на собеседованиях недооценивают, а техническую часть переоценивают.
Общаться и представлять компанию должен тот, кто принимает решение
HR-ы, какие бы хорошие они ни были, не понимают специфику работы, а потому правильно продать разработчику компанию не смогут. Большинство не способны даже грамотно рассказать про компанию, так чтобы создать приятное впечатление.
Желательно, чтобы HR-ы не принимали участия в переговорном процессе в случае контроферов или сомнениях у кандидата. Чаще всего они не смогут подобрать правильные слова, нужные аргументы и в правильном свете подать команду и компанию. Потому что у них нет всего контекста — они хуже знают, как обстоят дела в команде, они хуже понимают мотивацию конкретного человека, по сравнению с человеком, который непосредственно работает в команде и который уже как минимум час пообщался. Если есть возможность, желательно эту часть собеседования брать в руки собеседующему. Только он сможет это лучше всего сделать.
В глазах кандидата больший вес будут иметь слова человека, который его собеседовал, который такой же как и он — разработчик, инженер, с которым можно поговорить на одном языке, который на самом деле знает, чем придется заниматься, а не девочки 25 лет от роду, которая как попугай повторяет «хайлоуд, блокчейн, бигдата, дмс, офис, плюшки, молодая динамично развивающаяся компания» и которая скажет все что угодно, лишь бы закрыть вакансию.
Желательно исключить предварительные собеседования с HR-ами. А то вдруг окажется, что половина кандидатов отсеивается, потому что «пирсинг и наколки, он скорее всего наркоман», «девочка была одета слишком вызывающе», «я не увидел у него желания работать в нашей компании» и т.д. А также минимизировать по возможности участие HR-ов в отборе резюме. А то вдруг окажется, что половину кандидатов отсеивают, потому что «работал 5 лет на одном месте — это звоночек!», «старше 40 — наверное уже мозг старый и много денег захочет», «студент — значит, нифига не знает, смотреть не будем».
Это происходит, потому что HR-ы не могут правильно оценить культуру и специфику работы в команде, в которой они не работают 24 на 7. И к предубеждением ведущего добавят еще и свои.
Общаться и представлять компанию должен тот, кто принимает решение.
Есть ложь, наглая ложь, а есть — резюме
Проблема с резюме в том, что в них написана неправда. Т.е. с формальной точки зрения может быть и правда. Но многого в резюме не видно — ни как работает соображалка, ни как человек взаимодействует с командой, ни каков реально опыт, ни что прямо сейчас из себя представляет человек. Не видя полный картины человеческий мозг дорисовывает все остальное и верит в сложивший образа в голове. Только вот этот образ формируется на основе личных предубеждений.
«Он писал на PHP несколько лет, ну точно быдлокодер»
»10 лет на Си, а сейчас хочет писать на реакте, серьезно?»
«Работает в каких-то неизвестных госконторах, опыта никакого, не буду тратить время»
«О, ничего себе человек поработал Рамблере, Мейле, да еще и поруководить успел. На конференциях выступал с докладом. Крутой должно быть чувак»
«Chief data scientist — неплохо, в яндексе поработал, и на кагле отметился, и гитхаб ведет, клевый, скорее всего нам подойдет»
«Не смог закончить высшее? Я таких даже смотреть не буду, мне нужны люди, которые умеют доделывать дела до конца».
Часто оказывается большинство этих предубеждений не имеет ничего общего с реальным человеком. И работают против нас. Часто, в резюме — Лев Толстой, а на собеседовании оказывается попроще. Или наоборот. По резюме слабенький кандидат, а в итоге делаешь во время собеса офер.
Когнитивный диссонанс между образом в голове и реальным человеком часто играет злую шутку. Человек может быть и подошел бы, но т.к. не оправдал ожиданий, поэтому и не берем. Верно, и обратное, человек не так чтобы силен, но превзошел ожидания, поэтому о нем мнение сразу лучше, и вероятность офера возрастает. При этом если резюме совсем плохое, могут даже не позвать.
Жизнь намного интереснее, объемнее и неожиданней, чем текстовая выжимка с хх.ру.
Не читайте резюме до собеседования. Да и на собеседовани тоже. Любые выводы, сделанные на основе резюме — делите на 100, а то и на 1000. Если возможно фильтруйте людей на основе резюме как можно меньше.
Хорошая иллюстрация как происходит отбор кандидатов по резюме, правда из постановочной передачи с украинского ТВ
Работаешь, уткнувшись в ноутбук, во время общения с кандидатом?
Знай, ты — не цезарь, ты — чмо, которое ведет себя неуважительно. Какой смысл приходить на собеседование и тупить в фейсбук, троллить в телеграмме или кодить? Выглядит это не очень красиво и не очень эффективно.
Почему бы не использовать максимально время, чтобы понять, что из себя человек представляет? Когда ты даешь задание на собеседовании человеку или спрашиваешь вопрос — это уникальная возможность понаблюдать за ним. Как он будет делать реальный таск прямо здесь и сейчас? Будет ли он задавать вопросы? Какие он будет задавать вопросы? Как он реагирует на критику? На сколько коммуникации эффективны? Как работает серое вещество?
Но, конечно, интереснее пообщаться с коллегами, покомментировать таски в жире, поревьюить джунов. Только потом не удивляйтесь качеству набранного «материала».
Никогда не перезванивайте кандидату
Просто давайте обратную связь по окончанию собеседования. Честную, открытую и сразу. Поняли, что человек подходит? Так сразу и скажите — «сегодня, завтра жди офер на почту». Не подходит? Тоже скажите. Сомневаетесь? Скажите, что сомневаетесь и обсудите с кандидатом, как ваши и его сомнения разрешить. Только не надо вот этого «Наш hr с вами свяжется через неделю с решением».
Многим тяжело отказывать казалось бы неплохим ребятам лично, глядя в глаза. Если скажешь нет, надо еще и объяснить. Но это ваша ответственность. Кто принимает решение, тот и общается. Сожмите яйца в кулак и дайте честную и открытую обратную связь.
Да, это еще и уметь надо делать. «Ты — дно, которое не умеет программировать, поэтому давай закончим собес» — не самая лучшая обратная связь. Ты — лицо компании, оскорбления и грубость запомнятся надолго и отразятся на репутации. Вообще, умение давать обратную связь — это необходимый навык для любого тимлида.
Люди, у которых нормально с софт-скиллами, обычно позитивно воспринимают обратную связь в такой форме: «К сожалению, мы не готовы предложить тебе работу, потому что нам требуется человек с несколько другим набором навыков и умений. Если тебе у нас понравилось, подтяни это и это, подтянешь — приходи.»
Если вдруг на собеседовании встретился мудак, корпоративный психопат или плоскоземельщик, то обратная связь таким человеком будет восприниматься плохо и травматично. Тут нужно очень аккуратно.
Если человек начинает спорить, что он на самом деле «сеньор», а не «джун», то обычно лучше не вовлекаться, а просто сказать правду: «Час это слишком мало для того, чтобы хорошо узнать человека, его навыки и умения. Вполне вероятно, что мы ошибаемся на твой счет. Но такова жизнь, нам нужно за этот час принять решение. И мы понимаем, что может быть совершаем ошибку, но эта ошибка будет на нашей совести».
Не стоит обвинять человека в его неумении или незнании, в том, что он потратил наше драгоценное время. Такие обвинения говорят лишь о незрелости обвиняющего. То, что кто-то что-то не умеет или не знает, не делает человека плохим, негодным материалом или негодяем. Сегодня не знает, завтра выучит. Просто прямо сейчас вам нечего ему предложить. И человек в этом не виноват. Окажите человеку услугу, дайте обратную связь, адекватным и хорошим людям это важно. Почему бы и не помочь хорошему человеку?
И да, если действительно хотелось бы еще посмотреть на другие варианты. Стоит сказать правду: «Ты — ок, но мы бы хотели посмотреть еще кандидатов. Если до конца недели не позвоним, значит, — нет. Если да, то позвоним и скажем».
Час — слишком мало
Даже два или три. Собеседование показывает не больше и не меньше, чем что человек смог ответить на конкретные вопросы и решить конкретные задачи в условиях собеседования за отведенное время. То, что мы уже на основе этого пытаемся делать долгоиграющие выводы — это наши проблемы. И сказать честно, мы эти выводы делаем не очень-то и хорошо.
В классическом собеседовании при всем желании приблизить окружение к боевым не получится. И много чего мы не видим. Есть люди, у которых плохо получается раскрыться из-за стресса. Есть профессиональные проходимцы — у которых хорошо развит навык прохождения собеседований, но плохо остальные навыки. У меня было много ситуаций, когда не брал, потом кусал локти. Или брал, но потом увольнял.
Стоит доверять и собственным субъективным ощущениям. Человек обычно умнее собственного мозга. И если интуиция говорит, что не стоит, значит, действительно не стоит.
Час это слишком мало для того, чтобы хорошо узнать человека, его навыки и умения. Вполне вероятно, что мы ошибаемся на счет кандидата. Но такова жизнь, нам нужно за этот час принять решение. И мы понимаем, что может быть совершаем ошибку, но эта ошибка будет на нашей совести.