metaclass (metaclass) wrote,
metaclass
metaclass

О задачах для кандидатов

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

Неделю назад одному товарищу (сам проявится в комментах, если захочет) дали на три дня тестовую задачу на С++ вида "возьмите GUI-фреймворк А, опенсорсную либу/набор утилит Б, сделайте из этого готовый продукт. Использовать готовую либу для интеграции A+B нельзя".

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

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

Вот например, примерное задание подчиненным программистам:

"Реализовать на Clojure синтаксис для описания и конверсию в плоский список дерева, с автоматической генерацией уникальных целых идентификаторов узлов, которые не должны изменяться при изменении дерева.
Каждый узел имеет уникальный набор естественных атрибутов, известный из постановки задачи клиентами. Так же он может содержать поле :Name с названием узла.
Выходной список должен предствлять собой последовательность мапов, содержащих естественные атрибуты дерева, поле :ID содержащее идентификатор, строковое поле :Sort для сортировки списка в порядке расположения узлов в дереве, и поле :Name, вычисленное исходя из естественных атрибутов, либо заданное явно в описании дерева".

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

Но у меня есть обоснованные подозрения, что не аутист из белорусичеловек, который не мыслит категориями структур данных и функций 90% времени это задание поймет сразу.
Более того, он не сразу увяжет это задание и постановку задачи клиентами (которая представляет собой Excel файл описания документа с иерархической структурой).

И это, например - мелкий кусок реализации одной из категории документов в изолированном подмодуле одной из десятка оперденей.


А другие типичные задачи могут выглядеть, например так (типичный опердень-фреймворк):

"Нужно сделать пригодный для использования коллегами образ виртуальной машины, на котором будет настроена среда разработки для Clojure и в нем поднят сервис, оборачивающий CRUD-запросы к нескольких разным СУБД (для прототипирования использовать Firebird и Postgresql) в RESTful веб-сервис, так же нужно реализовать способ описания и обертки в RESTful произвольных SQL-запросов к СУБД, при этом желательно чтобы проверка валидности запросов производилась статически при старте сервиса.
Следующим этапом будет создание деплоймент пакетов сервиса и базы данных для Windows (XP,2003, win7, 2008) и Linux (использовать ubuntu 10 или 12 LTS)
Третий этап - разработка пользовательского интерфейса на js для веб и qt для десктопа, который бы позволил подключаться к этому сервису и работать с ним"

Вот как из этого вычленить тестовую задачу для кандитата, например? Или как вообще выяснить, пригоден ли он для самостоятельного решения таких задач? И сколько вообще разных кандитатов надо на это?
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 51 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →