Набрать IT-команду – задача непростая и, зачастую, достаточно дорогая. Самый ценный ресурс – время, а его придется потратить немало, общаясь с бесконечным потоком соискателей. Как же распознать лучшего в череде растерявшихся и непризнанных гениев?
Все, что далее написано, не является руководством к действию, а всего лишь мои личные наблюдения, основанные на собственном опыте.
Если в течении первых 15-20 минут вы понимаете, что перед вами сидит не тот человек, которого вы ищете, не бойтесь остановить интервью. Гораздо страшнее тратить время ценных специалистов, в которых так сильно нуждается ваш проект. Но здесь, конечно, нужно соблюдать золотую середину, чтобы ненароком не отсеять хорошего специалиста, растерявшегося на первых вопросах. Поэтому начинайте техническую часть интервью с самых важных технологий, без знания которых нет смысла продолжать диалог.
Есть разные варианты собеседований, я бы хотел рассмотреть классический вариант с одним собеседованием протяженностью в час.
Мой скромный опыт свидетельствует, что кандидата нужно оценивать в трех областях: погруженность в проект, софт-скиллы и хард-скиллы. Он должен быть силен минимум в двух из этих трех пунктов. Конечно, все относительно, например, если мы ищем программиста, то его неспособность итерировать массив не может быть перекрыта никакими другими качествами. Обсудим каждый аспект отдельно.
Погружённость в проект
Предвкушаю возмущения насчет этого пункта, в духе «задачи должны быть так поставлены и декомпозированы, чтобы для программиста точка входа в проект была минимальна». Но реальная жизнь диктует другие условия. Более того тимлида, бизнес-аналитика или системного-аналитика никак не спасти от необходимости полного погружения в проект.
На мой взгляд очевидно, что если перед вами кандидат из конкурирующей компании или с опытом в вашей сфере деятельности, то это существенное преимущество. Идея того, что человек, который никогда не работал в этой области, посмотрит на ваши бизнес-процессы свежим взглядом и привнесёт в него кучу крутых идей, по факту настолько маловероятна, что лучше на это не рассчитывать. Скорее всего вы просто потратите массу времени на то, чтобы погрузить его в особенности вашего дела.
Хочется упомянуть один из постулатов на котором держится этот мир: ничто не берётся ниоткуда и не уходит в никуда. Для блестящих идей нужна насмотренность или опыт. Шанс найти самородка, увы, ничтожно мал. Так что опыт в подобном бизнесе неоспоримый плюс.
Софт-скиллы
Что можно ожидать от человека, который раздражает вас на собеседовании? Конечно, усугубление конфронтации. И дело тут не в том, что кандидат обязательно плохой человек, скорее ваши психотипы диаметрально отличаются. Раз уже вы спелись со своей командой, то вы понимаете какая атмосфера там царит и что будет, если подселить кошку к собакам.
Немаловажный фактор — это внешний вид и метод коммуникации соискателя. Если у него проблемы с наушниками, не работает микрофон, криво установлена камера, а сам он находится в шумном месте, неопрятно выглядит – это все демонстрирует отношение к делу. Вероятность того, что именно сегодня у него случился форс-мажор, сломалось оборудование, маловероятна. Если человек пришел к вам на собеседование значит ему нужна новая работа, следовательно, для него это важное событие. Такое отношение к важным событиям, думаю, показательно.
Извечно спорный вопрос - куда отнести предшествующий опыт, не относящийся к делу, в софт или хард-скилл? На мой взгляд, нет опыта, не относящегося к делу, так как наше настоящее — это результат работы в прошлом. Все же я предпочту называть это софт-скиллом, но не буду оспаривать эту позицию. Чудес не бывает, все имеет причинно-следственную связь.
Наличие образования точно можно отнести к хард-скиллам. Но хотелось бы раскрыть тему непрофильного образования. Есть мнение, что любой технический ВУЗ за плечами кандидата повышает вероятность того, что ему легче будет лавировать в потоке ИТ задач. Отчасти это так. Но я бы больше ценил ВУЗ не за конкретные знания, а скорее за высокий уровень когнитивных способностей, которые приобрел наш кандидат, пока усердно учился. Такие способности получают не только выпускники технических ВУЗов. Например, выпускники медицинских академий или ВУЗов, где сложно учиться и дорого давать взятки.
Можно, конечно, возразить, ссылаясь на Стива Джобса или Марка Цукерберга, которые стали успешными до завершения ВУЗов. Но вспомните всех своих сокурсников, которых выгнали из универа, много ли среди них Цукербергов? Итак, следующий плюс в софт-скиллах – это вышка.
Хотелось бы затронуть еще один щепетильный момент. В процессе обсуждения кандидатов, в частности женского пола, я регулярно сталкиваюсь с опасениями на предмет ухода в декретный отпуск. Что ж, такая вероятность велика, бесспорно. Но никто не мешает нам проявлять социальную ответственность, не все же деньгами мерить. Женщинам и так досталась не самая легкая ноша - производить человечество. По мере возможности, хорошо бы эту ношу облегчить. Поэтому если в вашей команде найдется крохобор, который начнет считать деньги, то напомните, что его тоже, когда-то рожали.
Еще важный вопрос - причина увольнения с последнего места работы. Едва ли кто-то искренне признается, что его попросили уволиться, потому что не справлялся с работой. Но если в результате дискуссии на эту тему всплывут противоречивые факты, то пусть это будет для вас триггером. Можно провести расследование, к примеру, связаться с бывшим руководителем или его коллегами, или даже бывшими клиентами. Кстати, просить номер предыдущего руководителя – вполне нормальная практика.
Хард-скиллы
А вот и самое главное. Давайте смотреть по пунктам:
1. Четко определите навыки, которые нужны для вашего проекта или понадобятся в ближайшее время
Это будут основополагающие критерии. Например, если на вашем проекте не используется многопоточка – не задавайте вопросы, связанные с многопоточностью, не тратьте время. Крайне важно основательно поговорить на тему технологий, которые вы используете на своем проекте. На этапе собеседования мы, конечно, едва ли сможем оценить, станет ли кандидат хорошим работником, это всегда риск. Но, как минимум, мы можем убедиться в том, что он имеет опыт работы в нужных нам технологиях.
Безусловно, опыт работы в смежных технологиях можно засчитывать в плюс. Например, если человек 6 лет работал на PostgeSQL, то для него не составит большого труда перейти на Oracel. Но если человек никогда не работал с БД мы не можем быть уверены, что он быстро в ней разберется. Более того, в технологиях много моментов, понимание которых приходит только с опытом. Скорей всего, в течении длительного времени, кандидат будет совершать неизбежные для новичка ошибки.
Если у человека нет опыта работы с технологиями, которые применяются на вашем проекте или смежных технологиях, это неоспоримый минус.
2. Как проверить компетенцию в заявленных скиллах?
На мой взгляд неэффективно проводить собеседование в виде школьного экзамена «вопрос – ответ». В такой методике есть вероятность того, что кандидат просто знает ответ на вопрос, но не понимает саму суть проблемы. К примеру (сейчас речь пойдет о Java) я часто спрашиваю у кандидатов что нужно сделать с объектом, чтобы использовать его в качестве ключа в HashTable. Многие говорят переопределить hashCode и equals. На вопрос «почему» многие скажут, потому что у них есть контракт. Но вот куда более интересный вопрос – это как сделать так, чтобы метод HashMap.get начал работать с линейной сложностью. Вообще намного эффективнее проводить интерактивное собеседование. Чтобы убедиться, что кандидат реально понимает, как все устроено, помогут наводящие вопросы.
Не давите на кандидата, он находится в стрессовой ситуации, может переволноваться и путаться в ответах. По возможности создавайте максимально непринужденную атмосферу, подбадривайте. Если он не смог ответить на какой-то вопрос, подскажите, дайте направление. Иногда соискатели знают ответ, но он кажется слишком очевидным, поэтому они ищут подвох и лезут в дебри.
Но вместе с тем, слишком сильно облегчать задачу не надо. Изначально вопрос я советую задавать сложным языком. Если кандидат не понимает, о чем речь, то разъясните. Если понял сложную терминологию, то это демонстрирует его эрудированность и дает право полагать, что он читает литературу по теме. К примеру (сейчас речь пойдет о JavaScript) можно спросить: «Как ты думаешь почему стейты должны быть иммутабельные?» если кандидат отвечает на этот вопрос, то это микроплюсик за сложность. Если не понимает вопрос, то его непременно нужно перефразировать.
Решайте с ним абстрактные задачки. Не нужно требовать писать сложные коды, но поговорить абстрактно, с последующим усложнением ситуации, очень полезно. К примеру, задача есть две таблицы и User и Car мы знаем что:
автомобили принадлежат User. У одного автомобиля может быть только один хозяин, при этом у человека может быть много автомобилей. Как нам устроить такую связь?
Многие скажут добавить поле user_id в таблицу car, но некоторые сразу предложат создать связующую таблицу так как после добавления поля user_id мы нарушаем одну из форм нормализации БД, создавая в таблице поле, которое не определяет уникальность строки. Далее эту задачу можно усложнять, попросить сохранять историю смены владельцев, спросить, как осуществлять поиск по модели автомобиля, если в таблице 2-4 млн. записей, а если 20. Всегда спрашивайте, почему кандидат пришел к такому выводу. Даже если он дал такое очевидное решение, как добавление поля user_id, обязательно спросите почему так. Есть вероятность, что он не сможет ответить и лично для меня это будет минусом. Обсуждая задачи, вы можете легко лавировать внутри этой темы охватывая много аспектов.
В какой-то момент для нас стало важным, чтобы у кандидата был опыт проектирования REST-контроллеров. Мы проверяли это не сложной задачкой: «Вам нужно спроектировать API которое будет принимать ФИО и возвращать адрес». Больше не даем никаких вводных, ожидаем от кандидата решения: какой метод нужно имплементировать что возвращать, какие могут быть ошибки. Эта задачка выглядит просто, но дьявол кроется в деталях, не все кандидаты говорят, что метод будет возвращать массив адресов, потому что в мире много полных тёзок. Далеко не все задаются вопросом приватности персональных данных: а что делать если мы нашли два адреса по одному ФИО? Мы теперь точно знаем, что один из этих адресов принадлежит другому человеку, можем ли мы показать эту связку?
Всегда есть возможность усложнить задачи, например, добавьте туда security, обозначьте, что теперь у вас есть два района, адреса которых можно показывать только админам. Такие задачи очень хорошо демонстрируют опыт применения технологии. Человек, который проектировал много REST-контроллеров уже неоднократно сталкивался со всеми этими трудностями и сразу предусматривает их.
Итог: на собеседовании обсуждайте проблемы, с которыми сталкивается ваш проект, придумывайте задачки, похожие на проблемы, которые решает ваша команда.
3. Алгоритмическая секция
Если речь идет о программисте, то его способность решать алгоритмические задачи безусловно является огромным плюсом, но это не определяет его как специалиста, в котором нуждается ваш проект. Способность хорошо решать алгоритмы – это не божья благодать, а результат изучения. К примеру, если вы никогда не изучали алгоритм knapsack 01 или другие алгоритмы DP то мало вероятно, что вы сможете решить эту задачу.
Решение алгоритмических задач - это такой же навык, который, согласно пункту 1 этой статьи, должен быть обоснован прежде, чем заявлен как важный навык для вашей вакансии. Так же важно понимать, что умение писать BFS и DFS никак не коррелируется с опытом проектирования API. Но если на вашем проект способность проходить граф за логарифмическое время считается важным навыком, то согласно пункту 2 этой статьи, подобные задачи должны быть включены в собеседования.
Важно понимать, что, если кандидат легко решил алгоритмическую задачу на собеседовании – это говорит о том, что он решал подобную задачу и еще не забыл это. Конечно, люди, которые с лёгкостью грокают алгоритмы, впечатляют, но проверка этих навыков требует своего дополнительного часа, а значит минус 70-80 минут вашего времени. Умножьте эти цифры на количество кандидатов и на количество специалистов, которые вам нужно собеседовать в год, и вы получите годовые затраты на определения этого навыка.
Но я всегда спрашиваю у кандидата, решает ли он алгоритмические задачи на профильных сайтах. Если да, то обязательно прошу скинуть ссылку на его профиль. Человек, который решил пару сотен задач на leetcode, с высокой долей вероятности способен разобраться с неизвестной для него технологией и тратить личное время на повышение квалификации.
4. Обязательно поинтересуйтесь читает ли ваш кандидат профессиональную литературу
Многие люди не читают книги ссылаясь на то, что есть другие источники данных. Это однозначно так, но, думаю, не стоит здесь раскрывать тему того, почему важно читать профессиональные книги. Если кандидат не читает книги - это однозначный минус.
Поговорите с ним на тему паттернов проектирования. Здесь важно не просто спросить их название, а уточнить, где он их применял, почему именно этот паттерн он применил в конкретном случае, какая там есть альтернатива, какие преимущества у его решения по сравнению с альтернативными. Такой подход позволяет вам понять насколько глубоко ваш будущий коллега погружается в суть проблем.
P.S.
Немаловажную роль на собеседовании играет личная симпатия к человеку, наше подсознание способно обрабатывать мельчайшие детали, по которым у нас складывается впечатление о человеке, которое мы не можем объяснить. Если кандидат прошел все ваши ловушки, но что-то внутри вас терзает, не спешите с выводом. Хорошенько подумайте, переспите с этими мыслями, возможно, ответ придёт к вам утром. Так же это работает в обратную сторону: если по хардам ваш кандидат все завалил, но он вам очень нравится, дайте ему второй шанс, проведите еще одно собеседование. Не бойтесь потратить больше времени на одного кандидата, вам с ним потом предстоит долго и счастливо трудиться вместе.
Комментарии (16)
panzerfaust
24.08.2023 09:08+4Далеко не все задаются вопросом приватности персональных данных: а что делать если мы нашли два адреса по одному ФИО? Мы теперь точно знаем, что один из этих адресов принадлежит другому человеку, можем ли мы показать эту связку?
Ну и получается типичное "угадай, какое число я загадал". Апи это апи, а приватность это приватность. Человек может собаку съесть на проектировании апишек для сервисов типа Miro, но при этом ничего не знать про кухню персональных данных. Кроме того, даже если это кейс из вашей практики, то я просто уверен, что сначала и вы тут шишек набили. А кандидат почему-то должен ответить сразу правильно.
Ну и в целом фокусироваться на предметной области можно только если человек пришел из точно такой же области. Тогда для него знание нюансов - это маст хэв и показатель квалификации. Все остальные же ничем вам не обязаны.
Marat-onlin Автор
24.08.2023 09:08Прочитайте внимательнее. В этой части я предлагаю обсудить этот кейс. Интересно послушать мнение кандидата и узнать как он решал бы эти проблемы. Человек у которого есть опыт проектирования API быстро распознает проблемы подобного рода.
prok_iv
24.08.2023 09:08Все, что далее написано, не является руководством к действию, а всего лишь мои личные наблюдения, основанные на собственном опыте.
Тема собеседований сложная и "не всегда" очевидно чем руководствуются компании при принятии решений, поэтому мнение людей ищущих сотрудников ценно и требует проработки. Спасибо за статью!
Извечно спорный вопрос - куда отнести предшествующий опыт, не относящийся к делу, в софт или хард-скилл? На мой взгляд, нет опыта, не относящегося к делу, так как наше настоящее — это результат работы в прошлом. Все же я предпочту называть это софт-скиллом, но не буду оспаривать эту позицию. Чудес не бывает, все имеет причинно-следственную связь
Тоже как то думал куда отнести. Остановился на том, что это софт. По сути это "бэкграунд": как и где человек формировался; устоявшиеся принципы, которые привели в текущую точку.
Marat-onlin Автор
24.08.2023 09:08Спасибо, за комментарий.
Бытует мнение, о том что ВУЗ - это просто трата денег и времени. Но мне кажется если в учиться, а не "решать" сессию, то это сильно прокачивает когнитивные способности. Далека не у каждого человека в жизни возникает возможность 5 лет каждый день что то изучать.
Thomas_Hanniball
24.08.2023 09:08-2Первое правило собеседования:
Никогда не проводи собеседование в одиночку. Всегда должно присутствовать минимум 3 человека, например, 1 HR и 2 технических специалиста. По итогам каждый из них должен высказать своё мнение о кандидате. Если хотя бы 1 человек выступает против, то кандидату нужно отказать. Если всем трём кандидат понравился, то надо его брать на испытательный срок.Leetc0deMonkey
24.08.2023 09:08+2Можно я тогда тож с пацанами приду? А то трое на одного это беспредел какой-то.
Leetc0deMonkey
24.08.2023 09:08+1Человек, который решил пару сотен задач на leetcode, с высокой долей вероятности способен разобраться с неизвестной для него технологией и тратить личное время на повышение квалификации.
Человек, который решил пару сотен задач на leetcode, с высокой долей вероятности бесполезный в работе карьерист, да и сам долго у вас задерживаться не намерен.
Marat-onlin Автор
24.08.2023 09:08+1Я тот человек который решил более чем пару сотен задач на литкоде и ответственно заявляю, что после этого я стал более полезен для своей команды.
Batalmv
24.08.2023 09:08+1Я бы начинал не с технологии/фреймворка, которая больше всего нужна мне, а с той, где кандидат считает себя наиболее сильным. Так больше шансов получить предметную дискуссию
Если берем на проект, и там Rest и SQL-база, пусть кандидант явно или нет выберет начальную тему для проверки hard-скилов.
Также полезно вначале рассказать о своем проекте, и потом попросить кандидата в своем опыте выделить что-то похожее, и начать разговор в этой области
Бонусом вы будете проверять следуюшие софт скилы: как кандидат может рассказывать об известной ему теме (свой опыт он точно знает), описывать архитектуру разработанных решений, слушать и реагировать на инфу (если задавать вопросы с референсом на то,что собеседующий рассказал ранее)
Акцеет на то, что вот надо мне вот это - повышает риск, что промажете
И еще момент. Постановки задач в общем от собедующего часто выглядят для кандидата как идиотские. Объясню. Мне задают вопрос. Потом уточняют, потом дают вводные. Еще и еще.Потом говорят, ты не нашел правильное решение, или не оптимальное. Прикол в том, что часто собеседующий знает больше контекста и задав общий вопрос (плюс свой контекст), а кандидат видит только вопрос (ну и свой другой опыт). В итоге ты о сладком, а я о длинном :)
Момент с базой авто, и нарушением какой-то нормализации я лучше просто опущу. Яркий пример, который как раз это иллюстрирует :)
sspotanin
24.08.2023 09:08Очень странно и скомкано выглядит последний пункт про книги. Хотелось бы подробностей, почему вы считаете, что книги это лучший из возможных форматов получения знаний? Чем хуже курсы, статьи или видео?
Marat-onlin Автор
24.08.2023 09:08Я не в коем случаи не принижаю пользы от статей или курсов. Я просто хотел подчеркнуть пользу книг. Мне кажется нельзя сравнивать книги со статьей. С курсами еще можно. Как правило в книгах гораздо глубже раскрывается тема, более того книги проходят сложную многоуровневую редакцию. Но тут конечно важно выбирать хороший книги. Я Вам очень рекомендую почитать книгу Designe pattern от редакции Head First. Я думаю, что после прочтения первой главы вы согласитесь со мной.
sspotanin
24.08.2023 09:08Мой вопрос возник именно отсюда. Со статьями согласен, процент не очень хороших статей достаточно велик, и модерация часто страдает. Но для себя я заметил, что намного лучше осваиваю материал, если смотрю видео на ютубе где все те же мысли из книг наглядно анимированы. По паттереам пытался читать знаменитую банду четырех, и ничего скучнее в жизни своей не видел (не значит, что книга плохая, это абсолютно субьективно, head first еще более-менее). Причем есть куча источников, где те же самые паттерны объяснены намного более наглядно и с отличными примерами, и все это не книги. И после этого довольно странно было бы на собесе получить минус карандашиком за то, что "не читаю книг".
Marat-onlin Автор
24.08.2023 09:08Я с Вами полностью согласен на тему того что нельзя все мести одной метлой. Бывают и курсы бесполезные, и книги не информативные, и статьи очень информативные. Все что написано в этой статье всего лишь мое скромное субъективное мнение. Я очень не люблю читать книги, мне не нравиться этот процесс. Но когда я начал это делать я понял что это очень важно, что книги являются еще одним мощным дополнительным источником знаний.
Похожая ситуация с алгоритмами. Есть три лагеря: 1 - утверждает что практиковать алгоритмы ни к чему, но при этом, как правило эти люди не практикуют алгоритмы. 2- утверждают что это важно потому что сами решают. Ну тут как бы все понятно сами это делаете и выхваляете свое занятие. 3 - люди которые утверждали, что это лишние, потом начали практиковать алгоритмы и переобулись.
Вот с книгами похожая история. Сам по себе процессе изучения материала через книги - это уже не простая задача. Опять же, я не на чем не настаиваю - это всего лишь мое мнение. Возможно я в этом не прав.
Mirzapch
У автомобиля может быть несколько владельцев. По крайней мере, для РФ это так.
Работаю с MSSQL, MySQL, ORACLE. Почему-то потенциальные работодатели считают, что перейти на работу с POSTGRE* просто нереально.
Кроме того, собеседующие часто забывают, что потенциальный работник тоже выбирает и анализирует работодателя.
Marat-onlin Автор
Такие условия задачи, у автомобиля может быть только один владелец.
Касательно того что потенциальные работодатели так считают - это их право. Если у Вас хороший опыт работы с Oracle - не думаю что для Вас составит много труда перейти на Postgre