На этот пост меня натолкнул текст в канале Стой под стрелой про булшит-детектор. В конце автор пишет, что пост не про тестовые задания, и я с ним согласен: полезно и важно понимать, зачем мы делаем что-либо в принципе. А повторять за кем-то, становясь последователем карго-культа, глупо.
Но написать хочу про тестовые задания на собеседованиях.
Я отсобеседовал сотни человек, в Яндекс и Топтал, и просмотрел тысячи резюме. Подходящих кандидатов — уж не знаю, почему — действительно мало. В то же время, я часто встречаю в сети скепсис по поводу тестовых заданий: нафиг мне, крутану, чей час стоит $100, выполнять задания?
Простой ответ на этот вопрос: потому что мне нравится ваша компания, продукт, команда — и я хочу с вами работать. В таком случае задания и вам полезны: присмотритесь к компании, к людям, задающим вопросы. Не понравилось — до свидания, почему нет? Иначе это как жаловаться на трату времени на первые свидания.
Если же вы откликаетесь на десятки вакансий, тратить на домашние задания по несколько часов — скорее всего, непозволительная роскошь. Но это вопрос к вам: зачем вы откликаетесь на столько позиций?
А компании? Зачем они дают тестовые задания и просят писать код на собеседовании? Неужели недостаточно гитхаба, опыта и рекомендаций?
Про гитхаб. У большинства кандидатов, которых я видел, ничего интересного в профиле нет. У существенной части гитхаб-аккуанты просто пустые. Это, кстати, отсылка к необходимости быть публичным, заниматься сайд-проектами — чтобы было что показать и о чём рассказать.
Опыт, особенно заявленный в резюме, обычно никак не проверить. Задавая каверзные вопросы на собеседовании, удаётся узнать, что человек на самом деле делал, чему научился. Нередко в резюме заявлено, что кандидат сделал проект с нуля, добился выдающихся результатов, а во время расспросов выясняется, что это ребята бэкенд на PHP писали, а он рядом стоял. Это, кстати, тоже сигнал — скорее всего, такого не наймут.
Рекомендации? Может и можно выяснить важные подробности об опыте и навыках кандидата через рекомендации. Но на практике я такого не встречал. Максимум, на что идёт большинство компаний — это проверка факта трудоустройства. А такого, чтоб звонить прошлым коллегам и руководителям и расспрашивать про бывшего коллегу, нет.
Да и сколько людей будут помнить достаточно много и хорошо, а ещё будут готовы поделиться честным фидбэком? А что делать с ситуациями, когда кандидат не делится с текущим начальством планами о смене работы?
Вообще смысл тестовых заданий шире проверки навыка писать код или решать алгоритмические задачки. Важно не только какой код был написан, а ещё и почему, какие варианты решения задачи кандидат рассматривал, на какие компромиссы пошёл.
Это и проверка на внимательность: сложно сосчитать, сколько раз я видел людей, решающих не ту задачу на собеседовании — несмотря не проговоренные условия и заданные вопросы.
В конце концов, важно уметь рассказать про то, что вы сделали. Начать от общего и идти к частному, объяснить свой образ мышления, упомянуть проблемы, которых вы изначально не учли, а также решения, которые вы приняли, и их возможные последствия.
Если я нанимаю вас в свою команду, и нам потом работать вместе несколько лет, мне важно, чтобы вы могли объяснить, пусть и не всегда технически корректно, что происходит в коде, почему архитектура именно такая, как это всё подстроится под новые требования и заработает под нагрузкой (пресловутое О-большое). Насколько ваш код понятен другим — и что вы сделали, чтобы он был понятным.
Поэтому тестовые задания и нужны компаниям. Конечно, лучше знать ответ на вопрос "зачем мы даём тестовое задание". Но даже если в какой-то команде не могут внятно этого проговорить (ну точно софт-скиллов не хватило), это не означает автоматически, что опытные интервьюеры не считывают эти сигналы неосозанно.
А если стремиться сделать найм максимально объективным и исключающим false positives, получатся FAANG-style собеседования, с десятком секций, кучей стресса и непонятными отказами.