Письмо В Редакцию: Специализированные Тесты Не Способны Выявить Профессиональные Качества Разработчика

В редакцию vc.ru пришло письмо от основателя рекрутингового агентства 2Диггеры Александра Зверева, в котором описал основные проблемы, связанные с использованием тестов при найме технических сотрудников в стартап.

По мнению автора, такие тесты лишь выявляют знание синтаксиса определенного языка программирования, но не демонстрируют профессиональные качества кандидатов.



Письмо в редакцию: Специализированные тесты не способны выявить профессиональные качества разработчика

В последнее время в Рунете появилось множество сервисов с тестами для айтишников.

Есть маленькие и серые, есть большие, есть бесплатные, есть платные.

Кажется, это рай для тех, кто нанимает: ставьте пачки людей у терминалов и нанимайте всех, кто наберет проходной балл.

Вероятно, они будут лучшими.

Я собирался сам пройти часть тестов и написать о нем отзыв, но все это как-то отложилось до тех пор, пока главный рупор массового найма Алена Владимирская небрежно не прорекламировала Центр сертификации Mail.Ru Group , правда, с учетом того, что эта услуга хороша для найма на средние и младшие должности.

Но Алена — HR. Но я все еще программист. И я могу пройти этот тест, оценить его и высказать свое экспертное мнение.

Что я и сделал.

Я сдал тест по языку C#.

И я набрал 14 из 45. Ну да ладно, я уже пару лет не прикасаюсь к C#, но всё равно я был одним из разработчиков почти четыре года РеШарпер и знал C# гораздо лучше, чем средний программист. Впрочем, возможно, я идиот, и команда ReSharper все эти четыре года находилась в опасности.



Параграф о методологии

Популярные сейчас проекты онлайн-образования (а еще создатели ЕГУ?) вовсю используют тесты.

Но у них другие цели тестирования: они проверяют, насколько слушатель усвоил материал.

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

Тебе нужный его продуктивность, а не его знания, подкрепленные умением ими оперировать.

Можно ли проверить работоспособность человека с помощью тестов? Наверное возможно.

У меня есть успешный пример тестирования аудиторов, но не программистов.



Хороший пример тестов для аудиторов

Компания, входящая в тройку крупнейших аудиторских компаний Северо-Запада, провела собственное тестирование кандидатов.

Изготовление теста заняло две недели чистого времени ведущих специалистов компании.

При этом тесты приходилось обновлять каждые полгода: 25% из-за изменений в законодательстве, а 25% — из-за естественной эволюции актуальных тем.

Тест состоял из 100 вопросов и занимал от трех до семи часов.

При этом кандидату был предоставлен доступ к правовой базе, но доступ к Интернету был ограничен.

Интересно также, что если бы тест вдруг утек из компании, он очень быстро потерял бы актуальность.

То есть испытание нужно было серьезно охранять.

Важно отметить, что тест не проверяет, помнит ли кандидат все законы и правила (вы знаете, что победитель чемпионата по скрэбблу во Франции не говорит Французский?).

Тест проверяет, понимает ли кандидат, как работает российская правовая система и может ли он быстро найти ответ на сложный вопрос, а также взвесить риски, связанные с противоречивыми законами.

Все как в реальной жизни.

Тест был не совсем с несколькими вариантами ответов, а скорее открытым.

Но написать в нем было мало что (краткий ответ и ссылки на законодательство и нормативные акты).

То есть в итоге тест проверили очень быстро.

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

А теперь представьте, что тот же самый ведущий интервьюер проводит собеседование.

Даже если он проводит честные двухчасовые собеседования (а собеседования часто можно прервать раньше), он мог бы проинтервьюировать 40 кандидатов за то же время, что и тест. Конечно, 40 кандидатов — это адская работа, действительно адская работа.

Но в среднем со сколькими кандидатами вы встречаетесь, прежде чем произойдет успешный прием на работу?

Как создаются современные языки программирования

Отлично, Mail.Ru Group потратила на вас эти 40 часов и провела хорошие тесты.

Но так ли они хороши? Большинство тестов не только Mail.Ru Group, но и большинства сервисов — это тесты по языкам программирования.

Что это на самом деле значит? Сравнительно давно я слушал презентацию Ильи Рыженкова о языке Kotlin: В этой презентации Илья пошутил о схожести синтаксиса языков Kotlin и Swift: кто у кого украл идеи? По сути, ни у кого нет, просто архитектурные решения, принятые обеими командами, висели в воздухе.

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

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

На моем любимом сервисе Coursera почти нет вопросов о том, «какие ошибки выдаст компилятор в этом фрагменте кода».

Для этой работы есть компилятор (сюрприз).

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

Именно поэтому они придумали делать автоматические тесты для программ и запускать их постоянно: люди допускают ошибки — и это нормально.

Ключевой навык для работы – умение справляться с этими ошибками.

Но тест «Где УоллиЭ» Это вообще не проверяется.

И еще один сюрприз.

Программисты читают программы больше, чем пишут их.

Именно поэтому в большинстве языков есть такое понятие, как идиоматический стиль.

Это способ написать программу так, чтобы ее было максимально легко читать другим участникам процесса.

Эта способность писать понятный код гораздо важнее, чем способность работать быстрее компилятора.

Теперь давайте сделаем не простой тест «найти ошибку», а полезный тест «написать понятный код».

Можете ли вы написать такой тест? Мне не.



Кому следует сдавать анализы

Хороший программист не обязательно сделает хороший тест. Просто из-за своей профессиональной деформации.

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

Итак, помимо технического специалиста вам нужен кто-то, кто будет постоянно помнить о цели теста и сопоставлять полезность каждого конкретного вопроса с тем, что нанятый через этот тест кандидат будет делать в будущем.

Цель тестирования — не показать, какой автор тестов умный, а показать, какой тест полезен.



Что вообще важно знать программисту?

Что является определяющим навыком программиста? Умение составлять программу.

В вашем конкретном случае это способность сделать программу определенного типа (сайт, игра, система управления ядерным реактором) в определенные сроки.

Вместо этого мы проверяем, насколько программист умнее компилятора.

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

Оставим в стороне радикальную точку зрения, что язык программирования не важен.

Более того, каждый язык задает свои парадигмы развития, и эти парадигмы необходимо хорошо понимать.

Можно ли сделать тест на понимание таких вещей, как, например, управление памятью в .

NET (поверьте, вопросов очень много, а многие кандидаты даже не знают основ)? Я уверен, что это возможно.

Но такого теста я еще не видел.

Может быть, потому, что с кандидатом на подобные темы гораздо приятнее говорить лично: тема широкая, глубокая и очень хорошо показывает, насколько кандидат понимает, как вообще работают программы.

После прохождения курсов полезен тест на синтаксис языка.

При приеме на работу важнее «затронуть» более глубокие вещи.



Другие услуги

На самом деле в тесте от Mail.Ru все не так уж и плохо.

Одному моему другу на собеседовании дали тест, который у него стал узнавать об экзотических параметрах командной строки в Java и о том, в каком порядке идут параметры каких функций.

Это провал.

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

Однако главный вопрос, который часто остается оставшийся без ответа , - «Почему ты все еще спрашиваешь то, что спрашиваешьЭ» И это «почему» должно быть прагматичным, а не из разряда «это должен знать каждый».

Когда я был маленьким, каждый должен был знать день рождения дедушки Ленина.

Мне, кстати, эти знания однажды пригодились: в военкомате у психиатра.



Что делать

  1. Во-первых, не стоит проверять этой ерундой даже специалистов начального уровня.

    Тем более, что для начинающего программиста знание языка не главное.

    Он научится этому за неделю.

    Для него важны хард-скиллы (те, которые приобретаются и развиваются долгим трудом): алгоритмы и данные.

    Здесь вы можете сделать тест о них.

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

    Не забывайте, что тест Может отсекайте не только безнадежных кандидатов, но и лучших кандидатов, так что не увлекайтесь.

  2. Во-вторых, идите к людям, которые понимают это так же, как и вы, но также имеют время подумать о методологии тестирования и провести это тестирование.

    То есть платите тому, кто умный и не ленивый.

    Оплата скорее всего будет почасовая.

  3. В-третьих, сделайте свои очень хорошие тесты, потратив на это много времени, сил и денег.

    А потом зорко следить, чтобы эти тесты не утекли из компании.

  4. В-четвертых, забудьте обо всех этих тестах, как вы уже сделали 20 лет назад с тестами и сертификацией от Мозговой стенд .

Вместе с данным постом часто просматривают: