UPD продолжение, часть вторая.

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

Чтобы хорошо провести собеседование, я следую этим принципам.

Требуйте сопроводительный текст

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

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

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

Как составить текст о себе рассмотрим во второй части. Пока что зафиксируйте: связный, грамотный текст кандидата о себе – очень хороший признак.

Ничто не должно мешать

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

Я делал тестовое задание в одной фирме. Меня посадили в самом проходном месте, куда сотрудники выходили развеяться. Рядом стояла дверь, которая ужасно хлопала, а открывали ее постоянно. Я просидел рядом с ней 6 часов. Думаю, понятно в каком состоянии я вышел из здания вечером.

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

Не собеседуйте толпой

Cобеседуйте один на один. Когда с вашей стороны больше людей, имеете моральное преимущество и давите на кандидата. Если приглашаете коллегу, расписываесь в некомпетентности. Со стороны это выглядит жалко. Кандидат смотрит и думает “блин, а кто здесь главный? За кем решающее слово?” Вы и должны быть тем единственным человеком с полной компетенцией – знать и целевую технологию, и управление командой, и фронтенд, и базы данных.

Допускаю, что руководитель фирмы захочет быть с вами. В этом случае предупредите, что начальник будет сидеть в режиме read-only и задаст вопросы в конце. Я бы предпочел разделить разговор на два. Сначала со мной, потом с руководством.

Садитесь рядом

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

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

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

Просите написать код

Собеседование без кода – время на ветер. Удивляюсь, как некоторые вообще ставят вопрос – давать код на собеседовании или нет?

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

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

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

Обычно даю задачу на написание декоратора или составление словаря. Еще люблю задачу на ОРМ. Примеры рассморим ниже в следущих пунктах.

Задайте точечный вопрос

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

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

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

Вопросы должны быть глубокими

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

  • Что кроме функции может быть декоратором?
  • Если экземпляр класса, то какой метод нужно реализовать?
  • Что будет, если декоратор ничего не вернет?
  • Что такое @wraps?
  • Что такое параметрический декоратор, как реализовать?

Другой глубокий вопрос про ОРМ. Есть две таблицы, люди и города. Каждый человек живет в городе. Вывести список людей и городов, где они живут.

Главный момент задачи в том, догадается ли кандидат задействовать оператор join. Если нет, о сеньоре не может быть и речи, но продолжаем. Решаем вопрос с джоином. Какие бывают джоины? Что будет, если у человека в таблице не указан город? С каким джоином мы его увидим, а с каким нет? Чем джоин отличается от юниона? Сможет ли кандидат написать сырой sql?

Разобравшись, кандидат проделает большую работу, а вы увидете, каков он с деле, доводит ли задачу до конца.

Спрашивайте общие вопросы

Старайтесь побольше расспросить о протоколах, базах, транзакциях, алгоритмах. Спросите про функциональное программирование, замыкания и хвостовую рекурсию. Фиксируйте ответы в духе “ФП гавно, все пишут на ООП” – это признак незрелости.

Спрашивайте хотя бы немного о фронтенде, куках, основных видах уязвимости и средств защиты. Как вставить в запрос данные от пользователя? Как валидировать входящий json-документ? Что делать, если тормозит база?

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

Не вынуждайте кандидата лгать

На эту тему я написал отдельный пост: о чем не спрашивать на собеседовании. Коротко – не склоняйте кандидата ко лжи.

Всегда давайте возможность кандидату сохранить лицо

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

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

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

Предложите задать вопросы

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

Пожелайте удачи

Банально, но даже если кандидат провалился, опишите основные ошибки, подскажите литературу и ресурсы. Обязательно пожелайте удачи, чтобы кандидат ушел без обид. Мир очень тесен.

Итак, шпаргалка

  • Требуйте сопроводительный текст
  • Устраните шум и помехи
  • Чем меньше людей, тем лучше
  • Садитесь рядом
  • Дайте задание написать код
  • Задайте один емкий вопрос вместо нескольких мелких
  • Стройте следующий вопрос на основе предыдущего
  • Уделите алгоритмам и протоколам не меньше времени, чем языку
  • Не вынуждайте кандидата лгать
  • Не опускайтесь до выяснения отношений с кандидатом
  • Предложите задать вопрос
  • Разберите ошибки и пожелайте удачи

В следующей части посмотрим на процесс глазами соискателя.