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

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

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

25 вопросов


Итак, мы собираемся провести собеседование. На первую, техническую, часть мы готовим 25 вопросов, разбитых на 5 групп, общей длительностью 30-40 мин:

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

Нередко кандидаты пытаются продемонстрировать интерес к тому, чем занимается Ваша компания, или профессии вообще, и уже здесь мы должны сделать первый шаг. Сказать «мне интересно» легко, имитировать интерес невозможно, поэтому мы подберём несколько вопросов, показывающих, насколько в действительности человек интересуется тем, чем он занимается. Посещение конференций, ведение блога, форумы, личные проекты, участие в Open Source разработках, знание новостей мира программирования и истории ИТ, научных идей, вроде цикломатической сложности кода и формальной верификации алгоритмов, принципов KISS, DRY, SOLID и всего того, о чём Вы сами не могли не слышать на работе — это верные признаки интереса. Вопросы могут проходить в форме свободного разговора, однако суть Вам уже должна быть понятна. Интересующийся человек всегда ценен, ведь интерес порождает неподдельное стремление разбираться, развиваться и преуспевать.

Интерес — это всё, без интереса мы всего лишь люди.

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

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

Инструментарий и самооптимизация
(значимость ответов повышается при опыте кандидата менее 5 лет из-за высокой вероятности незнания инструментов и более 15 лет из-за распространённого отказа от дальнейшего развития; особо значима для кандидатов в небольшие высоконагруженные команды)

Эта группа призвана определить, какие инструменты разработки применяет кандидат, и стремится ли он упростить свой труд. Сюда, как нетрудно догадаться, относятся вопросы по системам контроля версий, развёртки и доставки приложений, IDE, возможностям ОС, инструментам планирования и мониторинга кода (измерения сложности программы, покрытия тестами, потребления памяти, maintability индекса...). Эта группа вопросов должна помочь оценить деловитость кандидата, научность и скрупулёзность его подхода.

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

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

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


Специфика и мышление
(актуальность возрастает с ростом сложности должности, на которую рассматривается кандидат — например, Desktop-программирование общего назначения является более простым, чем программирование игр, финансовых или математических программ, Big Data)

В данную группу входят вопросы, непосредственно относящиеся к направлению, на которое рассматривается кандидат. Очень часто (я сам не раз видел подобное) специфичные вопросы не звучат вообще. Это большой грех: Python программист может быть хорошим алгоритмистом или CLI-разработчиком, но совершенно не иметь опыта Web-разработки, и даже не знать её основ. Frontend-разработчик/дизайнер с высокой долей вероятности станет слабым backend-разработчиком и maintainer'ом базы данных. Разработка игр и вовсе особая вотчина. Примеров много — ясно одно: без специфичных для должности вопросов нельзя! В современном программировании слишком много направлений и далеко не все они имеют сходства друг с другом, поэтому опыт в одной вовсе не гарантирует успеха в другой.

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

Что дальше?


Собственно, у нас есть 25 вопросов — что теперь? Теперь нам нужно задать эти вопросы и, опираясь на ответы кандидата, самим ответить на пять вопросов о собеседуемом:

1. Интересуется: он будет стараться, развиваться по собственному желанию, не будет ненавидеть свою работу как таковую?
2. Имеет техническую базу: он знаком с фундаментальными средствами языка, умеет применять их и сможет решать задачи «не из учебника»?
3. Организован и экономен: он ценит своё время, силы, уделяет внимание подбору инструментов и будет стараться упростить жизнь себе и всей команде?
4. Архитектор: ему можно доверить архитектурные решения, он организует код понятно, расширяемо, легко проверяемо, так, что команда сможет с ним работать?
5. Подходит на должность: он разбирается в специфичных для должности вопросах и обладает фундаментальным пониманием того, что в ней происходит?

На основе ответов мы можем понять, что ждёт нас и нашу команду с данным кандидатом в профессиональном плане.

Личностные качества


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

Коварство, предательство, фальшь


Горькая правда состоит в том, что многие кандидаты врут на собеседованиях (около 70%, по разным данным). Можно ли этому противодействовать? Сформулирую собственный подход:

1. Определите, навыки кандидата, не подходящие лично Вам. Нечто такое, что, по заявлению кандидата, он умеет, а Вы не должны, потому как должность не обязывает. Допустим, Вы не требовали в вакансии SQL, но кандидат утверждает, что он SQL-мастер.

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

Пример из личной практики:

Я в компании сотрудницы собеседовал Go-программиста, утверждавшего, что он не один год работал с Firestore, а так же PostgreSQL. Ни того, ни другого в вакансии не упоминалось, поэтому складывается следующая ситуация: собеседуемый утверждает, что он практически мастер в том, в чём мы сами не последние люди. Однако он этого не знает — не знает, что у нас есть опыт и в Firestore, и в PostgreSQL. Он лишь знает, что мы Go-программисты, и по ответам на Go-ориентированные вопросы он явно не выигрыше.

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

Мы, однако, не говорили, что мы не разбираемся, лишь попросили рассказать так, чтобы поняли незнающие люди. Безобидная манипуляция позволила нам определить, что кандидат не имеет понятия об устройстве Firestore и JOIN'ах в SQL, и, самое главное, пытается нас обмануть. Да, мы не требуем знаний Firestore, а SQL не используем вовсе, однако мы выяснили, что кандидат не благонадёжен, и едва ли был успешным программистом на прошлой работе, ведь в том, чем он якобы там занимался, он не разбирается.

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

3. Конкретика. Собеседуемый должен отвечать на вопросы конкретно! Не давайте уверенным речам ввести Вас в заблуждение — каждое утверждение нужно оценивать на конкретность. Фраза «я два года работал с Angular, завершил три проекта, в четвёртом был руководителем», даже сказанная уверенным, обыденным тоном, ещё толком ничего не значит. Постарайтесь выяснить у кандидата, что конкретно он делал, что он умеет, какие сложности повидал, как их решил — если он действительно поведает Вам что-то технически конкретное, тогда можно начинать верить. Если же разговор продолжается общими фразами и попытками увильнуть от прямых ответов, его лучше плавно закончить — мы ищем реальных доказательств опыта, а не голословных утверждений, которые ещё придётся проверять на практике. Человек не может написать программу, но совершенно в ней не разбираться, потому что в нашей профессии понимание предшествует результату. Тот, кто разбирается, может изъясняться конкретно. Тот, кто не разбирается, этого точно не может.

Программа делает то, что Вы в ней написали, а не то, чего Вы от неё хотели.


Порядок


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

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

Заключение


Многие детали техники были опущены, дабы сократить статью, однако суть подхода раскрыта полностью. MoSt требует получасовой подготовки к собеседованию от того, кто его проводит, внимательности и некоторых актёрских способностей, однако даёт следующие преимущества:

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

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

Ilya,
QLogic LLC,
Python/Go developer
GitHub acc | Personal page