Как определить навыки разработчика программного обеспечения на собеседовании?

Я столкнулся с новым вызовом в своей карьере, который включает в себя проведение нескольких собеседований при приеме на работу, и я должен определить, действительно ли соискатель овладел навыками, которые он/она перечисляет в своем резюме.

Как мне это сделать? Я:

  • Подготовить задание?
  • Задавать конкретные технические вопросы, связанные с тем, что нам нужно?
  • Сделать что-то еще?

Редактировать: Интервью будут проводить два человека. Другой коллега из отдела кадров. Я должен быть уверен только в технических знаниях (программирование и архитектурные способности) заявителя.

Мне кажется, этот вопрос больше подходит для программистов SE , чем для PM :-/
Я думаю, что этот вопрос актуален, потому что PM должен найти подходящих кандидатов для своих проектов, и для этого очень важно хорошее интервью.
Несколько минут назад я читал запись в блоге Джоэла Спольски на эту тему... joelonsoftware.com/articles/FindingGreatDevelopers.html
Кайзер, если вы не получаете ответы, которые ищете, рассмотрите возможность внесения изменений , чтобы добавить больше подробностей о проекте и команде, которую вы хотите создать.
Этот вопрос обсуждается на Meta PMSE. Присоединяйтесь к разговору .
@TiagoCardoso спасибо за ссылку. Иногда я сержусь на Джоэла, потому что он записал вещи раньше, чем я это понял :-). Хорошо, что он не такой яблочный и всех судит за использование его идей ;-)

Ответы (10)

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

  1. Личность. Вы всегда можете обучить нового сотрудника, чтобы он стал технически грамотным. Вы никогда не сможете научить их быть порядочными людьми, если они уже ими не являются. Под этим общим заголовком я включаю такие качества, как честность, благоразумие, прямота, смелость и т. д. Все «мягкие навыки», с которыми легко работать... но которые, как известно, трудно оценить.
  2. Психическая острота. Если вы ищете долгосрочного найма, лучше нанять кого-то, кто может разбить проблему, обдумать ее, а затем выполнить план, который они разработали, а не кого-то, кто не может на самом деле думать. Вы можете использовать какую-нибудь логическую головоломку, чтобы проверить их на это.
  3. Способность учиться. Я бы не стал нанимать человека, который понятия не имеет, что нужно делать на той должности, на которую его поставили, но технологии меняются, и если они не смогут продолжать учиться, вы застрянете с кем-то, кто делает отличные перфокарты. когда вам действительно нужен кто-то, кто может программировать на JAVA.
Как я могу быть уверен, что прикладник способен учиться?
@Kayser - Есть ряд суррогатов, например, уровень образования, профессиональные сертификаты, курсы повышения квалификации и т. Д. Если во время собеседования они обсуждают текущее обучение, они, вероятно, захотят (и получат удовольствие) учиться. Эти факторы не устранят риск того, что соискатель не сможет легко учиться, но они могут уменьшить этот риск.
Я бы добавил "Страсть" для поля. Я пытаюсь вовлечь человека в тему, о которой он много знает или в настоящее время активно изучает и волнуется. Если я вижу это, у меня есть человек, который хочет и хочет учиться. И это 90% программирования. Без этого ваши навыки стагнируют, и как бы вы ни были хороши сегодня, вы будете бесполезны для меня через 5-10 лет.

Во-первых, интервью как предсказатель будущей работы имеет очень низкую валидность. Даже в структурированном виде это не полезно и не очень полезно. Тестирование когнитивных способностей и проведение «проверки при приеме на работу» являются двумя ведущими показателями эффективности с достоверностью, близкой к r0,5 ( Hunter & Hunter, 1984 ).

Таким образом, создание заданий или тестовых вопросов — это то, куда вы хотите пойти. Однако предикторы тестирования должны быть протестированы сами. Разве это не простая задача. Те, кто создает инструменты отбора, тратят массу времени и денег, а надежность и достоверность этих инструментов все еще сомнительны. Лучше всего купить то, что уже разработано и протестировано, но будьте готовы потратиться.

Если вы не можете, устраивайтесь поудобнее с вероятностью 50/50 сделать правильный выбор.

+1 за актуальную науку по вопросу интервью. Так редко.
Следует отметить, что его цитата относится к вакансиям начального уровня.
Насколько, по-вашему, изменятся значения?

Основываясь на ответе Марчина.

Руководство Guerilla по проведению интервью (последняя версия лучше!) очень полезна.

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

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

Кроме того, нет ничего более верного, чем это:

«Никогда не говорите: «Может быть, я не могу сказать». Если вы не можете сказать, это означает, что вас не нанимают. Это действительно проще, чем вы думаете. Не можете сказать? Просто скажите «нет»! Если вы колеблетесь, это означает, что вы не нанимаете. Наверное, но меня немного беспокоит…» Это тоже отказ от найма. Механически переведи всю болтовню в «нет», и все будет в порядке».

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

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

У меня был агент по подбору персонала, которого использует наша компания, у которого есть базовые тесты по математике и логике, и в течение нескольких различных сессий найма они оказались отличным показателем для людей, которые хорошо справились с техническими собеседованиями и после этого на реальной работе. Судя по тому, что я видел, вы должны ожидать, что любой жизнеспособный кандидат на техническую работу попадет в топ-5% населения по этим вещам, даже в действительно плохой день ... Рекрутер также провел психологический анализ «DISC». отчет, который всегда было интересно читать, но я думаю, что мог бы жить и без него, если бы я оплачивал счет за набор из собственного кармана....

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

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

Итак, вы хотите, чтобы кандидаты были в 95-м процентиле способностей. Вы также платите в 95-м процентиле за поле кандидата? Если нет, такое несоответствие ценности/критериев в конечном итоге укусит вас.

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

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

Тест по программированию дает представление, просто представление о том, насколько хороши их навыки владения языком, который им потребуется использовать в работе. Мне нравится использовать что-то специфичное для языка, например задачу «Elastic Racetrack» во Flash и упражнение, в котором кандидат должен написать несколько модульных тестов для проверки поведения API, таких как простой метод сортировки.

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

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

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

Было время, когда компания Spotify не запрашивала резюме, они запрашивали ссылки на репозиторий github.

Идея упражнения - хороший намек. Я могу подготовить что-то подобное для следующих интервью. Но сейчас времени не хватает

Упражнения по кодированию:

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

Одна проблема заключается в том, что чаще всего эти упражнения не связаны с проектом/роллом. Что кажется мне безумием. Если вы используете упражнения с кандидатом, убедитесь, что они предназначены для проверки его способности выполнять работу.

Есть много других способов узнать, является ли программист хорошим кандидатом, не заглядывая ни в одну строчку кода!

Пообщайтесь лицом к лицу:

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

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

Спросите их мнение:

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

Проверьте их на GitHub:

Какой вклад они вносят в индустрию в крупных проектах и ​​проектах с открытым исходным кодом? Помимо того, что вы получаете представление об их кодировании, это дает вам отличное представление об их мышлении и увлечениях. Проекты с открытым исходным кодом — это способ, которым люди возвращаются к отрасли, помогая исправлять вещи для большего блага. Теперь это звучит как кто-то, кого я хотел бы видеть в своей команде.

Как часто они доставляют то, что кодируют?

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

Насколько хорошо они говорят?

Являются ли они хорошими коммуникаторами? Если они ведут себя как черный ящик, вам будет сложно работать с ними и нанимать вокруг них команду.

Насколько хорошо они пишут?

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

Используйте пробный период:

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

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

Вы бы наняли фокусника, не попросив его показать вам несколько фокусов? - Джоэл Спольски.

Прочтите руководство Джоул: Руководство по проведению интервью для партизан.

Ты прав. но нельзя давать сложное задание в короткие сроки. И простой задачи недостаточно, чтобы увидеть, на что он способен.
Звучит немного как "дешево, быстро, хорошо": найти дешевого и хорошего сотрудника очень быстро :). Не забывайте, что кондидат — это не белый лист бумаги. Посмотрите на его/ее опыт. Спрашивать о вещах, которыми он/она гордится, может быть интересно – как вы думаете?

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

Как по мне, лучше всего провести короткую сессию парного программирования с SMB от команды. Вот пример использования кибер-додзё на собеседовании (видео).

Он занимает от 20 минут до 1 часа и показывает истинный уровень мастерства.

Привет, NetRat, в общем, мы ожидаем, что справочные ссылки будут поддерживать ответ Stack Exchange, чтобы он был ценен для будущих посетителей на долгие годы. Если бы ссылка когда-либо разорвалась, ваш ответ был бы бесполезен. Рассмотрите возможность редактирования , чтобы обобщить моменты из видео. Это поможет гарантировать, что ваш пост будет полезен будущим посетителям на долгие годы. Удачи и добро пожаловать в PMSE!

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

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

Однако, если вы все же участвуете в собеседованиях, сосредоточьтесь на мягких навыках. Как менеджеру проекта, вам придется работать с этим человеком, и вы должны быть уверены, что этот человек будет командным игроком и будет тем, с кем вы сможете работать и общаться.

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