Как нанять хорошего разработчика?

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

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

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

Какие разработчики вам нужны? Как их приглашать?

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

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

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

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


Как правильно составить вакансию?

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

1. Действуйте нестандартно.

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

Пример: «Проект “Страхование” — большое приложение для покупки полисов страхования жилья и жизни, нагрузка более 100к уникальных посетителей в сутки. Нагрузка постоянно растет. Задача проекта — предоставить лучшее решение по покупке страховых полисов на рынке. Фронт-енд у нас на React+Redux+Redux-saga, бэк-енд на Ruby on Rails + rubocop, используем спецификацию JSON Api. Проекту четыре месяца, он в активной стадии разработки. Планируем сделать большой личный кабинет со сложным UI и множеством асинхронных запросов. Для тестов у нас Puppeteer. Не так давно стали использовать на фронте библиотеку react-testing-library, которую создал Kent Dodds.»

2. Перечислите всех участников команды, их роли и достижения.

Не поленитесь рассказать о том, как у вас устроен рабочий процесс и быт.

Пример: «В команде два Senior Back-End разработчика, один Senior Front-End разработчик, дизайнер, два аналитика и Product Owner. Дизайнер не так давно выступал на Design Meetup в Gmail.ru, проблем с продуманными макетами не будет :) Команда работает по принципу гибких методологий разработки Agile, в частности используем Scrum. Ежедневные стендапы у нас начинаются в комфортное для всех время — в 12 часов дня. Раз в две недели устраиваем «Бароспективу», стараясь, каждый раз посетить новый бар. Финал чемпионата мира мы смотрели вместе.»

3. Напишите кого вы конкретно ищете.

Пример: «Мы хотим найти Front-end разработчика хорошо знающего особенности библиотеки React, с желанием своевременно тестировать собственный код. Идеально если у него есть опыт работы со сложными графиками и диаграммами.»

4. Расскажите о тех преимуществах, которые выделяют вашу компанию среди остальных.

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

5. Опубликуйте фотографии офиса и будущих рабочих мест.

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

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


Как проводить собеседования?

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

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

Следующие рекомендации помогут вам лучше проводить собеседования.

А. До встречи расскажите, что будет на собеседовании.

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

Пример письма кандидату: «Мы планируем общение в три секции каждая по часу: “Вёрстка”, “Javascript” и “Архитектура”. “Вёрстка” — в нашей компании каждый front-end разработчик верстает самостоятельно, поэтому в этой секции мы сверстаем небольшой блок. “Javascript” — обсудим возможности и ограничения языка, решим несколько задач. “Архитектура” — спроектируем систему, например календарь.»

Б. Первое впечатление.

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

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

В. Удобные условия.

Вместо решений задач на бумажке, предложите кандидату привычный компьютер. Да, возможно, вы хотите «проверить» собеседуемого в стрессовых условиях, но на сколько это имеет смысл? У вас очередь как в Google или Facebook? Разве специальность разработчика предполагает работу в условиях стресса?

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

Г. Соответствующие вакансии вопросы.

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

Пример из жизни: «На собеседовании на должность Front-end разработчика у кандидатов спрашивают что такое комбинатор неподвижной точки и то как лучше определить зацикленность однонаправленного списка.»

Д. Кругозор и реальный опыт.

Я бы не рекомендовал концентрироваться во время собеседований на конкретных каверзных задачах, лучше постараться узнать больше о кругозоре собеседника: Что он читает? За чьим творчеством и как следит? Какие конференции или митапы посетил? Как он занимается самообразованием?

Собственный опыт: В компании P не было ни одной задачи, ни одного алгоритма, но собеседующий задал вопросы практически по всем областям front-end разработки. За два часа общения удалось обсудить очень большой объем информации. Уверенно могу сказать, что без реального опыта решения самых разных проблем и сопутствующих разработке трудностей, ответить на большую часть вопросов не представлялось бы возможным. Как итог я остался очень доволен беседой и теперь делюсь положительными рекомендациями об этой компании, не проработав в ней ни одного дня. Всё благодаря руководителю front-end разработки, проведшего один из лучших интервью, в которых мне довелось участвовать.

Е. Отсутствие предвзятости.

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

Ж. Готовность общения с сильными специалистами.

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

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

З. Обучаемость и реальные задачи.

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

И. Интуиция на людей.

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

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

К. Звезда в компании.

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

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

Л. Своевременная обратная связь.

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

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


От чего вам стоит воздержаться?

А. Вопросы к мотивации.

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

Б. Слишком простое техническое интервью.

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

В. Одни и те же вопросы.

Как уже было сказано ранее — разработчики постоянно общаются. Они делятся опытом прохождения интервью. Представьте себе ситуацию: человек, который проводит собеседования в компании E, из года в год спрашивает одно и тоже. Хорошо во время собеседования действовать согласно продуманному плану, но не менять его годами — то чего точно стоит избежать.

Г. Бессмысленные тесты

Постарайтесь избегать ненужных тестов и анкет. Они со 100% вероятностью лишь отпугнут интересных вам людей.

Свой опыт: «В компании V после технического интервью попросили заполнить онлайн анкету. Она представляла собой набор простых вопросов и заготовленных к ним ответов. Красной нитью прослеживалась попытка обнаружить в каждом поступке и решении кандидата жажду наживы. Причем прямолинейность и не изобретательность вызывали неподдельное удивление, любому человеку была понятна абсурдность подобного тестирования.»


Вместо заключения.

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

Удачи вам в поиске! И помните — идеального кандидата не существует.

Yerzhan Tashbenbetov

Written by

Entrepreneur, Software Developer, JS & React enthusiast fb.com/tashbenbetov

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade