Глядя в историю выполнения мной тестовых заданий, видятся закономерности, о которых хотелось бы предупредить коллег, потому что такие случаи встречаются регулярно и, скорее всего, независимо от специализации разработок. Например, к таким выводам я пришёл, имея на счету более десятка выполненных в разные годы заданий объёмом 2-5 рабочих дней каждое. А выводы — настолько парадоксальные, что, думаю, вызовут споры и удивление у тех, кто этого не прошёл. Сформулирую основной вывод для начала, а затем покажу обоснования на примерах из практики.
Вывод: (софизм) тестовое задание объёмом более дня с основной целью (поступления на работу) выполнять невыгодно.
На рынке вакансий иногда (5-10% случаев) бывают предложения от компаний сделать «домашнее» тестовое задание. Обычно оно занимает не менее нескольких часов: простые задания стараются не давать. Оказывается, большое значение имеет для соискателя, когда, в какой фазе общения это задание предлагают и какого оно объёма. Далеко не всегда означает, что задание разумно или выгодно выполнять. Очень часто задания содержат недоработки в постановке, а их выполнение оказывается менее выгодным, чем стратегия неотрывного поиска работы среди компаний, которые не предлагают тестов или предлагают менее сложные и более быстрые тесты (например, непосредственно на собеседовании или по Скайпу в онлайне).
В процессе нескольких лет работы на веб-фронтенде периодически встречались задания, которые не всегда было выгодно выполнять. Даже скажу так: ни одного случая найма с тестовым заданием не было успешным ни для какой стороны — ни для меня, ни для работодателя. В то же время, приём на работу, построенный на несколько иных принципах, был успешен. Итого, в выполнении заданий я привык видеть не те цели, которые, по идее в них видит другая сторона, работодатель. По сути, они не выполняют своей основной функции. Основная функция заданий (объёмом 8 часов и более) в большинстве случаев не работает.
1) не гарантируют оправдания потраченного времени даже в случае безошибочного выполнения;
2) создают непропорционально большие усилия по пути к данной вакансии;
3) возможны проявления безответственности с позиции работодателя: неинформирование от HR о результатах теста.
И поскольку число вакансий с заданиями — не более 10% от общего числа, имеет смысл даже стратегия невыполнения их! Однако, я к этому не призываю: иногда задания выполнять стоит из «любви к искусству», но при этом (парадокс!) можно не рассчитывать на успешный приём, т.е. делать их следует не ради приёма на работу.
Расшифровка софизма
Посмотрим на пару таких красивых примеров, которые выполнялись в разные годы и уже с пониманием этого парадокса. Т.е. я выполнял эти конкретные задания уже не для приёма на работу, а со 2-й или 3-й целями: для создания портфолио себе и для написания полезных для себя утилит. Почему опыт выполнения заданий привёл к таким выводам — поговорим в процессе рассмотрения.
Опыт ограничивается сферой разработок для Javascript/CSS/HTML, но думаю, что выводы будут верны и для других сфер разработки и программирования.
Как во всяком деле, применение тестовых заданий — большое искусство, и далеко не все им владеют. Хочу проиллюстрировать парой ярких примеров из практики, когда задания, иногда даже потенциально оплачиваемые, не приводили к положительному результату, хотя сами по себе не детектировали способности или неспособности работать.
Парадокс длинных заданий был замечен довольно давно: все вакансии, где задания были, оказывались не моими, независимо от успешности их выполнения (вернее нет, одна компания такая была, но я там на задание потратил раза в 4 больше времени, чем надо, поскольку в CSS есть понятие браузерной совместимости, и нужно много тестов для качественного результата). В итоге, думаю, не потому, что я выполнял их относительно плохо, а некто «успешный» выполнял каждый раз очередное задание «хорошо». Причины глубже — в психологии, в системе, в искусстве составлять задания.
Где-то в 2011 году на одном из собеседований мы не сошлись с работодателем во взглядах на ставку (это уже после собеседования, во время обсуждения вопроса о размере оклада), и он в присутствии HR из сторонней организации принял неожиданное решение: сформулировать тестовое задание и оплатить его. Объём — примерно на 3 дня. Написали договор, я начал делать, даже сделал. Получился такой красивый виджет с графиками, точно по заданию и скриншоту образца. Но, как это не удивительно, и тут образовались подводные камни психологии.
Задача — виджет с графиками
Ссылка на демо.
В формулировке задачи требовалась поддержка различных браузеров. А скруглённые уголки красивого виджета никак не поддерживались, как известно, браузерами IE6-8. А библиотеку PIE использовать было нельзя — она сильно нагружает движок.
На этом и сыграл хитрый работодатель. Точнее, даже не он, а курировавший меня работник — уж не знаю, зачем лично ему нужно было превращать договор в заведомо невыгодный. Вспомнили совместимость браузеров и строчку в договоре «Виджет должен работать одинаково во всех браузерах.» Она формально означала, что для поддержки скруглённых углов у IE6-8 (2011 год, он был ещё жив!) мне нужно увеличить объем работ примерно на 40%, сделать нарезку картинок по всем скруглённым углам и сделать ещё на 2 дня заведомо черновой работы, которая уж точно никому не была нужна, только потребителю виджета (PIE использовать нельзя). Она ничего не показала бы из умений, и предполагала, что виджет будет действительно нужен заказчику, а переносить эту часть работы в штатную работу (после приёма) он не хотел.
Вспомним момент, что окончательная сумма оффера была до сих пор неизвестна, поэтому, даже сделав бы работу, я мог не получить удовлетворительного предложения. Решение сложилось само собой. Даже пообещав доделать работу, я не мог найти оснований её доделывать. Уже через 2 дня появилось предложение о работе от крупной компании после 1 собеседования и без тестовых заданий, и на 3-й день я в ней работал. Оканчивать официально оформленное тестовое задание, теряя почти вдвое в его уровне зарплаты, не было никакого смысла. В то же время, заказчик получил бесплатно сделанную часть тестового задания и мог быть этим доволен, а я получил тестовую страницу, которую могу показывать как пример из своих работ. Пусть это — потраченное время, но по его результатам имелись:
1) оформленная тестовая страница с 3 экземплярами виджетов и настройками параметров;
2) опыт применения наследования DOM-объектов и шаблонизатора HTML;
3) использование библиотеки для построения графиков;
4) пример работы с JSON и XML в качестве входных данных.
Потенциальное вознаграждение за тестовое задание оказались вообще не имеющим ценности, ради которой задание следовало выполнить. Таким образом, задание не выполнило таких своих функций:
1) не заинтересовало материально на выполнение;
2) трактовка договора заказчиком перевело его в разряд материально невыгодных;
3) отвлекало от основной задачи — поиска и устройства на работу;
4) выполнялось в условиях неопределённости условий последующего предложения (оффера).
То, что работа оказалась мне лично полезной, получилось в результате того, что я старался решить эту задачу не с единственной целью, а с целью повторного использования написанного кода. Если ставить для тестового задания двойную цель, часто можно согласиться и на его бесплатное выполнение.
После данного случая было ещё не менее десятка тестовых заданий разного рода в последующие годы. Как и прежде, на работу брали совсем не обязательно с прохождением задания — желавших дать задание было не более 10%. Для ленивого соискателя можно даже цинично посоветовать не выполнять задания никогда — и в этом он не сильно проиграет. Но, всё же, они иногда играют полезную организующую роль, как опенсорс в мире коммерческого программного обеспечения.
Если задания направлены на самобразование соискателя и решают полезную для разработчика задачу, то выполнить такое задание иногда можно рассматривать как «дело чести» и как путь собственного развития. Можно без колебаний выполнить задание, если позволяет время, а задание исходит из среды авторитетной организации, побеседовать с представителями которой будет полезно в любом случае. Так было в 2013-м году с mail.ru.
Задачи — текстовые фильтры
Ссылка на демо 1.
Ссылка на демо 2 (подсветка слов).
До первой встречи они прислали красиво сформулированное тестовое задание из 2 задач, время решения которых представлялось примерно на рабочий день или чуть больше. Было сразу понятно, какое могло быть её второе использование. Кроме примера своего кода для не совсем тривиальной задачи (двух), получился бы пример быстрого JS-фильтра над большими текстовыми массивами данных. Для иллюстрации скорости работы я генерировал случайный набор слов, примерно 100 тыс., а затем в нём отыскивались слова по вводимому пользователем образцу фрагмента слова. В первой задаче они подсвечивались, во второй — показывались только строки с найдеными фрагментами. Из 1000 строк на экране мгновенно оставалось 5, 2 или нисколько, ноль строк.
Основная практическая польза задания тоже странным образом обратилась в нуль. Да, меня пригласили после этого на собеседование, оно прошло успешно, всё всем понравилось, но оказалось, что у mail.ru предполагается несколько собеседований, а на следующий день мне предложили работу в другой компании, после заочного собеседования по Скайпу, и в 2 раза ближе от дома, и с точно не худшими условиями. Опять не удалось практически реализовать эфемерный потенциал тестовых заданий, опять они остались для исполнения своей неосновной цели в будущем.
Задачи, которые неразумно выполнять
Под конец хотелось бы вспомнить и такие задачи (тестовые задания), короткий анализ которых (20-30 минут) приводил к выводу, что выполнять их абсолютно невыгодно. Об этом обычно писалось письмо работодателю с обоснованием, почему выполнение такого задания потребует неразумно много времени и даст мне как соискателю неоправданно мало шансов выбора. На это тратится осознанно ещё 30 минут письма, но мы получаем почти корректное расставание, если не считать, что работодателя приходится фактически ставить в неловкое положение, обосновывая, что он неправ. Обычно работодатели или отменяли задание без новых идей, или не отвечали.
Почему такие задачи неразумно выполнять? Обычно, это — задачи, которые требуют более 2 дней на решение (более 16 рабочих часов), для выполнения которых нет времени или при этом о работодателе я ничего не знаю. То есть, он даже мог не говорить о вилке зарплаты, об условиях работы, а сходу дать задание, которое часто называется «небольшим», но при этом «не на 5 минут». Уже по таким фразам можно понять что речь идёт о 2-5 днях неспешной работы. Очень часто такие задачи сопровождаются нечёткой постановкой, и можно на досуге поупражняться в поиске неопределённостей в постановке задачи. К примеру, ничего не говорится о поведении веб-формы в случае граничных условий (данных — ноль или очень много), не оговариваются условия валидации некоторых случаев заполнения форм, требуется «использовать Angular» там, где его не нужно по смыслу использовать (потому что перезагружаемая страница). В некоторых таких задачках угадывается, что задающий сам её ни разу не делал.
Вот в таких случаях нужно вовремя распознать «гниль» (сырость) задачи и «не покупать некачественный товар». Сохранить корректные отношения с работодателем при этом помогает дипломатический, вежливый подход, но, скорее всего, это же самое говорит о плохой продуманности кампании по поиску кандидатов, и тут уж научить работодателя, находять по другую сторону от вакансии, бывает невозможно и бессмысленно.
Практических случаев таких непродуманных заданий за последний год помнится два, в обоих случаях до собеседования предлагали «поработать» порядка недели неизвестно с какой целью. Точнее, с целью получить право говорить с работодателем дальше.
Тут, конечно, не надо объяснять, что 95% других работодателей не ставят такий препятствий, поэтому экономия недели-двух на отказе от таких предложений поможет здорово сэкономить в расходах на проживание. А освободившееся время выгоднее потратить на собственные проекты или на нормальный поиск работы и другую саморекламу себя в резюме.
Какие задания приветствовались бы
Можно понять работодателей, которые хотят увидеть живые примеры работ соискателей до того как они их примут на работу. Как вариант взаимно приемлемого диалога, есть такой, как выполнение заданий в онлайне через Скайп/джаббер, с немедленным комментированием хода мысли.
В таких задачах огромный плюс в том, что соискатель видит, что собеседующему не всё равно, сколько он потратит времени. Собеседующий сам не будет тратить своего времени, если по ходу работы станут понятны недостаточные способности соискателя. Задачи могут решаться ускоренно, условно, или сменять одну другой. Говорят о 2-часовых подобных интервью по телефону, но у меня на практике встречалось такое 20-минутное интервью, которое затем продолжилось на очной встрече.
Другой вариант приемлемого задания может быть, если оно предполагает трату времени порядка 2-5 часов. Может быть, с немедленным телефонным разговором по окончании. Для создания таких заданий нужно определённое искусство в выборе баланса сложности решения. Нельзя сделать задание слишком сложным. Нельзя придумать задачи с неочевидным решением — нужно даже подсказывать путь решения, потому что основная цель — проверить наличие знаний, а не потратить время соискателя. Примеры таких задач я сам старался создавать, будучи на месте работодателя, с той стороны вакансии. Что же бывает? Даже просто поставленые задания не все способны или имеют желание выполнить. И здесь есть ценз времени, которое соискатель готов потратить, и, возможно, нечётко сформулированные условия по выполнении этого задания.
Вспомним, что для соискателя очень важно знать, на каком условии он будет согласен потратить своё время на задание. Нет смысла давать задание до прояснения условий найма, кроме, может быть, самых простых тестов на знание арифметиики.
Как итог, можно сказать, что тестовые задания для соискателя — это не слишком безопасное орудие отбора. Им очень легко навредить в кампании найма, действуя без учёта психологии соискателей и без разбора. Это то же самое, как если бы поставить неоправданную цену на товар, который ещё не успели прорекламировать. Такую вакансию просто «не купят».
Советы соискателям:
*) услышав о тестовом задании, постарайтесь оценить её объём выполнения на базе формулировки задачи, оцените ошибки и неопределённости в её постановке, чтобы уточнить их перед выполнением;
*) оцените, будет ли вам выгодно тратить время на выполнение, взвесив вероятность успешного приёма; имейте в виду, что обещания принять на такой-то оклад в случае успешного выполнения, скорее всего, не будет;
*) оцените, выгодно ли вам сделать именно это задание именно сейчас, в процессе поисков работы и других собеседований и получите ли вы в результате полезный для себя продукт (в портфолио, в опенсорс-проект);
*) уточните у работодателя, не будет ли он возражать против публикации решения его задачи вами в ваших собственных целях.
*) если на все вопросы — ответ «да» — приступайте к выполнению тестового задания!
Автор: spmbt