В поисках элиты — поиск и найм лучших разработчиков программного обеспечения в отрасли

Опубликовано: 2022-03-11

Соревнование

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

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

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

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

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

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

Распространенной ошибкой является слишком большое внимание к техническим мелочам.

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

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

Начало работы: заполнение конвейера лучшими

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

Заполнение конвейера найма талантливых разработчиков программного обеспечения имеет решающее значение для найма самых лучших.

Без сомнения, единственный лучший источник квалифицированных кандидатов — это личные связи, поскольку качественные люди склонны общаться с качественными людьми. Личные рекомендации доминируют как наиболее продуктивный источник успешных новых сотрудников (источник).

Другие ценные источники первоклассных технических талантов включают:

Прелесть этих ресурсов в том, что они предоставляют кандидатов, которых вы тем или иным образом проверили еще до того, как провели с ними собеседование.
  • Блоги и технические публикации в Интернете. Блоги разработчиков могут быть отличным источником сильных кандидатов. Технические посты часто дают ценную информацию о технической проницательности разработчика, подходе к решению проблем и письменных навыках, которые являются важными критериями для выявления лучших кандидатов.
  • Авторы открытого исходного кода. Просмотр проектов с открытым исходным кодом на таких сайтах, как GitHub и SourceForge, может выявить высококвалифицированных кандидатов. Дополнительным преимуществом этого подхода является то, что он позволяет вам увидеть и оценить образцы кода кандидата еще до того, как вы решите вступить с ним в контакт.
  • Конференции. Спикеры конференций и участники соответствующих технических конференций часто являются ценным ресурсом для квалифицированных кандидатов. Если вы не можете присутствовать, ознакомьтесь с онлайн-программой и подумайте о том, чтобы связаться с докладчиками. Вы можете просто связаться с ними «в нужное время», или они могут порекомендовать вам кого-то другого, кто имеет высокую квалификацию.

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

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

Оценка технической проницательности разработчиков программного обеспечения

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

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

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

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

Существует множество онлайн-ресурсов, из которых вы можете выбрать такие задачи по программированию, чтобы включить их в процесс собеседования. Те, которые сосредоточены на алгоритмах (а не на знании конкретного языка программирования), облегчают оценку знаний кандидата в области информатики и способности решать проблемы. Некоторые заслуживающие внимания примеры включают hackerrank.com, projecteuler.net и beatmycode.com. Имейте в виду, однако, что вам не нужно использовать эти сайты для администрирования тестов; скорее, вы можете просто использовать их в качестве ресурсов для выбора задач, а затем дать кандидату код решения во время личного собеседования (на доске и т. д.).

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

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

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

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

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

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

Кстати о языке…

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

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

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

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

Моральная дилемма

Есть старый анекдот об отце, который хочет научить сына этике. Отец говорит сыну, что у него и его партнера есть бизнес по химчистке. Однажды, по словам отца, к нам в магазин приходит покупательница, чтобы забрать ее из химчистки. Когда покупательница поворачивается, чтобы уйти, я понимаю, что она переплатила на 10 долларов. Итак, вот этика… говорить или не говорить моему партнеру?!

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

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

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

Вот пример:

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

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

Знакомство с тобой (Кто ты на самом деле ?)

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

Техническая элита не только технически превосходна, но и высокопрофессиональна. Поэтому их поиск не ограничивается строго технической оценкой.

Техническая элита не только технически превосходна, но и высокопрофессиональна.

Имея это в виду, вот несколько методов интервью, которые могут быть полезны для оценки личности и профессионализма кандидата…

Во-первых, рассмотрите намеренное начало процесса собеседования с предварительной проверки нетехническим сотрудником (например, помощником по административным вопросам). Затем вы можете спросить этого сотрудника, как кандидат относился к нему, когда он понял, что он не был техническим специалистом. Были ли они унизительны, нетерпеливы и снисходительны или приятны, терпеливы и уважительны? То, что сотрудник передает вам, может быть очень красноречивым. Вы хотите знать, относится ли кандидат к другим с уважением, независимо от того, кто они.

На протяжении всего собеседования ищите возможности предоставить кандидату конструктивную обратную связь. Внимательно наблюдайте за реакцией, которую это вызывает. Ценится ли обратная связь или кандидат вообще занимает оборонительную позицию?

Участвуйте в нетехнической «болтовне» в течение первых 5 или 10 минут собеседования, чтобы получить представление о личности кандидата. Кандидат может подумать, что это просто прелюдия к реальному собеседованию, и поэтому с большей вероятностью «распустит волосы». Таким образом, вы сможете различить удивительное количество информации об их личности за это время. И, конечно же, если они проявляют чувство юмора, это всегда хороший знак. :-)

В дополнение к этим общим методам найма инженеров, вот несколько примеров вопросов, которые помогут оценить личность кандидата, его уверенность, честность и профессионализм :

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

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

Взаимны ли чувства?

Итак, вы нашли кандидата на пятерку. Высоко квалифицированный. Позитивный, жизнерадостный характер. Отличное культурное соответствие. Замечательно! Но…

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

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

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

Во-первых, то, как кандидат обращается к вам с самого начала, является довольно надежным индикатором заинтересованности. Предлагает ли кандидат убедительное и убедительное объяснение того, почему он или она особенно заинтересованы в вашей компании и имеющихся возможностях? Если да, то это свидетельствует не только о реальном интересе, но и об уровне профессиональной зрелости и утонченности. Такой кандидат явно провел хотя бы некоторый уровень предварительного исследования вашей компании и возможности, прежде чем связаться с вами (вместо того, чтобы просто «расстрелять свое резюме по городу»).

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

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

Заворачивать

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

Эффективный найм — это не пункт назначения, это путешествие.

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