Тестовое задание: сколько времени тратить и когда отказаться
Тестовое задание — задача, которую компания присылает сделать самостоятельно: небольшое приложение, анализ данных, дизайн-упражнение, баг в учебном репозитории. Сложность обычно не в самой задаче. Сложно решить, сколько времени на тестовое тратить, делать ли его вообще и что сдать, чтобы проверяющий увидел ход ваших мыслей. Разберём, что уточнить до старта, как ограничить время, когда отказ — нормальное решение и из чего состоит хорошая сдача.
Что уточнить до начала
В тексте задания часто нет самого важного. Короткое письмо рекрутеру обычно снимает вопросы, и спрашивать — нормальная часть процесса. Если вы ещё на этапе первого звонка с рекрутером, спросите там.
- Сколько времени вы закладываете? Если отвечают «сколько хотите», спросите, как выглядит типичное решение.
- Что будете оценивать? Структуру кода, тесты, корректность, продуктовое мышление, умение объяснить? От этого зависит, куда вкладывать часы.
- Какой срок и можно ли его сдвинуть? Неделю часто дают, если попросить.
- Будем ли обсуждать решение на следующем этапе? Если да, описание решения становится ещё важнее.
- Какие инструменты можно использовать? Язык, фреймворк, библиотеки, ИИ-ассистенты. Правила в компаниях разные — лучше спросить, чем гадать.
- Оплачивается ли задание? Некоторые компании платят за длинные тестовые. Для всего, что дольше нескольких часов, вопрос уместный.
Запишите ответы — это и есть ваш объём работы.
Сколько времени тратить на тестовое задание
Определите бюджет до того, как откроете редактор, и запишите его. Разумная точка отсчёта — время, которое назвала компания, плюс немного на описание. Потом проверьте, реалистичен ли он: пробегитесь по всему заданию, разбейте на части и оцените каждую. Если ваша оценка вдвое больше заявленной, это полезная информация. Напишите рекрутеру, что сделаете в первую очередь, или спросите, подойдёт ли урезанная версия.
Несколько привычек, которые не дают времени расползтись:
- Сначала ядро. Добейтесь, чтобы основное требование работало целиком, и только потом полируйте.
- Контрольные точки. На середине бюджета посмотрите, что готово, и вычеркните то, что не влезет.
- Список «если бы было больше времени». Ведите его по ходу — он пойдёт в README, а не в лишние вечера.
- Остановитесь на бюджете. Честная пометка о том, что не сделано, лучше недели бесплатной работы, о которой потом пожалеете.
Потратить больше времени, чем просили, может выглядеть как старание, но проверяющие обычно сравнивают решения с тем объёмом, который сами задали. А лишнее усложняет ревью. Если вы ищете работу, не уходя с текущей, вечеров и так немного — о том, как всё совмещать, в статье как искать работу, если уже работаешь.
Когда отказаться от тестового и как
Отказ от тестового — не провал, а решение о том, куда идёт ваше время. Отказаться или попросить альтернативу вполне разумно, если:
- задание тянет на несколько полных дней и не оплачивается;
- оно похоже на реальную работу: фича для их продукта или анализ их настоящих данных;
- его прислали до всякого живого разговора, а у вас есть процессы, которые продвинулись дальше;
- у вас уже несколько тестовых в работе, и это вы не сделаете хорошо;
- объём растёт уже после того, как вы начали.
Некоторые компании предлагают замену: лайв-кодинг или разбор кода, который вы уже писали. Не спросите — не узнаете. Подойдёт короткое вежливое письмо:
Спасибо за задание. Вакансия мне интересна, но сейчас я не могу выделить на тестовое [оценка времени]. Можно ли вместо этого провести лайв-кодинг или разобрать один из моих прошлых проектов? Если нет — понимаю и буду рад остаться на связи на будущее.
Кто-то откажет и закроет процесс. Это их выбор, а ваш — не менее законный. Отказ от задач, которые вы не потянете качественно, ещё и бережёт силы на длинной дистанции — об этом статья о выгорании при поиске работы.
Что сдать вместе с кодом
Код — только часть сдачи. У проверяющего может быть мало времени и никакого контекста, кроме задания, поэтому облегчите ему жизнь.
README, в котором есть:
- как установить и запустить — в минимум шагов;
- что сделано и какие требования покрыты;
- ключевые решения и компромиссы: «Взял SQLite, чтобы не усложнять запуск; в проде был бы PostgreSQL»;
- что бы вы сделали при большем времени;
- примерно сколько времени ушло;
- какие допущения вы сделали там, где задание неясно.
В самом коде:
- несколько осмысленных тестов на основную логику вместо множества поверхностных;
- понятные небольшие коммиты, если сдаёте репозиторий, — они показывают, как вы работаете;
- никаких секретов, API-ключей и личных данных;
- единое форматирование: прогоните форматтер и линтер.
Перед отправкой склонируйте своё решение в чистую папку и пройдите по README буквально. Всё, что сломалось, — исправьте.
После сдачи
Отправьте короткое письмо со ссылкой и спросите, когда ждать обратной связи. Запишите дату в трекер откликов и один раз напомните о себе, если срок прошёл. При отказе можно попросить фидбек: кто-то делится, многие нет.
Тестовые отнимают время, и выбирать, за какие браться, проще, когда хороших вариантов достаточно. Hot Jobs помогает держать воронку наполненной: присылает в Telegram новые вакансии с карьерных страниц 390+ компаний и двух площадок с удалёнкой — по выбранным ролям и регионам. Делать задание за вас бот, конечно, не будет. €3, оплата один раз. Подключить бота