[Перевод] Задачки по программированию — плохой способ оценки квалификации Senior Developer'а

Как и многие другие родившиеся в Канаде дети, я прошёл обучение в Королевской консерватории. Это не только физическое здание, где можно заниматься и выступать, но и стандартизированная учебная программа, а так же сертифицированные учителя, доступные практически в любом городе. Последние регулярно проводят экзамены по всей стране, чтобы учащиеся могли перейти на следующую ступень своего музыкального образования.


c86026224f3783d82ab5f14cdd052f3e.png


Упражнения нужны для обучения

Каждый экзамен имеет техническую составляющую и показательное выступление. Давайте поговорим о технической части. Для получения оценки, вы должны уметь выполнять несколько упражнений с вашим инструментом. На фортепиано в моём случае это были гаммы, арпеджио и т.д. Я уже и не вспомню их все.

По мере обучения, упражнения становятся всё более сложными, и выполнять их надо на большем количестве клавиш, пока на самом последнем экзамене вас не попросят выполнить любое упражнение на любой клавише.

После 14 лет изучения фортепиано, успешно сдав последний экзамен, любое упражнение на любой клавише мог выполнить и я. Но спустя ещё 14 лет, я даже не могу вспомнить названия всех этих упражнений. Смогу ли я заучить отрывок произведения и сыграть его на высоком уровне? Да без проблем!


Упражнения не нужны на практике

Готов поспорить, что из всех прошедших обучение в консерватории и ставших профессиональными музыкантами, очень немногие смогут выполнить произвольное упражнение. Да, некоторые из этих упражнений бывают нужны при подготовке к выступлению, но лишь частично, и вспоминают их только тогда, когда это действительно нужно.

На этой неделе, когда я занимался задачкой по программированию на Hackerrank, мне пришлось достать пыльный учебник по структурам данных и алгоритмам, чтобы написать сортировку слиянием.

Сперва я почувствовал себя крайне неуютно, но потом пришло озарение: это та же история, что и с упражнениями на фортепиано в Королевской консерватории. Да, когда-то они были важны, и мы зубрили на информатике разные виды сортировок. Но рост профессионального опыта заключается в понимании когда и где применять конкретные алгоритмы, вспоминая реализацию лишь в случае необходимости. Я знал, для чего нужна сортировка слиянием, я знал, как найти её код. Я лишь не мог вспомнить его.

Кто-то поспорит, что Senior Developer должен уметь написать сортировку, не прибегая к справочным материалам, ведь это азы. Но я в это просто не верю. Делает ли человека лучшим музыкантом способность отлично играть гаммы в любой момент времени? Конечно же нет! Более того, я утверждаю, что оттачивая мастерство в учебном упражнении, вы теряете время, которое могли бы потратить на решение прикладных задач.


Упражнения не должны использоваться при найме

Можете представить, чтобы профессионального музыканта, не раз блестяще выступавшего на сцене, на собеседовании попросили бы сыграть гаммы? А после этого, так и не перейдя к исполнению отрывка, сказали бы: «Мы вам перезвоним», ведь он не справился с азами идеально.

Такие мысли вызывают у меня тошноту. Но мы живём в 2019 году, когда подобное происходит сплошь и рядом на собеседованиях в сфере программирования.

Компании используют сторонние сервисы типа HackerRank в качестве фильтра для отсеивания претендентов. Многие отличные разработчики отсеиваются, потому что не упражняются в написании сортировок регулярно. Компании жалуются на нехватку квалифицированных кадров на рынке труда. И это повторяется раз за разом.

Кстати, я даже не говорю о собеседовании в офисе. Я имею в виду самый начальном этап найма, когда часто HR присылает ссылку на несколько задачек на HackerRank, ограниченных по времени. И, получив результат спустя 10–15 минут, принимает решение продолжать ли общение. Такой подход к найму программистов — проблема нашей отрасли.


Так как же оценить квалификацию Senior Developer’а?

Мой опыт собеседований кандидатов подсказывает, что нет ничего лучше сеанса парного программирования. Уделите час-полтора разработке с общим экраном. Поработайте вместе в своём окружении, со своими инструментами, над своим проектом. Переключитесь и поработайте в окружении соискателя, с его инструментами, над каким-нибудь его кодом. Вы очень быстро поймёте уровень человека по вопросам, которые он задаёт.

И проверки памяти на алгоритмы совсем не нужно.

© Habrahabr.ru