HR-менеджмент847730

Как определить хорошего разработчика на собеседовании

IT-руководители поделились опытом найма разработчиков. Как проверить кандидата и вычислить новичика? Какие вопросы задавать? На что обращать внимание?

Редакция Executive.ru продолжает цикл статей о подборе сотрудников в ключевые отделы компании. Ранее на сайте уже выходили публикации о том, как подбирать менеджера по продажам, как не ошибиться с выбором маркетолога и как определить подходящих кандидатов на роль бухгалтераHR-специалиста и менеджера проектов.

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

Признаки хорошего разработчика

Дмитрий Завалишин, основатель и генеральный директор группы компаний DZ Systems

Хороший разработчик:

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

Алексей Оносов, основатель компании «Юнисофт»

Хороший разработчик обладает аналитическим мышлением и должен уметь:

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

Об этом многое может сказать опыт работы над pet-проектами или участие в open-source.

Алексей Гришанков, руководитель Android-подразделения мобильной разработки в Notamedia.Agency

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

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

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

Алгоритм оценки разработчика

Алексей Оносов, основатель компании «Юнисофт»

1. Определите, кто вам нужен

Прежде чем начинать поиск, четко сформулируйте, какой именно специалист вам требуется. «Хороший программист» – понятие относительное. Мы всегда начинаем с составления детального профиля вакансии. Какие технологии должен знать кандидат? Какой опыт необходим? Какие личные качества важны для успешной работы в нашей команде? Например:

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

2. Наведите справки о кандидате

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

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

3. Проведите тестирование

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

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

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

4. Проведите личное собеседование

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

На что мы обращаем внимание:

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

5. Дайте тестовое задание

Финальный этап отбора – выполнение тестового задания. Это может быть мини-проект или решение реальной задачи из практики компании. Тестовое задание позволяет оценить:

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

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

На что обратить особое внимание

Иван Феденков, тимлид разработки в IT-компании HFLabs

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

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

На этапе собеседования:

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

Алексей Гришанков, руководитель Android-подразделения мобильной разработки в Notamedia.Agency

В первую очередь оцениваю технические знания. Для мобильного разработчика это базовые навыки работы с платформой (будь то Android или iOS), знание популярных библиотек, понимание архитектурных паттернов и принципов работы с сетевыми запросами. На практике было много случаев, когда кандидат демонстрировал глубокие знания, но оказался недостаточно гибок в применении разных подходов.

Хороший специалист должен быть готов учиться и держаться в курсе новых трендов. Например, после смены API (Application programming interface) или обновления фреймворка кандидат должен быть готов адаптировать свой подход, а не строго придерживаться старых решений.

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

Я смотрю, насколько кандидат внимательно слушает вопросы и как отвечает. Важно, чтобы кандидат не пытался впечатлить обилием технических терминов, а мог объяснить логику своих решений простыми словами. В одной из бесед мы обсуждали использование архитектуры MVI (Model-View-Intent) в мобильной разработке, и кандидат, без сложных терминов, объяснил, почему этот паттерн помогает ему избежать путаницы с состоянием экрана при сложной навигации. Подобные ответы показывают не только знания, но и умение «приземлить» их на конкретные задачи и требования платформы.

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

Как вычислить новичка, у которого нет опыта

Иван Феденков, тимлид разработки в IT-компании HFLabs

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

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

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

Какие вопросы задать кандидату на роль разработчика

Иван Гринкевич, CEO & Founder PHPdev.org

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

Я заостряю внимание на этих вопросах:

Анатолий Курочкин, эксперт Executive.ru

Этот ряд вопросов считаю очень полезным:

У меня есть и шуточный вопрос: «Чем отличается число с плавающей точкой от числа с плавающей запятой?». Этот вопрос идет первым и позволяет разрядить атмосферу.

Алексей Оносов, основатель компании «Юнисофт»

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

Какие ответы кандидата говорят о том, что он не подойдет

Иван Гринкевич, CEO & Founder PHPdev.org

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

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

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

Алексей Гришанков, руководитель Android-подразделения мобильной разработки в Notamedia.Agency

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

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

Алексей Оносов, основатель компании «Юнисофт»

Есть несколько «красных флажков», на которые мы обращаем внимание:

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


Материал подготовлен с помощью сервиса «Лига экспертов» Executive.ru.
Вы тоже можете оставить комментарии на запросы редакции:

Посмотреть открытые запросы

Читайте также:

Смотреть комментарии