Сколько времени должно занимать домашнее задание для кодирования?
Краткий ответ
Этап отбора: 60–90 минут, жёсткий лимит. Этап онсайта: 2–3 часа (если домашнее задание необходимо); по возможности используйте живые форматы. Финальный этап: никогда. Опытные кандидаты не должны выполнять 4-часовые задания на финальном круге.
Эти цифры предполагают, что кандидат следует временному лимиту. На практике многие тратят в 1,5–2 раза больше указанного времени. Разрабатывайте задание, исходя из указанного лимита, и доверьтесь рубрике для обработки вариативности.
Почему менее 90 минут на этап отбора
Три причины:
- Ширина воронки. Каждые дополнительные 30 минут задания снижают конверсию с приглашения на выполнение на 5–10 процентных пункта, с большей потерей на верхнем диапазоне.
- Вариативность затраченного времени. Более длительные задания имеют большую вариативность в фактическом времени, что означает измерение доступности кандидата, а не его навыков.
- Предельный сигнал. Хорошо разработанный 90-минутный тест даёт 80% сигнала, который даёт 4-часовой тест. Остальные 20% не стоят затрат для кандидата.
Когда более длительное время оправдано
- Оплачиваемые задания на этапе онсайта. 4–8-часовой проект с определённым объёмом, оплачиваемый справедливо, поздно в процессе, опционально. Некоторые команды используют это для ролей senior+ вместо полудня на месте. Приемлемо при условии оплаты и добровольности.
- Пробные недели. Другая категория. Разумно для опытных нанимаемых с периодом отработки, руководящих ролей или контрактных-в-штатные аранжировок.
- Роли, требующие артефакта. Некоторые роли (техническое писательство, дизайн) нуждаются в портфолио на этапе отбора. Даже тогда ограничьте 3 часами максимум.
Что уместить в 60–90 минут
Задание с ясным одним результатом:
- Добавить функцию в предоставленный кодовый базис
- Исправить три задокументированные ошибки
- Проанализировать предоставленный набор данных и подготовить 1-страничный отчёт
- Рефакторить запутанный модуль с указанной целью
Избегайте открытого объёма ("построй маленькое приложение для X"). Вариативность в интерпретации объёма убьёт вашу рубрику.
Что делать с временным лимитом
Попросите кандидатов отслеживать и самостоятельно сообщать потраченное время. Верьте им, но якорируйте рубрикой: кандидат, который сообщает 90 минут, но производит 4 часа полированной работы, фактически потратил 4 часа. Рубрика должна вознаграждать правильный объём завершения за указанное время.
ClarityHire маркирует временные метки сеансов оценки и выводит фактическое прошедшее время рядом с самоотчётом кандидата. Расхождение — это сигнал: не в карательном смысле, а как контекст для рецензента.
Что никогда не делать
- "Мы ожидаем 4–8 часов работы." Это вежливая ложь. Кандидат либо тратит это время (и вы теряете его для более быстрых конкурентов), либо нет (и вы неправильно откалибровали).
- "Открытое, продолжай столько, сколько нужно." Худший возможный фрейм — побуждает самых увлечённых кандидатов переутомляться.
- "Мы оценим по качеству, не по скорости." Означает, что кандидат оптимизирует для полированности вместо сигнала, что является неправильным стимулом.
Структурная альтернатива
Если вы хотите более длительные домашние задания, основная потребность обычно "я хочу увидеть реальное инженерное суждение, а не просто небольшое исправление". Правильный ответ редко "сделай это длиннее". Обычно это "добавь обзорный интервью."
90-минутное домашнее задание + 30-минутный обзор даёт драматически больше сигнала, чем 4-часовое домашнее задание одно. Обзор тестирует рассуждение кандидата о его собственной работе — это то, что более длительное домашнее задание неявно пыталось измерить. Доберитесь туда напрямую.