Найм разработчиков — это не просто заполнение вакансии. Это стратегическое преимущество компании, которое решающим образом влияет на качество продукта и скорость разработки. Промышленность IT имеет одну особенность: это рынок талантов, где кандидаты диктуют условия работодателям. На фоне высокого спроса на специалистов и конкурентной борьбы за лучших инженеров, каждый этап процесса найма становится критичным. В этом гайде мы разберём структуру воронки найма, инструменты оценки, частые ошибки и стратегии, которые работают на практике.
Основные этапы воронки найма разработчика
Эффективная воронка найма разработчика включает несколько последовательных этапов:
1.Сорсинг — поиск пассивных кандидатов через LinkedIn, GitHub, комьюнити
2.Скрининг резюме — предварительная фильтрация по опыту и стеку технологий
3.Техническое интервью — оценка навыков (live coding, take-home assignments)
4.System Design интервью — для middle и senior позиций
5.Поведенческое интервью (behavioral) — оценка soft skills
6.Final round — встреча с руководителем / топ-менеджментом
7.Оффер и переговоры — компенсация, опционы, условия
1.Сорсинг — поиск пассивных кандидатов через LinkedIn, GitHub, комьюнити
2.Скрининг резюме — предварительная фильтрация по опыту и стеку технологий
3.Техническое интервью — оценка навыков (live coding, take-home assignments)
4.System Design интервью — для middle и senior позиций
5.Поведенческое интервью (behavioral) — оценка soft skills
6.Final round — встреча с руководителем / топ-менеджментом
7.Оффер и переговоры — компенсация, опционы, условия
Ключевые роли в найме
Рекрутер (IT-рекрутер)
Hiring Manager
Инженеры-интервьюеры
IT-рекрутеры получают зарплату в 2-3 раза выше обычных рекрутеров, а фрилансеры зарабатывают $3–5 тысяч за закрытие одной позиции разработчика.
- Занимается сорсингом и скринингом кандидатов
- Ведёт переговоры о заработной плате и условиях
- Курирует весь цикл от первого контакта до оффера
- Требует глубокого знания IT-индустрии и стека компании
Hiring Manager
- Технический лидер, который формирует требования к вакансии
- Проводит техническое интервью или контролирует его
- Принимает финальное решение о найме
- Несет ответственность за результаты нового сотрудника
Инженеры-интервьюеры
- Проводят live coding сессии и парное программирование
- Оценивают качество решений, подход к проблемам, коммуникацию
- Дают feedback по компетенциям
IT-рекрутеры получают зарплату в 2-3 раза выше обычных рекрутеров, а фрилансеры зарабатывают $3–5 тысяч за закрытие одной позиции разработчика.
Ключевые должности и уровни разработчиков
Типы разработчиков
Кроме разработчиков в IT работают: тестировщики, аналитики, дизайнеры, PM, администраторы, специалисты по безопасности.
- Frontend — интерфейсы, веб-приложения (JavaScript, React, Vue, Angular)
- Backend — серверная логика, базы данных, API (Python, Java, Go, C++)
- Fullstack — фронтенд + бэкенд + немного DevOps
- Mobile — Android, iOS приложения (Swift, Kotlin)
- Desktop — десктопные приложения (Electron, .NET, C++)
- Database — оптимизация БД, архитектура данных
- DevOps — инфраструктура, CI/CD, облако
Кроме разработчиков в IT работают: тестировщики, аналитики, дизайнеры, PM, администраторы, специалисты по безопасности.
Где искать уровни компании
Многие IT-компании публикуют свои модели компетенций в открытом доступе ("sharing is caring" — культура IT). Посмотрите:
Levels.fyi — сравнение уровней и зарплат в крупных компаниях
BetterWiki — собрание моделей компетенций разных IT-компаний
Github / Confluence компаний — иногда компании кладут туда свои лестницы
Payscale, Salary.com — данные о рыночных зарплатах для каждого уровня
Многие IT-компании публикуют свои модели компетенций в открытом доступе ("sharing is caring" — культура IT). Посмотрите:
Levels.fyi — сравнение уровней и зарплат в крупных компаниях
BetterWiki — собрание моделей компетенций разных IT-компаний
Github / Confluence компаний — иногда компании кладут туда свои лестницы
Payscale, Salary.com — данные о рыночных зарплатах для каждого уровня
Сорсинг: где и как искать разработчиков
IT — это рынок талантов, а не рынок труда. Лучшие специалисты не ищут работу: они уже трудоустроены и получают регулярные предложения. Просто разместить вакансию на hh.ru недостаточно — нужно активно искать пассивных кандидатов.
Основные источники кандидатов
Job boards (активные кандидаты)
Плюсы: быстро, уже заинтересованные люди Минусы: большая конкуренция, часто джуниоры и mid-level с опытом <2 лет
LinkedIn рекрутинг (пассивный поиск)
Совет: Не пишите роботизированные "Привет! Приглашаю на должность разработчика". Персонализируйте: упомяните проект, технологию, интересный факт из профиля.
GitHub / GitLab (поиск по коду)
Комьюнити и конференции
Рефералы (золотой стандарт)
Outbound охота
Job boards (активные кандидаты)
- hh.ru, Habr Career (Россия)
- LinkedIn Jobs, Indeed
- Stack Overflow Careers
- GitHub Jobs
Плюсы: быстро, уже заинтересованные люди Минусы: большая конкуренция, часто джуниоры и mid-level с опытом <2 лет
LinkedIn рекрутинг (пассивный поиск)
- Boolean search по стеку технологий: "React" OR "Vue.js" AND "TypeScript" AND "3+ years" AND Ukraine
- Targeted messages: персонализированные сообщения на основе профиля
- Recommended для Middle и Senior позиций
Совет: Не пишите роботизированные "Привет! Приглашаю на должность разработчика". Персонализируйте: упомяните проект, технологию, интересный факт из профиля.
GitHub / GitLab (поиск по коду)
- Ищите активных контрибьюторов в нужных языках/проектах
- Смотрите качество кода и постоянство
- Находите примеры portfolio
Комьюнити и конференции
- Meetup.com для локальных сообществ
- Конференции (PyCon, RustConf и т.д.)
- Slack/Discord каналы для разработчиков
- Форумы (Хабр, dev.to, Reddit r/programming)
Рефералы (золотой стандарт)
- Сотрудники рекомендуют друзей / коллег
- Программы реферальных бонусов ($500–$5000 за успешный наём)
- Часто лучше качество кандидатов, выше рез-ты
Outbound охота
- Напрямую обращаетесь к кандидатам из конкурентов
- Email/LinkedIn для "холодного" контакта
- Требует настойчивости и хорошего текста письма
Как писать джоб-постинг, который привлекает лучших
Типичная ошибка: Огромный список обязательных требований (React 5+ лет, TypeScript 3+ года, Node.js опыт, Docker, Kubernetes…). Сильные кандидаты не подают, думая "это не для меня".
Правильный подход:
``` Ищем Middle/Senior React Developer
Что мы делаем:
Продукт для [описание]
Технический стек: React, TypeScript, Node.js
Команда из 8 инженеров, удаленно
Что важно:
Опыт разработки веб-приложений (3+ года)
Знание React или похожего фреймворка
Коммуникативность, интерес к development
Бонусом (не требуется):
TypeScript
GraphQL
Опыт в стартапах
English B2+
Что мы предлагаем:
$4–6k/месяц (зависит от уровня)
Гибкий график, удалённо
Оборудование на выбор
Медицина, спорт, образование
Как подать:
GitHub профиль или примеры кода
Расскажите, почему вас интересует эта роль
```
🛠 Ключевые моменты:
Будьте честны о требованиях: Junior не может быть Middle
Не перегружайте: не более 5 основных требований
Говорите о компании: культура, миссия, интересные задачи
Прозрачность по компенсации: привлекает лучших кандидатов
Call to action ясен: как и где подавать
Правильный подход:
``` Ищем Middle/Senior React Developer
Что мы делаем:
Продукт для [описание]
Технический стек: React, TypeScript, Node.js
Команда из 8 инженеров, удаленно
Что важно:
Опыт разработки веб-приложений (3+ года)
Знание React или похожего фреймворка
Коммуникативность, интерес к development
Бонусом (не требуется):
TypeScript
GraphQL
Опыт в стартапах
English B2+
Что мы предлагаем:
$4–6k/месяц (зависит от уровня)
Гибкий график, удалённо
Оборудование на выбор
Медицина, спорт, образование
Как подать:
GitHub профиль или примеры кода
Расскажите, почему вас интересует эта роль
```
🛠 Ключевые моменты:
Будьте честны о требованиях: Junior не может быть Middle
Не перегружайте: не более 5 основных требований
Говорите о компании: культура, миссия, интересные задачи
Прозрачность по компенсации: привлекает лучших кандидатов
Call to action ясен: как и где подавать
Техническое интервью: инструменты и методы
Live Coding vs Take-Home
Live Coding (алгоритмы на доске / IDE, 45–60 мин)
Плюсы:
Минусы:
Take-Home Assignment (задача на несколько часов, сделать дома)
Плюсы:
Минусы:
Рекомендация: Комбинируйте оба. Take-home как первый фильтр, live coding для финализации.
Live Coding (алгоритмы на доске / IDE, 45–60 мин)
Плюсы:
- Видите процесс мышления кандидата в реальном времени
- Можете задавать уточняющие вопросы
- Проверяет stress resistance
Минусы:
- Стрессово, может убить хорошего кандидата
- Иногда "доскописание" важнее логики
- Трудозатратно, нужен интервьюер на 1 час
Take-Home Assignment (задача на несколько часов, сделать дома)
Плюсы:
- Реальные условия, кандидат не в стрессе
- Может показать качество кода, подход к архитектуре
- Кандидат может потратить столько времени, сколько нужно
Минусы:
- Не видите процесс (может помогли другие)
- Трудозатраты на проверку
Рекомендация: Комбинируйте оба. Take-home как первый фильтр, live coding для финализации.
Пример Live Coding задачи
Уровень Middle (30–45 минут)
``` Задача: Функция для поиска цели в отсортированном массиве с ротацией
Дан массив целых чисел, отсортированный по возрастанию, который был ротирован в какой-то точке. Найдите индекс числа target. Если числа нет, вернуть -1.
Примеры: Input: nums = [4,5,6,7,0,1,2], target = 0 → Output: 4 Input: nums = [4,5,6,7,0,1,2], target = 3 → Output: -1
Требования:
·O(log n) время выполнения
·O(1) память
```
Что оценивается:
1.Понимание задачи (уточняет вопросы?)
2.Подход (Binary Search? Brute force?)
3.Реализация (синтаксис, обработка граничных случаев)
4.Коммуникация (объясняет ли решение?)
5.Оптимизация (после базового решения)
Типичные вопросы интервьюера:
·"Почему ты выбрал бинарный поиск?"
·"Как ты обработаешь случай, если target = 5?"
·"Есть ли граничные случаи, которые ты упустил?"
·"Если бы нужно было искать диапазон [target, target], как бы ты изменил решение?"
System Design интервью (Senior / Lead)
Задача: Спроектируйте систему для YouTube / Instagram / Uber.
Структура интервью (45–60 минут):
1.Clarify requirements (5–10 мин)
Вы пишете требования
Пример: "Спроектируем поиск видео. Это значит индексирование, ранжирование или оба?"
2.Capacity estimation (5–10 мин)
DAU (Daily Active Users), QPS (запросов в секунду), storage
"1M DAU, каждый смотрит 5 видео/день = 5M операций/день"
3.System architecture (15–20 мин)
Блок-схема: [Client] → [Load Balancer] → [API Servers] → [Cache] → [Database]
Обсуждаете trade-offs
4.Deep dive (10–15 мин)
Выбираете один компонент и детализируете
Пример: "Как спроектировать кэш для видео рекомендаций?"
5.Handling edge cases (5–10 мин)
Отказоустойчивость, скейлинг, секьюрити
Что оценивается:
Задача: Спроектируйте систему для YouTube / Instagram / Uber.
Структура интервью (45–60 минут):
1.Clarify requirements (5–10 мин)
Вы пишете требования
Пример: "Спроектируем поиск видео. Это значит индексирование, ранжирование или оба?"
2.Capacity estimation (5–10 мин)
DAU (Daily Active Users), QPS (запросов в секунду), storage
"1M DAU, каждый смотрит 5 видео/день = 5M операций/день"
3.System architecture (15–20 мин)
Блок-схема: [Client] → [Load Balancer] → [API Servers] → [Cache] → [Database]
Обсуждаете trade-offs
4.Deep dive (10–15 мин)
Выбираете один компонент и детализируете
Пример: "Как спроектировать кэш для видео рекомендаций?"
5.Handling edge cases (5–10 мин)
Отказоустойчивость, скейлинг, секьюрити
Что оценивается:
- Системное мышление
- Знание архитектурных паттернов (кэширование, шардинг, репликация)
- Практический опыт (какие БД, какие очереди задач)
- Коммуникация (показывает ли на доске, объясняет ли решения)
Поведенческое интервью (для техспециалистов)
Behavioral интервью оценивает не технику, а мягкие навыки и способность вписаться в команду.
Стандартные вопросы STAR-формата
STAR = Situation, Task, Action, Result
Вопрос 1: "Расскажите о ситуации, когда вы столкнулись с конфликтом в команде. Как вы его решили?"
Плохой ответ: "Я просто говорил коллеге, что он неправ, и потом начальник согласился со мной."
Хороший ответ:
S: В команде была разница мнений: коллега хотел использовать Node.js, я предлагал Python для микросервиса.
T: Нужно было выбрать стек за 2 дня.
A: Я предложил спроектировать оба варианта за 4 часа, сравнить по метрикам (скорость разработки, performance, масштабируемость). Провел обсуждение с целью понять, чего боялся коллега.
R: Выбрали Python, проект завершился на неделю раньше, и коллега сказал: "Вижу, почему ты выбрал Python, хорошее решение".
Вопрос 2: "Расскажите о проекте, где вы были гордиться кодом, который написали. Почему вы им гордиться?"
Вопрос 3: "Была ли ситуация, когда вы допустили ошибку? Как вы её исправили и что из этого извлекли?"
Хороший ответ показывает:
·Ответственность (не обвиняю в чужих проблемах)
·Рефлексию (понимаю, что пошло не так)
·Действия (как я исправил)
·Интеграцию опыта (что я изменил в будущем)
Вопрос 4: "Как вы изучаете новые технологии?"
Красный флаг: "Я просто туда кидаюсь и учу на ходу." Зелёный флаг: "Я начну с документации, поищу примеры, прочитаю блог-посты, потом напишу малый проект, чтобы понять основы. Потом углублю в специфику".
Стандартные вопросы STAR-формата
STAR = Situation, Task, Action, Result
Вопрос 1: "Расскажите о ситуации, когда вы столкнулись с конфликтом в команде. Как вы его решили?"
Плохой ответ: "Я просто говорил коллеге, что он неправ, и потом начальник согласился со мной."
Хороший ответ:
S: В команде была разница мнений: коллега хотел использовать Node.js, я предлагал Python для микросервиса.
T: Нужно было выбрать стек за 2 дня.
A: Я предложил спроектировать оба варианта за 4 часа, сравнить по метрикам (скорость разработки, performance, масштабируемость). Провел обсуждение с целью понять, чего боялся коллега.
R: Выбрали Python, проект завершился на неделю раньше, и коллега сказал: "Вижу, почему ты выбрал Python, хорошее решение".
Вопрос 2: "Расскажите о проекте, где вы были гордиться кодом, который написали. Почему вы им гордиться?"
Вопрос 3: "Была ли ситуация, когда вы допустили ошибку? Как вы её исправили и что из этого извлекли?"
Хороший ответ показывает:
·Ответственность (не обвиняю в чужих проблемах)
·Рефлексию (понимаю, что пошло не так)
·Действия (как я исправил)
·Интеграцию опыта (что я изменил в будущем)
Вопрос 4: "Как вы изучаете новые технологии?"
Красный флаг: "Я просто туда кидаюсь и учу на ходу." Зелёный флаг: "Я начну с документации, поищу примеры, прочитаю блог-посты, потом напишу малый проект, чтобы понять основы. Потом углублю в специфику".
Как делать оффер и вести переговоры
Основные элементы оффера
``` OFFER LETTER
Должность: Senior React Developer Уровень: L4 / Senior Зарплата: $6,000 в месяц (gross) Опционы: 0.2% из пула компании (4-летний vestng с 1-летним cliff) Бонус: до 15% за результаты (ежегодно) Отпуск: 22 дня + 5 дней болезни Удалённо: Да, можно работать откуда угодно Старт: 2026-05-15
Пакет benefits:
Trial period: 3 месяца (для обеих сторон)
Приложение:
```
Должность: Senior React Developer Уровень: L4 / Senior Зарплата: $6,000 в месяц (gross) Опционы: 0.2% из пула компании (4-летний vestng с 1-летним cliff) Бонус: до 15% за результаты (ежегодно) Отпуск: 22 дня + 5 дней болезни Удалённо: Да, можно работать откуда угодно Старт: 2026-05-15
Пакет benefits:
- Медицинская страховка (компания платит 100%)
- Спорт и wellness (500 USD/год)
- Профессиональное развитие (2,000 USD/год)
- Home Office Setup (1,000 USD одноразово)
Trial period: 3 месяца (для обеих сторон)
Приложение:
- Job Description
- Компенсационный пакет (детали по опционам)
```
Переговоры по компенсации
Почему разработчики требуют больше?
Сценарий переговоров:
Кандидат: "Я искал примерно $7,500, а вы предлагаете $6,000."
Вы (неправильно): "Это максимум, что мы можем предложить."
Вы (правильно):
·"Спасибо за честность. Почему тебе нужна именно эта сумма? Какие у тебя были предложения раньше?"
·"Мы предлагаем $6,000 базовой зарплаты + 0.2% опционов (могут стоить $10K–100K за 4 года) + бонус до 15%. В совокупности это может быть больше, чем $7,500."
·"Также у нас есть гибкий график, полный remote, хороший tech stack. Может быть, есть что-то ещё, кроме денег, что важно для тебя?"
Опционы (equity) — как объяснить
"Ты получаешь 0.2% акций компании с 4-летним vesting и 1-летним cliff. Это означает:
·До 1 года: ничего не происходит
·После 1 года: 25% акций разблокируются (~0.05%)
·После 4 лет: все 0.2% твои
Если компания выйдет на IPO или будет куплена за $100M, твои 0.2% могут стоить $200K. Но это риск — может быть и $0."
- Знают свою ценность (на рынке много предложений)
- Опыт показывает, что можно торговаться (первое предложение редко финальное)
Сценарий переговоров:
Кандидат: "Я искал примерно $7,500, а вы предлагаете $6,000."
Вы (неправильно): "Это максимум, что мы можем предложить."
Вы (правильно):
·"Спасибо за честность. Почему тебе нужна именно эта сумма? Какие у тебя были предложения раньше?"
·"Мы предлагаем $6,000 базовой зарплаты + 0.2% опционов (могут стоить $10K–100K за 4 года) + бонус до 15%. В совокупности это может быть больше, чем $7,500."
·"Также у нас есть гибкий график, полный remote, хороший tech stack. Может быть, есть что-то ещё, кроме денег, что важно для тебя?"
Опционы (equity) — как объяснить
"Ты получаешь 0.2% акций компании с 4-летним vesting и 1-летним cliff. Это означает:
·До 1 года: ничего не происходит
·После 1 года: 25% акций разблокируются (~0.05%)
·После 4 лет: все 0.2% твои
Если компания выйдет на IPO или будет куплена за $100M, твои 0.2% могут стоить $200K. Но это риск — может быть и $0."
Распространённые ошибки при оффере
❌ Ошибка 1: Медленный процесс Что происходит: Берёте неделю на решение об оффере, кандидат в это время получает другое предложение. Решение: Решайте за 24 часа.
❌ Ошибка 2: Слабый оффер Что происходит: Предлагаете выше конкурентов по зарплате, но ниже по опционам и benefits. Решение: Предложите полный пакет, не только зарплату.
❌ Ошибка 3: Нет feedback после rejection Что происходит: Кандидат отказал, вы исчезли. Потом он ещё раз рассмотрит. Решение: "Спасибо, что отклонил оффер. Если что-то изменится, дай нам знать. Мы всегда открыты."
❌ Ошибка 4: Давление и спешка Что происходит: "Нужен ответ до пятницы, иначе предложим другому кандидату." Решение: Дайте 3–5 дней на обдумывание.
❌ Ошибка 2: Слабый оффер Что происходит: Предлагаете выше конкурентов по зарплате, но ниже по опционам и benefits. Решение: Предложите полный пакет, не только зарплату.
❌ Ошибка 3: Нет feedback после rejection Что происходит: Кандидат отказал, вы исчезли. Потом он ещё раз рассмотрит. Решение: "Спасибо, что отклонил оффер. Если что-то изменится, дай нам знать. Мы всегда открыты."
❌ Ошибка 4: Давление и спешка Что происходит: "Нужен ответ до пятницы, иначе предложим другому кандидату." Решение: Дайте 3–5 дней на обдумывание.
Расширенная оценка кандидатов на интервью
Как отличить A-player от middle-performer?
A-player (Top performer)
Middle-performer
Отличие в прибыли компании:
Антипаттерны в интервью
❌ "Нанимаем по резюме" Кандидат с красивым резюме может и не решить простую задачу. Решение: Live coding test обязателен.
❌ "Не даём feedback" Интервью кончилось, кандидат уходит и не знает, почему он не прошел. Решение: Даже если не нанимаем, дайте конструктивный feedback: "Хорошо решил задачу, но не объяснял процесс. В следующий раз говори вслух. На System Design нужно заимствовать больше практического опыта. Рекомендую Designing Data Intensive Applications."
❌ "Одно интервью решает всё" Кандидат может один раз не сконцентрироваться. Решение: Минимум 3 интервью (техническое + system design + behavioral).
❌ "Просим сложные задачи для junior" "Реализуй LRU cache, потом напиши балансировщик нагрузки." Решение: Подбирайте сложность по уровню.
A-player (Top performer)
- Задаёт уточняющие вопросы (не молча кодит)
- Предлагает несколько подходов, потом выбирает оптимальный
- Рассказывает процесс мышления вслух
- На ошибку реагирует спокойно: "Ах, я забыл про граничный случай"
- Пишет чистый код (variable names, comments, structure)
- Тестирует своё решение сам (не ждет, пока вы укажете ошибку)
- Интересуется: "Что ещё я могу улучшить?"
Middle-performer
- Кодит, не задав вопросов
- Пишет code that works, но без оптимизации
- На ошибки реагирует защитно
- Код грязный (a, b, c вместо meaningful names)
- После завершения: "Всё, готово"
Отличие в прибыли компании:
- A-player: пишет код, который работает на 2–3 года без переписания
- Middle-performer: пишет код, который нужно рефакторить через год
Антипаттерны в интервью
❌ "Нанимаем по резюме" Кандидат с красивым резюме может и не решить простую задачу. Решение: Live coding test обязателен.
❌ "Не даём feedback" Интервью кончилось, кандидат уходит и не знает, почему он не прошел. Решение: Даже если не нанимаем, дайте конструктивный feedback: "Хорошо решил задачу, но не объяснял процесс. В следующий раз говори вслух. На System Design нужно заимствовать больше практического опыта. Рекомендую Designing Data Intensive Applications."
❌ "Одно интервью решает всё" Кандидат может один раз не сконцентрироваться. Решение: Минимум 3 интервью (техническое + system design + behavioral).
❌ "Просим сложные задачи для junior" "Реализуй LRU cache, потом напиши балансировщик нагрузки." Решение: Подбирайте сложность по уровню.
Чек-лист этапов найма
Pre-hire (До выставления вакансии)
[ ] Определена должность и уровень (Junior/Middle/Senior)
[ ] Написан JD с честными требованиями
[ ] Согласована компенсация ($X базовая + опции + бонус)
[ ] Сформирована интервью-панель (3 человека)
[ ] Подготовлены тестовые задачи и вопросы
Sourcing (Поиск)
[ ] Разослали вакансию на job boards (hh.ru, Habr)
[ ] Стартовал LinkedIn recruiter search
[ ] Рассылка лучшим кандидатам (outbound)
[ ] Запрос рефералов внутри команды
Screening (Фильтрация)
[ ] Прочитано 50+ резюме
[ ] Отобрано 10–15 кандидатов на первый звонок
[ ] Проведены 30-минутные intro calls (культура, мотивация, уровень)
Technical interview (45–60 мин)
[ ] Live coding или take-home assignment
[ ] Код запушен, обсужден с интервьюером
[ ] Есть feedback (что хорошо, что плохо)
System Design (Senior / Middle, 45–60 мин)
[ ] Спроектирована система
[ ] Обсуждены trade-offs
[ ] Продемонстрирована глубина знаний
Behavioral (30–45 мин)
[ ] Обсуждены предыдущие проекты (STAR-формат)
[ ] Оценена communication и teamwork
[ ] Понимание мотивации кандидата
Offer & Negotiation
[ ] Решение за 24 часа
[ ] Оффер выслан с полным пакетом
[ ] Переговоры завершены или отклонены
Onboarding
[ ] Первая неделя спланирована
[ ] Buddy (ментор) назначен
[ ] Equipment готов (ноут, доступы, etc.)
[ ] Определена должность и уровень (Junior/Middle/Senior)
[ ] Написан JD с честными требованиями
[ ] Согласована компенсация ($X базовая + опции + бонус)
[ ] Сформирована интервью-панель (3 человека)
[ ] Подготовлены тестовые задачи и вопросы
Sourcing (Поиск)
[ ] Разослали вакансию на job boards (hh.ru, Habr)
[ ] Стартовал LinkedIn recruiter search
[ ] Рассылка лучшим кандидатам (outbound)
[ ] Запрос рефералов внутри команды
Screening (Фильтрация)
[ ] Прочитано 50+ резюме
[ ] Отобрано 10–15 кандидатов на первый звонок
[ ] Проведены 30-минутные intro calls (культура, мотивация, уровень)
Technical interview (45–60 мин)
[ ] Live coding или take-home assignment
[ ] Код запушен, обсужден с интервьюером
[ ] Есть feedback (что хорошо, что плохо)
System Design (Senior / Middle, 45–60 мин)
[ ] Спроектирована система
[ ] Обсуждены trade-offs
[ ] Продемонстрирована глубина знаний
Behavioral (30–45 мин)
[ ] Обсуждены предыдущие проекты (STAR-формат)
[ ] Оценена communication и teamwork
[ ] Понимание мотивации кандидата
Offer & Negotiation
[ ] Решение за 24 часа
[ ] Оффер выслан с полным пакетом
[ ] Переговоры завершены или отклонены
Onboarding
[ ] Первая неделя спланирована
[ ] Buddy (ментор) назначен
[ ] Equipment готов (ноут, доступы, etc.)
Примеры вопросов для интервью
Frontend (Middle level)
1. Что такое event delegation и зачем он нужен?
Проверяет: Понимание DOM и производительности
```javascript // Плохо document.querySelectorAll('.item').forEach(item => { item.addEventListener('click', () => { / ... / }); });
// Хорошо document.addEventListener('click', (e) => { if (e.target.classList.contains('item')) { / ... / } }); ```
2. Разница между `let`, `const` и `var`?
Ответ, который ищет интервьюер:
·var — функциональный scope, hoisting, устарелый
·let — блочный scope, нельзя переобъявлять
·const — immutable reference (объект может меняться, но переменная нет)
3. Как оптимизировать производительность React компонента?
·useMemo для дорогих вычислений
·useCallback для callbacks
·React.memo для Props
·Code splitting (lazy loading)
·Профилирование в DevTools
Backend (Middle level)
1. Что такое N+1 query problem в БД и как его избежать?
```python
Плохо (N+1):
users = User.all() for user in users: print(user.posts) # Это 100 запросов, если 100 юзеров!
Хорошо (join):
users = User.include(:posts).all() # 1 запрос ```
2. Как спроектировать кэш для API?
1. Что такое event delegation и зачем он нужен?
Проверяет: Понимание DOM и производительности
```javascript // Плохо document.querySelectorAll('.item').forEach(item => { item.addEventListener('click', () => { / ... / }); });
// Хорошо document.addEventListener('click', (e) => { if (e.target.classList.contains('item')) { / ... / } }); ```
2. Разница между `let`, `const` и `var`?
Ответ, который ищет интервьюер:
·var — функциональный scope, hoisting, устарелый
·let — блочный scope, нельзя переобъявлять
·const — immutable reference (объект может меняться, но переменная нет)
3. Как оптимизировать производительность React компонента?
·useMemo для дорогих вычислений
·useCallback для callbacks
·React.memo для Props
·Code splitting (lazy loading)
·Профилирование в DevTools
Backend (Middle level)
1. Что такое N+1 query problem в БД и как его избежать?
```python
Плохо (N+1):
users = User.all() for user in users: print(user.posts) # Это 100 запросов, если 100 юзеров!
Хорошо (join):
users = User.include(:posts).all() # 1 запрос ```
2. Как спроектировать кэш для API?
- TTL (время жизни кэша)
- Cache invalidation (как обновлять)
- Распределённый кэш (Redis)
- Cache-aside vs Write-through pattern
Инструменты для IT-рекрутинга
Понимание IT-терминов
Информация о компенсации
Примеры моделей компетенций
Вспомогательные инструменты
- GlossaryTech — плагин для браузера, который подсвечивает технические термины на любой странице
- Tech Terms — сайт с 10 уровнями глубины знаний (от базовых до экспертных)
- Habr (habr.com) — русскоязычные статьи про технологии, сеть разработчиков
Информация о компенсации
- Levels.fyi — уровни и зарплаты в Google, Meta, Microsoft и т.д.
- Payscale.com, Salary.com — средние зарплаты по должностям и регионам
- Radford — система уровней, которую используют крупные компании
Примеры моделей компетенций
- Netflix Culture Memo — книга "No Rules Rules" про культуру компании
- Spotify Engineering Culture — видео про инженерную культуру
- BetterWiki — собрание моделей компетенций от разных IT-компаний
- Work Rules! (Google HR) — книга про рекрутинг в Google
Вспомогательные инструменты
- ChatGPT — запросите определения, примеры кода, объяснения
- Deepl.com — переводчик для документов и письма кандидатам
- Grammarly — плагин для проверки ошибок в английском
Построение культуры найма
Как укоренить хорошие практики
Отслеживайте метрики:
Вовлекайте команду — разработчики сами хотят участвовать в найме
Культура "делись знаниями"
- Документируйте процесс — напишите internal playbook для интервьюеров
- Обучайте интервьюеров — не все от природы умеют интервьюировать
- Дайте feedback интервьюерам — если интервью не конверсировалось, разберитесь, почему
Отслеживайте метрики:
- Сколько интервью → сколько офферов (conversion rate)
- Сколько % кандидатов проходят техническое
- Время от первого контакта до оффера (cycle time)
- Retention новых hire за 6 месяцев
Вовлекайте команду — разработчики сами хотят участвовать в найме
Культура "делись знаниями"
- Используйте GitHub для примеров кода из интервью (с согласия кандидата)
- Проводите retro после каждого найма ("Что сработало, что нет?")
- Делитесь лучшими вопросами с командой
- Публикуйте статьи о вашем процессе найма (как Netflix, Spotify, Google)
Вложитесь в процесс найма — и компания выиграет в скорости разработки, качестве продукта и стабильности команды.
Hiring Software Developers - это курс о том, как искать и находить разработчиков. Узнаете какие бывают разработчики, с какими языками программирования они работают, чем отличаются, изучите 30 специализированных источников поиска разработчиков и как формулировать поисковые запросы. Научитесь оценивать и собеседовать разработчиков