Прагматичный подход к тестовым заданиям для программистов

в 7:09, , рубрики: Карьера в IT-индустрии, тестовые проекты, управление персоналом, Учебный процесс в IT

В идеальном мире нам бы не потребовались интервью и тестовые задания. Мы бы брали людей на работу, и если бы они не справлялись — увольняли бы их. Мы не в идеальном мире. Именно поэтому наши интервью и тестовые задания должны быть подобием реальной работы.

Прагматичный подход к тестовым заданиям для программистов - 1Тестовые задания сами по себе — это ни хорошо и ни плохо. Но они должны решать практическую задачу, как-то влиять на процесс найма, желательно в лучшую сторону: помогать отличать хороших кандидатов от плохих, экономить время и деньги. У применения тестовых заданий есть свои последствия. И сами тестовые задания могут соответствовать или не соответствовать поставленной цели. Я не претендую на полноту. И буду рад, если вы поделитесь своими соображениями.

Работодатель и его сверх-идеи

Работодатель, как ему кажется, дает тестовые задания потому, что:

  1. полноценно оценить кандидата можно только по его коду
    • Это действительно может быть проблемой, если кандидат не занят ни в одном проекте с открытым кодом. Но вы можете рассматривать тестовые задания, которые кандидат делал для других компаний.
  2. собеседование не дает нам достаточно информации
    • Вопрос в том, даст ли вам такую информацию тестовое задание. Т.е. если вы с самого начала не представляете как и какую информацию вы хотите получить из тестового задания и не можете донести эти требования до кандидата, то вы обречены на неэффективность. Причина провальности затей с тестовыми заданиями часто кроется именно в том, что кандидат не понимает, что и почему от него хотят в итоге.
  3. нет времени общаться с каждым кандидатом
    • Это самый странный и нечестный мотив. Время кандидата стоит примерно столько же, сколько и ваше. Но только ваше время оплачивает компания, а время кандидата в данном случае оплачивает его семья. Более того, кандидатов расхватывают как пирожки, и если у вашей компании нет образа компании мечты, то вы просто потеряете самых интересных кандидатов.
    • На самом деле, хорошее тестовое задание непросто придумать. К тому же его надо обкатать, что требует значительных затрат. На халяву — не пройдет.
  4. задание прокачивает специалистов начального уровня
    • Любопытный мотив. Я убежден, что у каждого ученика должен быть ментор. Пусть они встречаются раз в неделю, а основная масса работы происходит даже и за пределами компании. Формат, когда интерна направляют, намного эффективнее самостоятельных исследований. Только не говорите, что у вас нет времени учить, в таком случае просто не берите специалистов начального уровня.
  5. тестовое задание демонстрирует способность кандидата предоставить результат, а не только процесс. Мне это кажется неверным. Результат в реальной работе редко когда достигается за время, которое потрачено даже на очень большое тестовое задание.
  6. выполнение тестовое задание демонстрирует заинтересованность в работе у вас. Если у вас сильный HR-бренд, то, наверное, да. Но для большинства компаний — это неверно. С таким же успехом можно считать, что выполненное тестовое задание показывает, что у кандидата много времени, у него нет других предложений, что он отчаянно нуждается в работе. И то и то — глупость. Вы не можете знать личных мотивов человека.

Мотивы работодателя-неврастеника

Прагматичный подход к тестовым заданиям для программистов - 2

  1. Мы не знаем, как собеседовать
    • Особенно это замечательно, когда тестовое задание тебе высылают сразу в ответ на резюме. Удивительно, но такие сказочные компании до сих пор существуют.
  2. Тестовое задание как отсрочка принятия решения
    • Ваши сомнения — это только ваши сомнения. Не стоит перекладывать ответственность на кандидатов.
  3. Никого не набрать, а доказать, что я самый здесь умный
    • Люди рассматривающие тестовые задания в одной крупной и известной компании отбраковывали тестовые задания, если там были использованы лямбды или анонимные делегаты (C#). Хорошо, но только об этой их дискриминации замыканий ничего не было в условиях тестового задания.

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

Про инженеров. Методология.

Проблемы с методологией:

  1. Тестовое задание должно тестировать
    • что-то существенное. Что для вашего проекта существенно? алгоритмы? языки? фреймворки? командная игра? бизнес-модель?
    • что-то связанное с будущей работой кандидата: одно и тоже задание может быть показательным и непоказательным — все зависит от работы, которую придется выполнять. Какая главная сложность в разработке в вашем проекте? Вам нужна экспертиза в разработке или в предметной области? Что кандидат будет делать?
  2. Тестовые задания — не интерактив
    • С вопросами на интервью вроде бы все понятно: это интерактивное мероприятие, всегда можно уточнить, переспросить и направить разговор в нужное русло (это относится и к кандидату и к интервьюеру). Намного хуже с тестовыми заданиями: кандидат может уточнять непонятное в письме или звонком, но с другой стороны всегда есть опасение показаться неквалифицированными. Кандидата может занести не в ту сторону, особенно если вы не четко обозначили требования: в разделе про реальные тестовые задания, я рассмотрю несколько таких примеров.
  3. Обязательно надо объяснять, как вы проверяете соответствие результата поставленной задаче. У всех свои критерии оценки, да-да-да. Хорошее объяснение есть тут. В нем замечательно то, что ребята понимают и свои слабости, поэтому они не ищут интересные решения.
  4. Вы сами не сделали свое тестовое задание. Многие компании оценивают сложность тестового задания и дают его кандидатам, считая что их оценка верна, при этом в реальной работе с оценками почти ни у кого не получается угадать. К тому же выполнение тестового задания может вскрыть неявные сложности, или то, что ваше на первый взгляд распрекрасное задание — это занудная рутина про прописывание строк в конфиги (что, впрочем, тоже может быть задачей) и только 5% в нем про реальную сложность. Такой пример у меня тоже есть.
  5. Обязательно должна быть статистика выполнения заданий как кандидатами, так и сотрудниками вашей компании. Задание может оказаться слишком сложным даже для ваших лучших специалистов. Или на рынке может не оказаться кандидатов, способных сделать ваше задание качественно, что печальный факт, но этот факт надо принять и решить, что с ним делать, а тут без статистики — никак.
  6. Компания MachineZone открыто публикует свои задания на сайте. И они большие молодцы. Кандидату понятно, чего ждать, он может оценить себя, сэкономить свое время. К тому же публичные тестовые задания — это хорошо для HR-бренда.

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

О! А есть еще и кандидаты!

А что же думают кандидаты, когда им дают тестовые задания?

Прагматичный подход к тестовым заданиям для программистов - 3

  1. Тестовые задания — искусственны
    • Часто непонятно, что от тебя ждут и в каком объеме. Легко можно получить минус за слишком сложное инженерное решение или наоборот слишком простое без задела на развитие. Какое, простите, развитие?
    • Олимпиадные алгоритмические задачи, задачи на сферических данных с четкими ограничениям — наоборот не искусственны. Но они, естественно, имеют свою область применения: способность решать такие задачи, не означает, что кандидат будет хорошо делать большие системы или писать понятный код.
  2. Тестовые задания — это скучные, однообразные поделки
    • Конечно, если ваша работа — это скукота смертная, то можно проверить, как кандидат справляется с ручной расстановкой кнопок на 100 форм, но лучше, чтобы тестовое задание решало и бизнес-цели, например, рассказывало внешнему миру, какие вы интересные и какие у вас сложные задачи.
  3. Тестовые задания требуют большого количества времени, которого нет у соискателя
    • 8 часов на тестовое задание — это реальные две недели: у кандидатов есть семья, работа, спорт-зал, жизнь, бары, короткое лето. Вечера — это два часа свободного времени. Выходные — больше, но дайте людям жить.
    • Если дать большое тестовое задание почему-то необходимо, то не ограничивайте кандидата, дайте ему столько времени, сколько потребуется.
  4. Непонятно, какие критерии оценки задания. На что обратить внимание и когда остановиться?
  5. Непонятно, что и в каком объеме нужно реализовывать
  6. Вы даете мне тестовое задание, чтобы потом взять его и не платить мне за работу. Можно я не буду это комментировать?
  7. Конечно, еще бывают высоколобые и наглые кандидаты, которые агрессивно вас пошлют, но ведь это хорошо, что они так рано отвалились? Впрочем, а может у них просто есть предложение без тестового задания?

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

А есть еще и HR-ы и процесс найма!

Проблемы с заданиями, как их видят HR-ы:

Прагматичный подход к тестовым заданиям для программистов - 4

  1. Тестовые задания сокращают поток кандидатов, многие кандидаты просто будут отказываться их выполнять, или будут исчезать получив задание
    • Помимо инженерных требований, есть еще бизнес-требования. И между ними есть некоторое противостояние. Это не значит, что надо приносить качество в жертву чему бы то ни было, но всегда надо иметь в виду, что у тестовых заданий есть последствия: многие хорошие кандидаты просто откажутся их выполнять
  2. Тестовые задания удлиняют время найма. Удлиняют его значительно.
    • За это время кандидат может получить предложение от конкурентов.
    • Если вы замучили кандидата интервью и тестовыми заданиями, то во время финальной встречи он будет завышать свою стоимость: еще бы! он прорвался через столько заслонов, вы ему продемонстрировали, как трудно к вам попасть, и теперь-то он точно знает, что стоит дороже.
  3. Тестовые задания влияют на карму и HR-бренд
    • Хорошее тестовое задание привлечет к вам интерес и создаст образ сильной компании
    • Плохое тестовое задание — это шаг к пропасти. Вы обращали внимание на соотношение плохих и хороших отзывов на товары и услуги в интернете? Написать гадость легче, чем написать что-то хорошее.
  4. Как бы мы не формализовывали процесс найма, какие бы мы технологии не использовали — найм это процесс творческий. Творческий он потому, что вы ищете человека, с которым вам будет понятно и интересно работать, т.е. он должен входить в резонанс с вашими мыслями и способом делать работу. Тестовые задания, в силу своей временной ограниченности, не решают это проблему, они всего лишь помогают отсечь лишнее.

Выводы: Тестовые задания делают процесс найма более тяжелым и долгим. Многие хорошие кандидаты выбывают, а слабые наоборот остаются.

Хороший пример: За задания можно платить, что несколько снимает остроту проблемы. Например в VisualSVN платили техписам: им давали достаточно объемную задачу, которая, естественно, уже была реализована (т.е. была выполнено еще одно важное условие: было с чем сравнивать, были известны проблемы при выполнении задания). В случае, если техпис выполнял задание в установленный срок (они давали 2 недели), то его работа оплачивалась по рыночным ценам. Лучший кандидат был приглашен на работу. Это пример честного подхода к чужому времени и самому ценному ресурсу — человеческому.

А еще я собрал реальные тестовые задания

Что делать с тестовыми заданиями — решать вам.

Если вы все-таки даете тестовые задания, то посмотрите, что предлагают другие компании (некоторые задания достаточно старые, но тем не менее они очень любопытны), возможно это натолкнет вас на что-то интересное.

Автор: planerist

Источник

Поделиться новостью

* - обязательные к заполнению поля