Задачки по программированию — плохой способ оценки квалификации Senior Developer'а
- четверг, 26 декабря 2019 г. в 00:25:42
Как и многие другие родившиеся в Канаде дети, я прошёл обучение в Королевской консерватории. Это не только физическое здание, где можно заниматься и выступать, но и стандартизированная учебная программа, а так же сертифицированные учителя, доступные практически в любом городе. Последние регулярно проводят экзамены по всей стране, чтобы учащиеся могли перейти на следующую ступень своего музыкального образования.
Каждый экзамен имеет техническую составляющую и показательное выступление. Давайте поговорим о технической части. Для получения оценки, вы должны уметь выполнять несколько упражнений с вашим инструментом. На фортепиано в моём случае это были гаммы, арпеджио и т.д. Я уже и не вспомню их все.
По мере обучения, упражнения становятся всё более сложными, и выполнять их надо в более высокой тональности, пока на самом последнем экзамене вас не попросят выполнить любое упражнение в любой тональности.
После 14 лет изучения фортепиано, успешно сдав последний экзамен, любое упражнение на любой клавише мог выполнить и я. Но спустя ещё 14 лет, я даже не могу вспомнить названия всех этих упражнений. Смогу ли я заучить отрывок произведения и сыграть его на высоком уровне? Да без проблем!
Готов поспорить, что из всех прошедших обучение в консерватории и ставших профессиональными музыкантами, очень немногие смогут выполнить произвольное упражнение. Да, некоторые из этих упражнений бывают нужны при подготовке к выступлению, но лишь частично, и вспоминают их только тогда, когда это действительно нужно.
На этой неделе, когда я занимался задачкой по программированию на Hackerrank, мне пришлось достать пыльный учебник по структурам данных и алгоритмам, чтобы написать сортировку слиянием.
Сперва я почувствовал себя крайне неуютно, но потом пришло озарение: это та же история, что и с упражнениями на фортепиано в Королевской консерватории. Да, когда-то они были важны, и мы зубрили на информатике разные виды сортировок. Но рост профессионального опыта заключается в понимании когда и где применять конкретные алгоритмы, вспоминая реализацию лишь в случае необходимости. Я знал, для чего нужна сортировка слиянием, я знал, как найти её код. Я лишь не мог вспомнить его.
Кто-то поспорит, что Senior Developer должен уметь написать сортировку, не прибегая к справочным материалам, ведь это азы. Но я в это просто не верю. Делает ли человека лучшим музыкантом способность отлично играть гаммы в любой момент времени? Конечно же нет! Более того, я утверждаю, что оттачивая мастерство в учебном упражнении, вы теряете время, которое могли бы потратить на решение прикладных задач.
Можете представить, чтобы профессионального музыканта, не раз блестяще выступавшего на сцене, на собеседовании попросили бы сыграть гаммы? А после этого, так и не перейдя к исполнению отрывка, сказали бы: «Мы вам перезвоним», ведь он не справился с азами идеально.
Такие мысли вызывают у меня тошноту. Но мы живём в 2019 году, когда подобное происходит сплошь и рядом на собеседованиях в сфере программирования.
Компании используют сторонние сервисы типа HackerRank в качестве фильтра для отсеивания претендентов. Многие отличные разработчики отсеиваются, потому что не упражняются в написании сортировок регулярно. Компании жалуются на нехватку квалифицированных кадров на рынке труда. И это повторяется раз за разом.
Кстати, я даже не говорю о собеседовании в офисе. Я имею в виду самый начальном этап найма, когда часто HR присылает ссылку на несколько задачек на HackerRank, ограниченных по времени. И, получив результат спустя 10-15 минут, принимает решение продолжать ли общение. Такой подход к найму программистов — проблема нашей отрасли.
Мой опыт собеседований кандидатов подсказывает, что нет ничего лучше сеанса парного программирования. Уделите час-полтора разработке с общим экраном. Поработайте вместе в своём окружении, со своими инструментами, над своим проектом. Переключитесь и поработайте в окружении соискателя, с его инструментами, над каким-нибудь его кодом. Вы очень быстро поймёте уровень человека по вопросам, которые он задаёт.
И проверки памяти на алгоритмы совсем не нужно.