Тестовые задания — зло, кидалово или необходимость?

Привет всем. Очень интересует мнение сообщества. Фактически эта статья — опрос.
Так получилось, что последние пару месяцев активно ищу работу. И периодически приходят такие вот ответы на резюме:

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

Примеры задания:

ЗАДАЧА ТЕСТОВОГО ЗАДАНИЯ:

Необходимо написать драйвер работающий в среде Windows 7 X32 и выполняющий блокировку работы с любыми файлами, размещенными на съемных USB-накопителях (флешках) в названии которых присутствует хотя бы одна цифра. Под блокировкой работы подразумевается невозможность чтения/модификации/удаления этих файлов.

Результат предоставляется в виде исходного кода и бинарного файла драйвера с инструкцией по установке.

СРОК РЕАЛИЗАЦИИ: 3 рабочих дня


И еще одно:
Требуется разработать на C# расширяемое решение по поиску файлов на диске.
* Решение обладает Web интерфейсом
* Решение позволяет
* указать путь к каталогу, в котором производится поиск
* указать настройки поиска
* производить ли поиск в подкаталогах
* ограничения на атрибуты, размер, дату
* просмотреть динамически обновляемый (т.е. меняющийся по ходу поиска) список результатов поиска
* остановить запущенный и выполняющийся в данный момент поиск
* поиск может быть расширен при помощи plug-in модулей
* каждый модуль соответствует какому-то определенному типу файлов, например .txt, .doc или .xml
* модуль реализует UI который позволяет настраивать условия, специфические для поддерживаемого типа файлов, по которым пользователь хочет провести поиск
* модуль также реализует алгоритм проверки соответствию заданным условиям
* подключение/отключение модуля происходит путем размещения плагина в директории
* подключение/отключение модулей может происходить без перезагрузки программы
* за один раз можно искать файлы только одного типа (т.е. работает только один модуль расширения)
* требуется реализовать два модуля расширения
* обязательный модуль: поиск текстовых файлов по подстроке
* модуль для файлов по вашему выбору, например:
* .doc: поиск по атрибутам (свойствам) офисных документов
* .xml: поиск по значению узла
* .dll: поиск managed .NET assembly содержащей класс, реализующий определенный интерфейс
* .mp3: поиск по значению из заголовка mp3
* любой другой тип файлов

Цель задания – продемонстрировать навыки:

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

Допускается использование специализированных GUI и скриптовых библиотек, если это не нарушает лицензионных соглашений.


Я думаю, многие с таким сталкивались. По моему личному мнению тестовые задания:

1. Не дают представления о кандидате (кто мешает нанять фрилансера на выполнение его)
2. Очень дурно пахнут кидаловом (был опыт, когда моя библиотека вошла в релиз известного продукта, а мне было отказано)
3. Показывает то, что работодатель не ценит своих сотрудников и их время, не считая уже деньги

К чему статья. Хотелось бы услышать мнение сообщества, все таки тестовые задания зло или место быть.

Спасибо.
Тестовые задания — зло или показатель умения:

Проголосовало 820 человек. Воздержалось 457 человек.

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

Поделиться с друзьями
-->

Комментарии (492)


  1. Veliant
    28.03.2017 19:19
    +3

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


    1. klylex
      28.03.2017 20:18
      +4

      Они так во вкус вошли, что подумали, что вы уже наняты. =)))
      А потом поняли «Блин, ему же ещё и платить надо будет».


    1. porn
      28.03.2017 20:58
      +26

      однажды
      в большинстве случаев
      Хорошая выборка.


    1. rfvnhy
      29.03.2017 14:14

      ИМХО не предоставление копируемого исходного кода вполне нормальным будет.
      Например отдавать только исполняемый файл. Для проверки работоспособности и дизайна уже достаточно. А исходный код только в присутствии кандидата с листов распечатки пусть проверяют.
      Или сразу регистрировать/патентовать свой код и выпускать под лицензией.

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

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

      т.е. если вам предлагают большое тестовое задание «по специфике» фирмы-нанимателя, которое требует десятки часов работы — вполне нормальных будет предложить договор на работу… Или пусть дают задания, которые не требуют для выполнения более часа времени.

      А так это выглядит кидаловом «с бесплатной месячной стажировкой»…
      Особенно если заданий больше одного. Или нет чётких критериев примут/не примут.
      В общем что-то типа «договор о намерениях».


      1. vanxant
        03.04.2017 10:39

        Исполняемый файл в вебе? Т.е. верстальщик вместо html присылает exe? А чо, клёвая идея!


  1. redfs
    28.03.2017 19:31
    +27

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


    1. singlevolk
      28.03.2017 19:33
      +4

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


      1. klylex
        28.03.2017 19:58

        Может быть это одна и та же контора? Просто с разными названиями.


    1. mark_ablov
      28.03.2017 20:18
      -8

      Первое — вполне ок. Надо правда вакансию глянуть, но вообще нормальное задание.


      1. singlevolk
        28.03.2017 20:42
        -1

        Да, задание интересное. А на сколько у Вас бы поднялось знание русского языка предложи бы вы тестово поднять на 7 этаж грузчикам?


        1. mark_ablov
          28.03.2017 21:16
          +3

          Увы, моих знаний русского языка не хватает чтобы распарсить ваш вопрос, но, по крайней мере, их достаточно чтобы писать наречие «насколько» правильно и обособлять деепричастные обороты ;)


          1. singlevolk
            28.03.2017 21:19
            -5

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


            1. mark_ablov
              28.03.2017 21:26
              +2

              1. Это была ваша ремарка про мой уровень русского языка.
              2. Своё мнение я высказал.
              3. Расшифруйте все же ваш вопрос, а то я до сих пор в недоумении.


              1. singlevolk
                28.03.2017 21:30
                +5

                А там расшифровывать нечего.
                Посыл мысли — Что бы Вам сказали грузчики, если бы Вы предложили им тестовое задание — поднять на 7 этаж груз. Ну потом бы решили, нанимать их или нет.


                1. ggrnd0
                  28.03.2017 21:48
                  +4

                  «Если это опять рояль, мы тебя в нем похороним» (с)… %ъ

                  А вообще в чем проблема? Надо же узнать можно ли грузчику доверить 300-летний антикварный шкаф из массива дуба?
                  Надо и силу проверить и умение поднимать спускать негабаритные предметы по лестнице.
                  Если грузчик не может прикинуть на глаз или измерить рулеткой и сказать пройдет ли шкаф в лифт или по лестнице, то за таким грузчиком надо будет поставить кого-нибудь опытного присматривать…
                  Может дешевле будет краном через окно спустить? Или даже люльку с крыши спускать, стрела то имеет ограниченную длину…

                  P.S. вы думали работа грузчиком — это просто? =)


                  1. singlevolk
                    28.03.2017 22:03
                    +1

                    Хорошая отмаза. В теории. А как насчет практики? Не пробовали? Вот я в прошлом комментарии про это и намекал. Русский язык обогатился бы однозначно.


                    1. LynXzp
                      29.03.2017 17:12

                      Такие тестовые задания необходимо оплачивать как работу (на хабре обсуждалось). Так что и написать можно и перенести рояль.

                      А за бесплатно делать такие задания как выше — точно кидалово.


                1. mark_ablov
                  29.03.2017 08:21

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


                  1. rfvnhy
                    29.03.2017 19:06

                    Ну скорее «Если ваша работа нас не устроит — мы ее прервем сразу же как это поймем. За каждый этаж подъема будем платить столько-то, штраф за порчу груза такой-то»
                    Будет вполне нормально. Или если вопрос пройдет/не пройдет/… Так задание тогда не «поднять», а «объясните как вы будете поднимать вот этот груз» (наличие груза не обязательно, достаточно если будет полное его описание и реальное место, куда его «надо поднять»…

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

                    Очень давно читал одну историю на анекдотах-нет, сейчас что-то найти не смог.
                    Про то, как очень качественно, быстро и дешево подняли холодильник при переезде.
                    «Работники» использовали ремни/веревки, перехватывали и тп, а были просто «с улицы, мимо проходили»
                    Там в описании явно видно УМЕНИЕ в погрузочных работах.

                    А так часто проще, дешевле и надежнее «краном в окно»
                    Даже тут в блоге Крока мелькало. Что то перекрытия могут не выдержать(именно транзитное, на месте всё было рассчитано), то по габаритам не проходит…

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


    1. pankraty
      28.03.2017 20:57
      +10

      Поддерживаю. Мне доводилось выполнять тестовое задание для одной конторы, в котором требовался очень простой (и явно не для использования в продакшене) функционал, но обставленный рядом дополнительных требований к используемым техникам и технологиям: реляционная СУБД, WCF-сервисы, UI на основе WPF, IoC и т.п. Такое задание, очевидно, служит именно для того, чтобы оценить степень владения кандидата стеком технологий, используемых на проекте, скорость работы, качество архитектуры, кода, документации. Уровень владения английским, в конце концов. Такой вариант оценки кандидата вполне оправдан, на мой взгляд.
      И, кстати, когда я отправлялся на собеседование в другую контору, меня спросили, готов ли я выполнить тестовое задание, на что я им предложил посмотреть результаты задания, выполненного для другой компании, — всех это вполне удовлетворило, тратить время на еще одно задание не пришлось.

      То, что описано у автора, реально больше похоже на развод.


      1. dmrt
        29.03.2017 17:25

        Точно, нужно что-то на подобии ЕГЭ — ЕТЗ.


        1. rfvnhy
          29.03.2017 19:07

          Если будет «единое», то начнут «списывать» у прошлых кандидатов и тп
          Так что задания должны быть или индивидуальными или выдаваться одновременно…


          1. dmrt
            29.03.2017 20:26

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


    1. d-stream
      28.03.2017 21:40
      +8

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

      Собственно задача задания — отсеять тех, кто в резюме поместил знакомые слова — этакая капча -)

      И стоит отметить, что оно работает — более 50% слилось сразу…


      1. CTpaHHoe
        28.03.2017 23:35

        у меня похожий опыт.

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

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

        еше просил кандидатов показать код, который желательно написан just for fan. (чтобы убедиться, что человек еще способен писать что-то just for fan — потому что программисты, которые пишут код только ради денег — грустные и усталые программисты). просил нарисовать графический интерфейс для какой-то нехитрой задачи (поднимал вопрос, что будем делать, когда начнем переводить интерфейс и как будем втискивать длинные строки на казахском языке).

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

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


        1. 3aicheg
          29.03.2017 03:59
          +15

          показать код, который желательно написан just for fan

          Набирали программистов на вентиляторный завод?


        1. Bringoff
          29.03.2017 08:20
          +8

          программисты, которые пишут код только ради денег — грустные и усталые программисты

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


          1. am-amotion-city
            29.03.2017 15:20

            Никакой связи между наличием/отсутствием личной жизни и других хобби и наличием/отсутствием кода, написанного just for fun нет.


            Я в последнее время убедился: нет кода just for fun? — До свиданья, иди вон в аутсорс на повременку. Мне лично такое убожество, как программист, работающий только за деньги, — за соседним столом не требуется.


            1. 3aicheg
              29.03.2017 17:08
              +5

              Вот, а кому-то, может, за соседним столом не требуется такое убожество, которое воображает о себе невесть что, называя остальных убожествами и выдавая вавки в собственной голове за некие абсолютные истины…


              1. rfvnhy
                29.03.2017 19:13
                -1

                Вы забываете что «нельзя быть слишком серьезным» во многих специальностях… Это просто ненормально.
                Если например электронщик не готов «just for fun» спаять какую-нить веселую фигню, если для него это ТОЛЬКО работа, то работать с ним в команде будет ОЧЕНЬ СЛОЖНО.
                Конечно перегибы то же нехорошо, особенно если они мешают работе или несут элемент риска для имущества/здоровья (а то бывют «шутники», от которых надо немедленно избавляться, пока ничего не случилось)…


                1. ukt
                  29.03.2017 20:46
                  +2

                  Я извиняюсь, а если электронщик уже напаялся всякой «весёлой фигни»?
                  А теперь делает то, что лучше всего у него получается — всё в утиль его, электронщика то?


            1. VolCh
              29.03.2017 17:12
              +1

              А который и дома работает над рабочим кодом just for fun — ну там рефакторинг, например, который вечно откладывают "вот после релиза порефакторите"?


              1. am-amotion-city
                29.03.2017 17:42
                +2

                Тут тонкий момент есть. Мне кажется, главное, — чтобы программист чувствовал себя комфортно. А для этого надобно всякую новую хипстоту щупать, какую-нибудь свою личную библиотеку ковырять понемногу, туда-сюда. Все время рефакторить рабочий код — полезно для бизнеса только на короткой дистанции. Потом программисты имеют свойство перегорать. Я и сам такой.


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


                И отдача в остальное время внезапно растет, по сравнению с «дома порефакторим».


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


                1. VolCh
                  29.03.2017 17:48

                  Ну как раз хипстоту и пробуем на рабочих задачах (не критических), а потом дома рефакторинг на что-то проверенное или новую хипстоту делаю, если первая хипстота себя не проявила :)


                  1. am-amotion-city
                    29.03.2017 19:50

                    Ну так это ведь и есть пет проджект :)


                    1. VolCh
                      30.03.2017 08:39
                      +1

                      Но покрытый NDA


                      1. am-amotion-city
                        30.03.2017 09:43

                        Прямо весь? Вы там ядерный космодром, что ли, кодируете?


                        Прям вот ни одного плагинчика к хипстоте, ни единого пулл реквеста в транк хипстоты, ни примера, ни пробного todo/blog на хипстоте? Ни одной завалящей статейки по мотивам «пробовали тут на раёне хипстоту»? Все прямо без разбору под NDA?


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


                        1. Germanets
                          30.03.2017 09:52
                          +1

                          «Всегда есть легко открываемые куски, которые принято оформлять обособленно и выкладывать людям на потеху.» — это вы сейчас с точки зрения своего работодателя говорите, который вам дал задачу на открывание части кода? Тогда хотелось бы услышать его мотивацию — что это даёт для бизнеса?
                          Очень похоже на самодеятельность сотрудника, который на работе же занимается не тем, что было поручено, а кучей сопутствующей деятельности, которая фирме ничего не принесёт…


                          1. am-amotion-city
                            30.03.2017 10:57
                            -1

                            вы сейчас с точки зрения своего работодателя говорите, который вам дал задачу на открывание части кода?

                            Я себе задачи ставлю сам. И да, мне удалось убедить работодателя в том, что это необходимо.


                            тогда хотелось бы услышать его мотивацию — что это даёт для бизнеса?

                            Это для бизнеса дает имидж компании. Возможность позвать на работу лучших в городе. К нам хотят идти работать, и джуниоры, и профессионалы. Очень не в последнюю очередь — именно поэтому. Да и на конференции надо с чем-то ездить.


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


                            очень похоже на самодеятельность сотрудника

                            Мы, как-нибудь, тут сами разберемся, на что это похоже. Чем строить несуразные предположения, идите лучше, займитесь чем поручено.


                            1. VolCh
                              30.03.2017 18:23

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

                              Разные политики безопасности приняты.


                              1. am-amotion-city
                                30.03.2017 19:46

                                Слушайте, ну по какой политике мой пулл реквест в транк эликсира может подпасть под NDA?! Или библиотека, которая просто csv пережевывает?


                                1. Lofer
                                  30.03.2017 20:08
                                  +1

                                  Слушайте, ну по какой политике мой пулл реквест в транк эликсира может подпасть под NDA?! Или библиотека, которая просто csv пережевывает?

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

                                  Вы сделали это находясь на рабочем месте, используя инфраструктуру работодателя, находясь с ним в трудовых отношениях и получая за это зарплату.
                                  Значит все, что вы сделали в этот момент может быть в рамках находящихся под NDA c Работодателем или Клиентом-Работодателем, а повторно используемые куски кода автоматические провоцируют правовые коллизии.

                                  Например: вы выложили свой кусок кода на публичный ресурс, одновременно используя его в каком-то Продукте1. После ваш «публичный» кусок кода к себе вставил Некто, в Продукт2. Некто находит аналогичный кусок кода в Продукте1 и подает в суд на вашего Клиента, а Клиент выставляет претензии вашему Работодателю, как «укравшему код».
                                  Объясняться вы будете ооочень долго.
                                  Прецеденты? К примеру Rambus со стандартами памяти которые делали все, но запатентовала первая Rambus.


                                  1. am-amotion-city
                                    31.03.2017 06:49

                                    А вы можете даже и не знать об этом.

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


                                    Например: вы выложили свой кусок кода на публичный ресурс

                                    Объясняться вы будете ооочень долго.

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


                                1. VolCh
                                  31.03.2017 09:25

                                  По простой: все разработки в рамках служебных заданий являются объектом исключительных прав работодателя (его заказчика) и составляют коммерческую тайну.


                                  1. ukt
                                    31.03.2017 22:55

                                    Все верно, нужна бумажка, что именно это служебное задание, а не всё подряд. Разумеется, копию служебной записки — себе сделать, во избежание.


                                    1. VolCh
                                      01.04.2017 12:34

                                      В договоре вполне может быть фраза типа "всё что разработано работником в помещении фирмы и(или) с использованием её оборудования и(или) каналов связи считается разработанным по служебному заданию, если нет дополнительного соглашения об обратном"


                                      1. ukt
                                        02.04.2017 08:50

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


                        1. VolCh
                          30.03.2017 09:53

                          Хуже, с деньгами работаем :)


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


            1. Lofer
              29.03.2017 17:24
              +2

              То есть вам нужен интроверт, возможно нарцисс, желательно с не очень обширными социальными навыками общения, который компесирует это сосредоточеностью в программировании и при этом должен разделять ваши «ценности»? Ну да… практически идеальный объект для манипуляций :)
              Знакомые «личности» :)


            1. Germanets
              30.03.2017 09:44
              +1

              Вот какраз таки программисты, которые на работе пишут что-то, что им не нравится, а только дома доходят до «just for fun» — вот это очень подозрительные товарищи… Как можно нормально работать, если на работе этого самого фана и челленджей нет?
              Может быть такому человеку стоит сменить работу, чтобы работа была «for fun» и приносила не только деньги, но и удовольствие?
              Весь код, который я сейчас пишу — это код за деньги, и этот код, как и сами проекты мне нравится, я в нём вполне себе реализуюсь как программист на мой взгляд. А после работы у меня есть ещё пару-тройку часов на другие увлечения — попытки улучшить свою физическую форму(чтобы внезапно через несколько лет не получить проблемы со здоровьем, которые на той же работе скажутся), переключения на другую деятельность — книги, фильмы, банальные посиделки с друзьями(часть из которых — с коллегами)…


              1. ukt
                31.03.2017 23:01

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


                1. kloppspb
                  31.03.2017 23:12

                  Это уже какие-то маргинальные случаи мазохизма — работать в подобных местах.


            1. Bringoff
              30.03.2017 15:16

              Мне лично такое убожество, как программист, работающий только за деньги, — за соседним столом не требуется

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


              1. am-amotion-city
                30.03.2017 16:36
                -2

                презирающим аутсорс и людей, предпочитающих оставлять работу на работе

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


                предупреждайте на собеседовании

                Мы еще до собеседования изучаем те самые pet projects соискателей, так что не волнуйтесь.


                1. Bringoff
                  30.03.2017 18:26
                  +2

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


            1. edogs
              31.03.2017 15:58
              +3

              Я в последнее время убедился: нет кода just for fun? — До свиданья, иди вон в аутсорс на повременку. Мне лично такое убожество, как программист, работающий только за деньги, — за соседним столом не требуется.
              Э, мы правильно Вас поняли?
              Аутсорс на повременке это убожество, так? Вы же считаете что убожествам места только там.
              На работе надо непременно страдать, так? Вы же считаете, что for fun можно делать только код не за деньги, а раз на работе его делать нельзя — значит на работе надо страдать.
              Вне работы надо иметь в качестве хобби то же занятие, которым занимаешься на работе, так? Вы же считаете, что код «for fun» все-таки должен быть, а откуда он возьмется, если на работе — за деньги — его писать нельзя?

              Работаем на фрилансе, на аутсорсе. 20 лет уже почти.
              Выбираем только интересные нам проекты, неинтересные не берем.
              В результате у нас весь код «for fun», но в то же время весь код «за деньги».
              От невозможности вследствие этого присесть за соседний с Вами стол не страдаем:)


              1. am-amotion-city
                31.03.2017 16:55
                -2

                Не страдайте молча, пожалуйста. Спасибо.


              1. CTpaHHoe
                02.04.2017 00:11

                В результате у нас весь код «for fun», но в то же время весь код «за деньги».

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


        1. d-stream
          29.03.2017 09:44

          До многодневного задания мы не доходили. Первая «капча», потом вживую или по инету голосовое общение, потом облегченное погружение и собственно уже оплачиваемая притирка — несложные задачки. Ну и в процессе решения этих задачек — либо взаимообогащение/притирание, либо все-таки расставание.


          1. corr256
            29.03.2017 14:18

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

            Человек или нужен, или начинаются заморочки как в данной конторе. Сразу понятно, что вакансия «открыта для галочки» и тот, кто проводит интервью создаёт видимость усердной работы и показывает свою незаменимость на занимаемой должности.


            1. d-stream
              29.03.2017 14:26

              спасибо за мнение, оно очень важно для нас -)


              1. corr256
                31.03.2017 21:56

                как и ваше нам


        1. Vjatcheslav3345
          30.03.2017 08:41

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

          Уж не сюда трудоустраивались?


      1. rfvnhy
        29.03.2017 19:08

        Если не секрет — нормальное время выполнения вашего задания больше одного часа?


        1. d-stream
          29.03.2017 19:18

          Скорее в пределах часа, если у человека все развернуто и он «только что делал что-то подобное».


      1. Gradiens
        30.03.2017 19:52

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


        1. d-stream
          30.03.2017 23:02

          Ну сложно сказать. Если соискатель решил, что написать пяток 2-3 строчных sql запросов — это долго — то точно ему это не надо, ибо таковых и посложнее в реальной работе ему бы пришлось писать гораздо больше.

          Притом для Москвы 1 час сидя в мягком кресле не так чтобы соизмерялось с например часиком езды на общественном транспорте для очного собеседования и потом часиком обратно -)


    1. rfvnhy
      29.03.2017 14:17

      >При этом меня интересует в основном ход мысли и особенности реализации — этого вполне достаточно.

      Так небось еще и в офисе это всё происходит. Или в скайп(видео)-конференции.
      Когда можно пообщаться с кандидатом во время решения. Или он может задать уточняющие вопросы во время выполнения…
      Ну и такие задания обычно требуют 1-2 часа времени МАКСИМУМ.

      Еще вполне нормально если одно и то же задание одновременно дается нескольким кандидатам в присутствии других. А дальше можно и приватное собеседование.
      Когда «сдадут контрольную работу».


  1. Fen1kz
    28.03.2017 19:32

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


  1. HellMaster_HaiL
    28.03.2017 19:34
    +10

    Вы меня конечно извините, но сами технические задания, приведенные Вами, совсем совсем не похожи на тестовые. От слов «абсолютно» и «совсем». Извини меня второй раз, но нужно быть сильно наивным, чтобы выполнить подобное и надеяться на удачное трудоустройство.
    Я может покажусь резким, но тестовое задание должно быть максимально абстрактным или максимально простым (если идет поиск джуниора).
    Вот пример крайних двух тестовых заданий, которые лично я ыполнял:

    1. Написать небольшой плагин для PowerPoint'a, который добавляет кнопочку в бар, по нажатию на которую добавляет в документ условно красный квадрат. Задание было направлено только на то, чтобы узнать, на сколько быстро кандидат может разобраться в апи, не имея в нём опыта.

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

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


    1. singlevolk
      28.03.2017 19:36
      +1

      ну я эти задания не предумал, это реальные задачи :) поэтому и задал вопрос в сообществе…


      1. d-stream
        29.03.2017 09:45
        +1

        Видимо это все-таки попытка получить первый код бесплатно… в общем характеризует заказчика не с лучшей стороны -)


  1. edogs
    28.03.2017 19:56
    +6

    Нет единственно правильного ответа в опросе — зависит от задания.

    Мы когда на фрилансе искали себе в команду прогеров, смотрели даже топов, но пару раз нагревшись написали несложное тестовое задание и стали скидывать.

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

    Итог — 50% отсеялось на этапе «часовое объяснение почему они не будут это делать», при чем с попыткой убедить «взять так».
    Из оставшихся — 80% отсеялось по причине «откровенных косяков», при чем в ответ на предъяву было заявлено «ну это же тест, чего я буду напрягаться, а вот в работе я монстр».
    Из оставшихся — только у 10% было все сделано грамотно, у остальных были или некритичные неточности (но все же неточности) или просто не то совсем то что ожидалось (надо было уточнять перед выполнением).

    Реально — не увидев решения тестового задания, не увидишь чего можно ожидать. А внезапности бывают очень атипичные. Как принимать решение без этого? И наоборот — если нас наняли после тестового задания — значит человек видел как мы работаем и его устроило, и потом не будет предъяв вида «я ожидал одного, а вы делаете другое — уволены».

    Написание задания заняло у нас часа 3 и сэкономило нам неделю минимум.
    Наша имха — если у нанимателя нет тестового задания, то ему чертовски хочется поговорить, а не нанять подходящего кандидата:)


    1. singlevolk
      28.03.2017 20:03

      Согласен, немного в опросе не додумал. Но, как кто не сталкивался с задачей на 20 минут. Все в основном законченные модули. Может мне просто не везет. Да я и не против выполнить задание. Но не бесплатную работу. Хотя, еще раз повторюсь, для адекватного работодателя вполне должно хватать исходников из рабочих проектов. Базу можно увидеть. Как оформляет код, как выстраивает логику. Этого по идее должно хватать. Плюс опыт в резюме.


      1. edogs
        28.03.2017 20:09
        +1

        для адекватного работодателя вполне должно хватать исходников из рабочих проектов.
        Рабочих — каких? С предыдущей работы? Так они как правило под nda.
        Опенсорс с гитхабом? Не показатель, т.к. «выставочный проект» и «реальная работа» разные вещи.

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


        1. Razaz
          28.03.2017 20:25
          +1

          Выставочный проект это как? Если смог что-то годное сделать — молодец.
          Если в работе фигню делает — то для этого есть испытательный срок.
          Гитхаб это не только репо с кодом, а коммиты в другие проекты, обсуждения и тд.


          1. edogs
            28.03.2017 20:35

            Выставочный проект это как? Если смог что-то годное сделать — молодец.
            Молодец. Но не факт что пригоден к работе. Это огромная разница — делать для выставки штучный товар и гнать массовое производство.

            Если в работе фигню делает — то для этого есть испытательный срок.
            Или тестовое задание:) Оно конечно испытательный срок не отменяет, но часть кандидатов срезавшихся уже на нем сэкономят и себе время/нервы и компании время/деньги.

            Гитхаб это не только репо с кодом, а коммиты в другие проекты, обсуждения и тд.
            Коммиты — это репо с кодом. А обсуждения — это уже социалка, иногда важна, но все же не о том.


            1. Razaz
              28.03.2017 20:48
              +1

              У вас все проекты — выставочные на Гитхабе? Если человек поддерживает проект — тоесть постоянно уделяет ему время, то для меня это важнее того, как он там кнопочку где-то нарисует.

              Коммиты могут быть в другие репозитории. Обсуждения могут касаться тех или иных архитектурных/технических решений. Это очень помогает понять человека. Социалка очень важна, так как чудиков, которые варятся сами в себе, а потом истерят на code review уж точно не надо :)


              1. edogs
                28.03.2017 20:52

                У вас все проекты — выставочные на Гитхабе?
                Нет, рабочие под nda:)

                Социалка очень важна
                Это бесспорно, но все же гитхаб как социалка. Вроде покрупнее есть.


                1. Razaz
                  28.03.2017 21:10
                  +1

                  Что-то не припомню покрупнее.


                  1. edogs
                    28.03.2017 21:49

                    мы же про социалку? фейсбук… фконтакт. Вот уж где люди раскрываются.


                    1. Razaz
                      29.03.2017 18:05

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


                      1. edogs
                        31.03.2017 15:47

                        Это не сарказм, это продолжение мысли о том, что для github-а делаются «выставочные» проекты.
                        Образ там тоже «выставочный» создается, по тем же причинам, особенно с тех пор как его как часть резюме стали расценивать и мониторить.
                        В итоге на гитхабе Вы видите какие проекты человек в принципе может создавать когда ему надо создать имидж и как себя может вести если ему нужно поддерживать имидж… но на работе ему этот имидж на фиг не сдался, поэтому с практической точки зрения это фигня.
                        А вот в фб и вк люди ведут себя более естественным образом


                        1. Areso
                          02.04.2017 12:12

                          А в фб и вк люди с каких пор стали выкладывать более естественный код и проекты?)


                        1. am-amotion-city
                          02.04.2017 12:17

                          для github-а делаются «выставочные» проекты

                          Для гитхаба проекты не делаются. Проекты делаются для того, чтобы решить задачу. Образ тем самым создается абсолютно верный: вот у человека 50 проектов, плюс форки. Часть — наколеночные поделки, часть — что-то более-менее серьезное. По форкам можно понять, чем человек интересуется. По самим проектам — видно вообще все.


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


                        1. KvanTTT
                          03.04.2017 01:33

                          Это не сарказм, это продолжение мысли о том, что для github-а делаются «выставочные» проекты.

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


          1. kloppspb
            29.03.2017 02:29

            Гитхаб может на иметь вообще ничего общего с тематикой и направлением на новой работе. У меня, например :) И тем более в проектах для себя совсем другая динамика разработки. А уж ковыряться в ваших коммитах в чужие проекты точно никто не будет.

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

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


        1. singlevolk
          28.03.2017 20:38
          -3

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

          Задача на 20 минут, абстрактная — это нормальная тестовая задача, по которым даже и вопросов не возникло бы. А тут в течении месяца 5 «тестовых», полноценных модуля.


          1. edogs
            28.03.2017 20:42
            +2

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


            1. singlevolk
              28.03.2017 20:49

              ну не говрите глупостей. забрать не по феншую. Это как у маляра содрать краску. Но вот право на исходники — на Вашу интелектуальную собственность — у Вас сохраняется. Почитайте законы.Если конечно в приложении договора не было прописано другое.
              Да и проблема что ли — поменять названия классов.
              А платили мне за работу — тоесть за то что у них работает ПО, согласно требованиям. По как что, к сожалению, за растраченную инетелектуальность, за мозги у нас не готовы платить. За физический труд запросто, за вредность производства — пожалуйста. А вот за мозги фиг.
              Как говорил мой прошлый начальник — это вы, программисты, специально придумали. Чтоб вам платили, а вы фигней страдали.


              1. edogs
                28.03.2017 20:58
                +3

                Но вот право на исходники — на Вашу интелектуальную собственность — у Вас сохраняется. Почитайте законы.
                Вот Вы и почитайте.
                Нам даже дискутировать лениво, для нас эти споры 10 лет назад уже отгремели, при том что первый раз нам по башке за неправильное толкование (как у Вас сейчас) еще 20 лет назад прилетело:)

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

                А платили мне за работу — тоесть за то что у них работает ПО, согласно требованиям.
                Не-а. Наемному работнику на зарплате оплачивают его время, а не результат работы. Этим отличается работа по найму от предпринимательской деятельности, об этом даже налоговая знает.
                Ознакомьтесь так же с понятием служебного произведения.


                1. singlevolk
                  28.03.2017 21:09
                  -2

                  По времени — согласен. Почему то многие работодатели за время платят, а не за результат. Не логично.

                  ДА не важно по авторскому, я как то раньше про это читал, изучал. Понял одно — если я написал модуль (не программу, а исходники) — это мое. И фиг кто докажет — что не так. Муторно и не рентабельно. У меня куча универсальных библиотек моей разработки. И не один работодатель не сможет мне предъявить всякие nda. Я раньше предъявлю — скажу разработал раньше, использовал для ускорения разработки с согласия работодателя(я им всегда предлагаю использовать мои наработки). Так что в случае разборок — кто кому еще должен будет вопрос.

                  Да и еще раз повторюсь — поменял название класса — все, в пролете.

                  а заминусовали зря. спросите у любого адвоката.


                  1. edogs
                    28.03.2017 21:53
                    +3

                    По времени — согласен. Почему то многие работодатели за время платят, а не за результат. Не логично.
                    Хотите за результат — работайте как ИП или ООО. Хотите получать стабильную зарплату — будете получать ее за время.

                    Понял одно — если я написал модуль (не программу, а исходники) — это мое. И фиг кто докажет — что не так. Муторно и не рентабельно
                    Позиция шантажиста. Незаконная, при чем Вы сами это понимаете, потому что аргументом у Вас не «не законно», а «муторно и не рентабельно».

                    а заминусовали зря. спросите у любого адвоката.
                    Мы не минусовали. До этого момента. Но раз уж Вы нас в этом обвинили — придется соответствовать:) Правда профиль не будем, только коммент.
                    А у адвоката спрашивали, еще 20 лет назад и с тех пор вопрос изучен вдоль и поперек. Так что ответственно заявляем — Вы несете опасную и незаконную чепуху.


                    1. singlevolk
                      28.03.2017 22:15
                      -1

                      Мы — надеюсь не один человек с аккаунта пишет.
                      программа для ЭВМ охраняется авторским правом как литературное произведение (п.1 ст. 1259, ст. 1261 ГК РФ).
                      Вопрос как это доказать. Не работодатель не работник адекватно это не сможет доказать. Хотя если у Вас как у работника есть опубликованное это решение — то работодатель в пролете. Само собой раньше чем Вы поступили на работу к этому работодателю. Публикация — в вк или в облаке архив(этого достаточно)

                      Выполнение работы, например, по договору авторского заказа (ст. 1288, ст. 1296 ГК РФ), и передача произведения на материальном носителе не обязательно влечет отчуждение или предоставление прав на созданное произведение.

                      Автором результата творческой деятельности может быть только физическое лицо (п. 3 ст. 1228 ГК РФ).

                      Закон и судебная практика требуют, чтобы работодатель кроме зарплаты также платил авторское вознаграждение за передачу прав (п. 26 Постановления Пленума ВС РФ № 15 от 19.06.2006).

                      Зарплата – это плата за выполнение трудовой функции, а за творчество работник получает отдельные деньги.

                      Ну как то так.


                      1. edogs
                        28.03.2017 22:25
                        +1

                        Пытаетесь втянуть в дискуссию?
                        Вы делаете типичную подмену понятий.
                        Авторское право? да, охраняется, да, принадлежит, и че? А ничего.
                        Еще раз повторим — авторское право это право не более чем называться автором произведения и соответственно что бы никто себя автором этого произведения не называл.
                        Авторское право не подразумевает никаких имущественных прав на произведение, как-то распространение, продажа, демонстрация и так далее.

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

                        p.s.: ну лол же, по Вашей логике работник битрикса уходит из конторы и забирает с собой битрикс, контора в пролете, ага.


                        1. singlevolk
                          28.03.2017 22:34

                          с дискуссией — а почему бы и нет? приятно пообщаться с умными людьми. Есть шанс узнать что то новое.
                          Я не про уход вообще говорил, а про то, что я могу использовать свои исходники повторно, в других проектах.


                          1. edogs
                            28.03.2017 22:39
                            +2

                            с дискуссией — а почему бы и нет?
                            Потому что достаточно посмотреть определение «авторского права» и «служебного произведения» как «дискуссия» сойдет на нет.
                            А Вы вцепились в том, что авторское право неотъемлимо и считаете что оно дает право вообще что угодно делать.

                            Я не про уход вообще говорил, а про то, что я могу использовать свои исходники повторно, в других проектах.
                            Нет.
                            Права пользования авторское право не дает (даже демонстрация на собеседовании это использование) и уж тем более право перепродажи (использование в других проектах фактически оно и есть), только право называться автором, т.е. сослаться на то, что «вон тот проект делал я». Всё. Это всё что дает авторское право. Но оно неотьемлимо, да.

                            кстати, ниже mrsantak Вам это же толкует, прислушайтесь.


                            1. singlevolk
                              28.03.2017 22:48
                              -1

                              1. ukt
                                29.03.2017 21:12
                                +3

                                Есть такая статья: 1295 ГК РФ:

                                Содержание статьи
                                1. Авторские права на произведение науки, литературы или искусства, созданное в пределах установленных для работника (автора) трудовых обязанностей (служебное произведение), принадлежат автору.
                                "«2. Исключительное право на служебное произведение принадлежит работодателю, если трудовым или гражданско-правовым договором между работодателем и автором не предусмотрено иное.
                                (в ред. Федерального закона от 12.03.2014 N 35-ФЗ)
                                (см. текст в предыдущей „редакции“)
                                »«Если работодатель в течение трех лет со дня, когда служебное произведение было предоставлено в его распоряжение, не начнет использование этого произведения, не передаст исключительное право на него другому лицу или не сообщит автору о сохранении произведения в тайне, исключительное право на служебное произведение возвращается автору.
                                (в ред. Федерального закона от 12.03.2014 N 35-ФЗ)
                                (см. текст в предыдущей „редакции“)
                                »«Если работодатель в срок, предусмотренный в абзаце втором настоящего пункта, начнет использование служебного произведения или передаст исключительное право другому лицу, автор имеет право на вознаграждение. Автор приобретает указанное право на вознаграждение и в случае, когда работодатель принял решение о сохранении служебного произведения в тайне и по этой причине не начал использование этого произведения в указанный срок. Размер вознаграждения, условия и порядок его выплаты работодателем определяются договором между ним и работником, а в случае спора — судом.
                                Право на вознаграждение за служебное произведение неотчуждаемо и не переходит по наследству, однако права автора по договору, заключенному им с работодателем, и не полученные автором доходы переходят к наследникам.
                                (абзац введен Федеральным законом от 12.03.2014 N 35-ФЗ)
                                3. В случае, если в соответствии с пунктом 2 настоящей статьи исключительное право на служебное произведение принадлежит автору, работодатель имеет право использования соответствующего служебного произведения на условиях простой (неисключительной) лицензии с выплатой правообладателю вознаграждения. Пределы использования служебного произведения, размер, условия и порядок выплаты вознаграждения определяются договором между работодателем и автором, а в случае спора — судом.
                                (п. 3 в ред. Федерального закона от 12.03.2014 N 35-ФЗ)
                                (см. текст в предыдущей „редакции“)
                                4. Работодатель может обнародовать служебное произведение, если договором между ним и автором не предусмотрено иное, а также указывать при использовании служебного произведения свое имя или наименование либо требовать такого указания.
                                (п. 4 введен Федеральным законом от 12.03.2014 N 35-ФЗ)


                  1. mrsantak
                    28.03.2017 22:17
                    +1

                    По времени — согласен. Почему то многие работодатели за время платят, а не за результат. Не логично.
                    Чтобы платить за результат нужно на момент заключения трудового договора работодателю иметь четкое понимание всего объема работ, и формализованные критерии приемки/передачи, а работнику нужно со всем этим ознакомиться и решить для себя нужно ли оно ему. И так по каждому проекту/задаче. Проще иметь сотрудника в штате и платить ему за время.

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


                    1. singlevolk
                      28.03.2017 22:21
                      -1

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


                      1. mrsantak
                        28.03.2017 22:35
                        +2

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

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

                        Тут всё очень похоже с взаимодействием писатель/издатель — автор книги может называться автором, но продавать свои книги он не может (т.к. передал это право издателю).


                        1. singlevolk
                          28.03.2017 22:41
                          -1

                          • Не может. Авторское право — только право зваться автором кода
                            то есть есть конкретная статья запрещающая автору использовать свои наработки?
                            фактически если я один раз написал блок работы с сокетами — я не имею права больше с ними работать?

                          -Тут всё очень похоже с взаимодействием писатель/издатель — автор книги может называться автором, но продавать свои книги он не может


                          и по Вашей логике — он не может использовать сюжет, персонажей в следующей книге?


                          1. mrsantak
                            28.03.2017 22:49
                            +1

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

                            и по Вашей логике — он не может использовать сюжет, персонажей в следующей книге?
                            Если он передал права на персонажей, то не может.

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


                            1. singlevolk
                              28.03.2017 22:54
                              -1

                              постом выше я как раз и писал:


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

                              а вот по логике — это мое авторское право.


                              1. edogs
                                28.03.2017 23:00

                                1) Вы так и не удосужились заглянуть в закон? Ок.

                                Исключительное право на служебное произведение принадлежит работодателю, если трудовым или гражданско-правовым договором между работодателем и автором не предусмотрено иное.
                                (в ред. Федерального закона от 12.03.2014 N 35-ФЗ)


                                2) В судах не идиоты сидят и на этот случай есть экспертиза и «похожесть до степени смешения». Проиграете не только права на произведение, но и за попытку мошенничества могут статью повесить. Класса название достаточно изменить, лол.


                                1. singlevolk
                                  28.03.2017 23:02

                                  Вот лол

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


                                1. singlevolk
                                  28.03.2017 23:05

                                  Права программиста и правообладателя.

                                  Автор программы обладает следующими правами:

                                  1. “личные” права:

                                  имеет право считаться автором программы;
                                  имеет право указывать различные вариации имени в программе: свое имя, условный псевдоним или анонимно;
                                  имеет право на неприкосновенность и целостность программы и ее названия.
                                  2. “имущественные” права:

                                  выпуск в свет программы для ЭВМ;
                                  воспроизведение программы или ее части;
                                  распространение программного продукта;
                                  модификация программы, перевод программы на иностранный язык;
                                  любое иное вмешательство и использование программы.
                                  “Имущественные” права могут быть переданы другим лицам на основании договора. Такой договор заключается только в письменной форме и должен содержать следующие позиции, иначе он будет считается недействительным: объем и способы использования программного продукта, выплата и размер вознаграждения, порядок оплаты, срок действия данного договора.

                                  Спорные моменты имущественных прав.

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


                              1. mrsantak
                                28.03.2017 23:09
                                +1

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


                                1. singlevolk
                                  28.03.2017 23:16

                                  — В трудовом договоре обычно это как раз оговаривается.
                                  Не правда. Читайте договор. Там совсем другое пишут.

                                  -Вполне возможно, проводится экспертиза
                                  А кто производит экспертизу и им это надо?

                                  З.Ы. Я так понимаю, Вы говорите с точки зрения работодателя. Я уверен, что Вы не будете заморачиваться, так как выигрыш дела минимален, профит нулевой, в случае проигрыша Вы теряете все.
                                  Если у Вас есть знакомые юристы — дайте почитать им переписку. Не надейтесь на работников, лучше чтоб это был независимый эксперт.
                                  Послушайте, что они скажут.


                                  1. mrsantak
                                    28.03.2017 23:28
                                    +2

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

                                    Экспертизу назначает суд. По желанию истцы могут провести независимую экспертизу.

                                    Я говорю с позиции безработного, в данный момент, человека :) Ну и плюс, я наблюдал подобного рода разбирательства из первых рядов. Там правда речь шла не про РФ, но в ходе тех событий я заинтересовался с тем «как оно у нас». Насчёт юристов — у меня нет знакомых специализирующихся в авторском праве.


                                    1. singlevolk
                                      28.03.2017 23:36
                                      +1

                                      ну по моему опыту в РФ даже подымать такую бучу не будут. Слишком им программист насрать может. Гораздо больше чем получат.


                                      1. mrsantak
                                        28.03.2017 23:45
                                        +1

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

                                        А что такого программист сделать компании сможет?


                                  1. edogs
                                    28.03.2017 23:35
                                    +1

                                    то что я и говорил — доказать не тот не другой не могут.
                                    А еще можно работодателя или программиста убить и тоже не факт что кто-то что-то докажет. И что? К чему это в дискуссии?

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

                                    Вот представьте, Вы наняли технолога разработать новый сорт пива, 3 года ему платили, он в конце концов что-то сделал, потом уволился и стал по этому рецепту сам пиво выпускать. Потому что «ну авторские права же». Вы реально считаете что это нормальная ситуация? По закону-то не нормальная, это понятно… мы Вас про логику спрашиваем.

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

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


                                    1. singlevolk
                                      28.03.2017 23:44

                                      Вы не много перевираете —
                                      1. Я пытался сказать, что свои классы, равноценно как умение и знание я имею право применять на другой работе — иначе и быть не может.(вдумайтесь)
                                      2. По поводу технолога пива — по вашей логике он не имеет право разрабатывать сорта пива вообще, так как получил знания и опыт на предыдущей работе.
                                      3. не путайте сорт пива и ингридиенты. Если технолог придумал новую добавку к пиву, и по договору она не отходит в собственность предыдущей работы, то на следующей работе он может ее использовать. А самым лучшим для него выходом — было бы ее запатентовать, а с тех работ брать патентный сбор.
                                      4. Я не парюсь насчет лизоблюдства к работадателю, я им даю то за что мне платят. Во всемирный заговор не верю. Отношения плати-сделаю — считаю честными и справедливыми. В рабство не продаюсь.


                                      1. mrsantak
                                        29.03.2017 00:01

                                        Умения и знания — можете использовать где и когда угодно (в РФ пункт о неконкуренции в трудовом договоре будет признан ничтожным). А вот классы уже не можете — они принадлежат работодателю. Исключением может быть разве что ситуация, когда вы их наизусть помните.

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


                                        1. singlevolk
                                          29.03.2017 00:09

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


                                          1. ggrnd0
                                            29.03.2017 00:14

                                            Если один-в-один или с незначительными изменениями — ты в пролете.

                                            Либо не копируй, либо старайся сделать непохожим, либо старайся не спалиться=)


                                            1. singlevolk
                                              29.03.2017 00:21

                                              эм. Ну во первых — спалиться трудно, во вторых.Да ладно. Спор не о чем. Уже скучно. Я 16 лет использую свои обьекты классы в различных проектах. Постоянно пополняю и использую от с\с++ до с#… не разу проблем не было, и уверен не будет.


                                              1. ggrnd0
                                                29.03.2017 00:25

                                                Либо их реализация элементарна, либо является общепринятым решением отсутствующим в stl, либо компаниям просто некогда, они заняты зарабатыванием денег и гнаться за какими-то там классами когда проект горит…

                                                Еще 4 вариант: анонимный опенсорс. Почти как анонимный Санта.

                                                Так я ответил.
                                                > Если один-в-один или с незначительными изменениями

                                                суд признает копипаст. Вопрос только в том будет ли компания заморачиваться. В США наверняка на тебя нашелся бы отдельный патентный троль=)


                                                1. singlevolk
                                                  29.03.2017 00:36

                                                  мы не в США, иначе были бы другие разговоры, про те же тестовые задания


                                          1. rfvnhy
                                            29.03.2017 19:46

                                            В суде предложат повторить. Причем на другом примере. Вы же говорите что у вас идеальная память на код?

                                            Опять же какие-то небольшие блоки типа классических решений или когда решать по другому просто не получится без лишнего усложнения — могут совпадать.
                                            Небольшие блоки, а не код 1 в 1 (например с менее чем 20-30% отличий).


                                      1. rfvnhy
                                        29.03.2017 19:44

                                        >1. Я пытался сказать, что свои классы, равноценно как умение и знание я имею право применять на другой работе — иначе и быть не может.(вдумайтесь)

                                        Свои знания/умения, но не копипасту старого кода, исключительные права на который вы, согласно договора(если он не предусматривал иного), передали компании, в которой работали.
                                        т.е. заново вы ту же задачу можете решить, но скопипастить своё же старое решение права не имеете.

                                        2. про рецепт пива — имеется ввиду что точно такой же или с небольшими отличиями — права не имеет.
                                        А вот если что-то другое придумает — то можно.
                                        Правда в некоторых конторах на западе сейчас могут потребовать что бы вы в течении 3-5-10 лет в этой же области вообще не работали. Правда обычно за такой пункт в договоре есть соответствующая надбавка к з/п…

                                        3. если в договоре это было прописано — да сколько угодно.
                                        А по законодательству у нас — все патенты передаются компании, в которой на данный момент работаете.
                                        Вспомните наконец историю тетриса уже!!!
                                        классика же!!!
                                        4. Почитайте уже свои договора. Если они стандартные, то вы кроме как авторство ничего не получаете от своих кодов. Все имущественные и исключительные права переходят к компании, где вы работаете.
                                        Даже если что-то изобретаете в свободное время — там то же очень много нюансов…


                                        1. singlevolk
                                          29.03.2017 19:54

                                          Хорошо, давайте тогда посмотрим на это отстранено.
                                          Ситуация — Россия, некий программист отработал на предприятии Н количество времени и написал им сайт, после этого он ушел к конкурентам и написал им тоже сайт, причем базовое ядро системы использовал из своих нароботок.
                                          Вопрос —
                                          1. будет ли первое предприятие подавать в суд?
                                          2. как оно будет доказывать что ядро конкурентов является аналогом их ядра?
                                          3. каким образом предприятие будет отмазываться от налоговой — по поводу серых зп, по поводу использования нелицензионого по?
                                          4. сколько убытков понесет первое предприятие в случае подачи в суд?


                                          1. alexeykuzmin0
                                            30.03.2017 11:30

                                            Здесь есть две сильно разные ситуации, обозначу их буквами: (а) базовое ядро системы было из своих наработок либо (б) базовое ядро системы было реализовано в рамках рабочих обязанностей у первого работодателя.
                                            Кроме того, в рассуждениях ниже я предполагаю, что «базовое ядро» — единственная общая часть кода двух сайтов. Тогда ответы на вопросы:
                                            1. Ну, у нас страна свободная, захотят — подадут, не захотят — не подадут. По закону они правы в случае (б) и не правы в случае (а).
                                            2. Попросят суд провести экспертизу. Для этого суд запросит исходный код обеих систем, покажет его эксперту и спросит «копипаст или нет?»
                                            3. А каким образом это относится к делу? И в каких таких шарашкиных конторах вы работаете, что у вас серые зарплаты и нелицензионное ПО? Любое более или менее крупное предприятие не будет отмазываться, ибо дешевле держать все в законном порядке.
                                            4. В случае (а) убытками окажутся затраты на суд (на адвокатов обеих сторон и на экспертизу, возможно, пошлины какие-нибудь) плюс немного нервов. В случае (б) тоже придется потратиться на адвоката, и, наверное, на экспертизу, но эти расходы будут покрыты проигравшей стороной (т.е. разработчиком, который стырил код). Плюс в этом случае будет возмещение убытков от разработчика или его компании, которое легко может оказаться семи-восьмизначной суммой.

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


                                    1. arielf
                                      29.03.2017 01:53

                                      Вопрос не в 'нормальности' или ваших 'понятиях', а в законе и возможностях его исполнения. Нет договора на передачу прав на код, не подписан NDA — проблемы компании. Никакого обмана и нарушения закона. Но даже если вы подписали: вы всего лишь передали кусок кода. Никто не запретит вам использовать архитектурные решения, или переписать его на другом языке. Это будет уже другая программа. Более того, даже если вы просто взяли целую библиотеку из прошлой работы, как ваш бывший работодатель докажет её использование? Исходники же закрыты.


                                    1. maniacscientist
                                      29.03.2017 12:24

                                      название класса в битриксе поменять — оно конечно влетаемо. А вот если взять код, которому далеко до совершенства — там другая песня. Один фиг через пяток рефакторингов будет неузнаваем, главное не мешать развиваться синдрому NIH


                  1. rfvnhy
                    29.03.2017 19:31
                    +1

                    >Муторно и не рентабельно. У меня куча универсальных библиотек моей разработки.
                    Вы их «принесли с собой», когда нанимались?
                    Или в рабочее время делали?
                    Если второе — права передаются фирме-нанимателю в полном объеме. Только _авторство_ у нас в стране по закону передать нельзя.
                    Т.е. вашими ФИО где-то документ в недрах конторы помечен будет.

                    >Да и еще раз повторюсь — поменял название класса — все, в пролете.
                    А если ничего кроме не поменяете, то любая «антиплагиат» система поставит 90+ % совпадения и вы «попадаете».

                    Одно дело когда классические задачи с классическими решениями — их решить по другому просто неудобно (но и то не всегда можно — почитайте про патентные войны), совсем другое когда задачи редкие.
                    Если будет 2-3 решения, вполне может эксперт и даже обычное «антиплагиат» ПО сказать похожи они или нет.

                    >ДА не важно по авторскому, я как то раньше про это читал, изучал. Понял одно — если я написал модуль (не программу, а исходники) — это мое.
                    Ваше. Авторство. Но не права на использование-продажу-…
                    Их вы нанявшись в контору ей автоматически передаете.
                    Если иного не написано в договоре.
                    Почитайте уже законодательство, за последние годы не так много там менялось в этом отношении…


              1. rfvnhy
                29.03.2017 19:25
                +1

                >Но вот право на исходники — на Вашу интелектуальную собственность — у Вас сохраняется. Почитайте законы.Если конечно в приложении договора не было прописано другое.

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

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

                А вот сделать точно такую же картину уже может права не иметь (хотя именно с художником пример не очень удачный наверное и возможно я даже не очень прав). Должны быть отличия. Например не 3 лошади, а 2, не справа дом, а слева, не 10 елочек, а 8 и тд и тп

                А то вы предлагаете что инженер (изобретатель) на работе когда что-то изобрел, то уволился, пошел в другую контору и может свое изобретение использовать?
                А вот нет!
                Право на изобретенное осталось у первой фирмы! по закону!
                Только АВТОРСТВО менять права не имеют.

                Как-то так.


                1. singlevolk
                  29.03.2017 19:29

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


                  1. rfvnhy
                    29.03.2017 20:23
                    +1

                    Вам же привели уже 100500 ответов.
                    Что если решение «классическое» или «по другому переписать сложно»
                    то скорее всего вы будете тут правы.
                    Опять же вы говорите о небольшом блоке.
                    Если же речь зайдет о крупном куске кода, в котором вы грубо говоря поменяете только названия переменных — вас вполне можно обвинять по нашему законодательству, если иное не было прописано в вашем договоре с фирмой, где вы первый раз этот код разработали.

                    Другой вопрос если договор у вас не «типовой», а переписывался лично под вас — там вы могли и указать что используете свои старые наработки, которые сделали во время, когда ни на кого не работали или на которые вам принадлежат _исключительные_ права.

                    Я прошу прощения за некоторую сумбурность ответов, но суть я думаю понятна. Просто не привык я писать связно и стройно. Там где не обхожусь короткими ответами и очень надо приходится по 2-3 итерации делать для связности… ;-(


                1. singlevolk
                  29.03.2017 19:37

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


                  1. rfvnhy
                    29.03.2017 20:25
                    +2

                    Вот!
                    Вы рисуете еще одну!
                    Вы не делаете ксерокопию с первой!!!
                    А именно делаете еще одну! Заново!

                    При этом например помнится с год-два назад тут уже казус обсуждали. Что нельзя делать ч/б фото города, по которому едет красный школьный автобус… Но это «у них», у нас вроде посвободнее пока…


    1. Razaz
      28.03.2017 20:04
      +2

      Мы вот отказались от тестовых заданий. Просто пара задачек на собеседовании.
      Если у человека есть GitHub то вообще не напрягаю с такими вещами.

      Единственное тестовое задание которое мне понравилось за пару лет было не на технические знания, а на командную работу. И я всеми руками за такие задачки. Только давать их некому :D


      1. edogs
        28.03.2017 20:06

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


      1. devalone
        28.03.2017 20:08
        +2

        У меня есть гитхаб, завтра можно выходить на работу?)


        1. Razaz
          28.03.2017 20:22

          Поcле прохождения собеседования — конечно ;D


          1. devalone
            29.03.2017 00:05

            Просто ради интереса, https://github.com/DevAlone?tab=repositories на какую-нибудь должность я мог бы претендовать? Из последнего кода — test_task, который писал, чтоб попасть на одни курсы по цпп(но начал делать и отправил поздно, поэтому не прошёл).
            Если не затруднит конечно :)


            1. Razaz
              29.03.2017 18:12

              У нас ни на какую к сожалению. ASM/C++ не используются ?\_(?)_/?.


        1. Ugrum
          29.03.2017 11:59

          У меня есть гитхаб

          Вот он, истинный владелец, расшифровался.


  1. Juralis
    28.03.2017 19:58

    Как мне видится, тестовые задания в принципе дело наверное нормальное. Но зачастую имеют ряд проблем. Одно дело, когда я реально хочу именно в компанию Х, я знаю примерно условия и что меня ждёт. Другое дело, когда речь идёт о незнакомой компании. Получается, я ещё толком не знаю, хочу ли я в эту компанию, а уже должен потратить время, зачастую не малое. Знаю, что некоторые компании даже оплачивают это время. Но это ничего не меняет — всё равно ничего о компании не известно, что там происходит не понятно — как принимать решение о том, что есть смысл вообще тратить время, даже если его оплатят? Дело ведь не в деньгах, а в том, что ничего ещё не решено.
    Вообще, это наверное вопрос психологии и стиля. Если компания выставляет какие-то требования, то очевидно, что она получит тех, кто пройдут фильтр. Если компания использует тестовое задание, на которое предполагается потратить несколько часов, а то и дней, то наверное там ищут таких людей, которым это кажется нормальным и которые с этим способны справиться.
    Вопрос приёма на работу наверное никак нельзя свести к какому-то универсальному способу. Вполне допускаю, что где-то есть компания, которая ищет программистов, подсовывая им какие-нибудь головоломки или предлагая им, условно, распутать шнур от наушников. Кто-то их идиотами посчитает, а у них может быть в итогу психологическая совместимость высокая будет и они как команда будут хорошо работать. Всяко может быть


    1. rfvnhy
      29.03.2017 20:27

      >Знаю, что некоторые компании даже оплачивают это время
      Вот тут явно не кидалово, если конечно цена хоть немного адекватна. И тут вполне будет нормальным оставить вам авторство, но исключительные права забрать компании. Ведь ваше время/знания были оплачены.
      Но при этом наверняка составляется договор.


  1. saintbyte
    28.03.2017 19:59
    +3

    Помню как-то законтачил с кем-то кто предлагал мне написать такую штуку как habrproxy. Ну я just4fun написал за 2 часа, применив пару оригинальных решений. Погуглил даже код и думаю было понятно что я написал его с нуля. Мне сказали, молодец, интересно… И все ноль реакции. Через несколько недель появляется похоже оригинальная компания с тестовым habrproxy. Я им пишу и возмущаюсь какого черта не могут разродиться ответом уже которую неделю. А они мне вообще что первый раз видят это код и вообще не при делах.


    1. rfvnhy
      29.03.2017 20:32
      +1

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

      Ну или сразу выкладывать свой код куда-то, где сможете _доказать в суде_ дату создания.
      Вроде у нас будет нормальным отправить самому себе заказное письмо и не вскрывать его.
      А в случае возможных проблем — предъявить суду — дата с почтового штемпеля вполне свидетельство… Хотя я не помню откуда я этот момент узнал — где-то читал…
      А вот в данном случае будет применимо или нет — не знаю.
      Сейчас может и на гитхабе выложить, а может суд посчитает что не может дату узнать, хотя она там проставлена…
      Кто-то реально с таким сталкивался?


  1. Pahanini
    28.03.2017 20:04
    +1

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


    1. edogs
      28.03.2017 20:11
      +1

      Заодно можно понять способность человека адекватно оценивать сроки.
      И скорость его работы. По сложному проекту на гитхабе фиг поймешь сделал он его за сутки или полгода корпел.


    1. sshikov
      28.03.2017 20:25

      >Заодно можно понять способность человека адекватно оценивать сроки.

      Вот это посмотреть — и на этом же закончить )

      Даже junior должен уметь адекватно оценивать работу, которая занимает час-два. А тем более разработчик более высокой квалификации. Главное — не сообщать заранее, как вы ее оценили.


      1. rfvnhy
        29.03.2017 20:34

        А еще при грамотно составленной задаче она должна требовать уточняющих вопросов.
        Если не задал — значит плохой специалист…

        Грубо говоря задача переместить груз весом в 5 тонн на 10й этаж.
        Если кандидат не спросит наличие грузового лифта, а сразу начнет носить по лестнице… Нужен он вам такой?


        1. sshikov
          29.03.2017 21:41

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

          Нужно понять, как результат будет получен, и о чем человек в процессе забудет (или не забудет) подумать. Как он будет читать требования, что именно уточнит, а что сочтет очевидным. Как спланирует и оценит работу.


    1. yar3333
      28.03.2017 23:07

      Пробовался с год назад в 3 компании — везде давали задачи дня на 2-3 (т.к. требования по технологиям-фреймворкам были конкретные и если ты не попал в струю, то уложиться быстрее было нереально). Так что мой опыт таков, что сейчас такая практика — давать большие задачи. Ну или искать людей, которые профи ровно в заданных направлениях, а остальных — отсеивать.


      1. edogs
        28.03.2017 23:40

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


        1. yar3333
          29.03.2017 06:08

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


          1. rfvnhy
            29.03.2017 20:39

            Не всегда это хорошо. Иногда время очень немаловажный фактор.
            И 2 человека со скоростью работы «А» не заменят одного со скоростью работы «2хА».
            Ведь не всякую работу можно распаралелить…
            Хотя верно и обратное… Если удобнее делать работу вдвоем (или по ТБ положено — например один на стремянке, второй ее держит), то нанимать одного «на все руки» нет смысла.
            Тут вопрос только специфики.

            > будет 6 часов гуглить, но через пару недель — уже нет — не вижу проблемы
            это очень хорошая скорость обучения или очень простые задачи…
            А если нормальное обучение 0.5-1-2 года?
            Тут может «спасти» если таким работникам платить в соотв. кол-во раз меньше.
            Пока не доучится — сидит «стажером».
            Снова вопрос специфики. Есть работы когда надо «вот прям сейчас и быстро»…


        1. KVL01
          29.03.2017 14:44

          А я что, должен знать наизусть всю RTL, а то и, упаси б-же, какую-нить Boost? Не говоря уже о чём-то более специфичном. В языках, на которых писал лет 8 назад, я теперь и синтаксис-то не вспомню. Что не мешает мне к ним периодически возвращаться и успешно решать задачи. Да, с гуглом, с манами и, заглядывая в свои старые исходники. Зачем всё это держать в голове?
          Ничего в гугле нет плохого, если гугление действительно не занимает по 6..8 часов.
          А рубит фишку соискатель или тупо копирует нагугленное, легко определить, ведь 90% кода в интернете — говно.


          1. rfvnhy
            29.03.2017 20:41

            >В языках, на которых писал лет 8 назад, я теперь и синтаксис-то не вспомню.
            И вы указываете их в резюме и ищете работу с их использованием…
            Вот только работодатель если указывает в тестовом задании что его надо выполнить за 1 час на таком-то языке, то подразумевает что работа будет в первую очередь именно на этом языке и ему желателен работник, у которого опыт именно в этом языке… и желательно посвежее…


            1. Lofer
              31.03.2017 21:46

              я так понимаю, что IntelliSense в Visual Studio вы тоже выключаете? а чего оно «само гуглит»?


          1. edogs
            31.03.2017 15:50

            успешно решать задачи. Да, с гуглом, с манами и, заглядывая в свои старые исходники. Зачем всё это держать в голове?
            Вопрос в другом — почему при прочих равных (а ведь равные есть, мы же не об уникальной позиции говорим) работодатель должен будет выбрать Вас (гуглящего половину времени), вместо разработчика у которого это всё и так в голове (просто потому, что он писал на языке не 8 лет назад, а пишет прямо сейчас)?


            1. corr256
              31.03.2017 22:19

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


              1. edogs
                31.03.2017 22:43
                +1

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


                1. Roman_Skalov
                  01.04.2017 16:09

                  Ну да, вот представим, что, скажем, покупаете себе новую машину. И в голове есть некие желаемые характеристики — там, движок такой-то, расход такой-то, цвет, год и, скажем, японец. Не бывает же такого, что походил по салонам, и беру первую машину, которая формально подходит под эти характеристики. Нет, тут начинается субъективный фактор. Вон там дают кредит на невыгодных условиях, в другом месте мне менеджер нахамил, а в третьем вроде как и японец, но какой-то говнокомпании (с удивлением обнаруживаешь, что есть и такие) и др. Это трудно даже сформулировать.

                  Вот и с наймом то же самое.


                1. Lofer
                  01.04.2017 17:15

                  Выбор кандидата ограничен и таким параметром, как «цена поиска», а она должна быть меньше чем:

                  1. цена обучения нового кандидата
                  2. бюджет поиска нового кандидата. иначе перебирали бы 7 миллиардов
                  3. горизонт планирования


                  Если первый кандидат покрывает ваши потребности, зачем вам еще 10?


                  1. VolCh
                    02.04.2017 12:37

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


                    1. Lofer
                      02.04.2017 16:04

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

                      Эмпирические выводы, на основании практики лет за 10 — чудеса случаются крайне редко. Люди не идиоты и примерно представляют сколько «стоит» их вакансия. Получается в итоге, что сопоставимый «сервис» предоставляемый кандидатами, стоит сопоставимых денег для Клиента/Работодателя. +- х$ на зарплате кандидата съедается зарплатой Hr, Техлида и упущенной выгодой, пока искали «еще дешевше».
                      Возможно в других экономических реалиях будут другие выводы.


                      1. VolCh
                        02.04.2017 20:41

                        На основании практики лет за 20 — рядовые прикладные разработчики редко отдельно оценивают свои знания предметной области, сами рассматривая как везение ситуации как их прошлый нетехнический опыт оказывается востребованным на вакансиях вида: "Нужен программист. Обязанности: писать программы". Если не писать в вакансии что-то вроде "будет большим плюсом опыт работы в финансах/медицине/недвижимости/бухучёте/CRM/...", то зарплатные ожидания от специалистов плюс-минус равного технического уровня тоже будут плюс-минус равными.


                  1. edogs
                    07.04.2017 18:41
                    +1

                    Если первый кандидат покрывает ваши потребности, зачем вам еще 10?
                    Потому что за эту же цену есть шанс получить более хорошего кандидата. Глупо бросать поиск на первом же необходимом и достаточном.

                    цена обучения нового кандидата
                    бюджет поиска нового кандидата. иначе перебирали бы 7 миллиардов
                    горизонт планирования
                    Бюджет поиска дополнительного кандидата стремится к нулю. А вот поиск нового если старый не устроит будет дорог — заплати выходное пособие, заплати HR конторе за поиск нового, потеряй на срыве процессов, обучению и введению нового кандидата в курс дела и т.д… А доп. кандидат это просто одно доп. интервью.


                    1. Lofer
                      07.04.2017 21:05

                      Бюдет поиска явно не будет стремиться к нулю. Как минимум операционные расходы для того, кто все это оплачивает :)
                      Выходное пособие… Если кандидат прошел фильтр испытательного срока, а потом не устроил по какой-то причине, то это уже не суть важно, если такие косяки не единичны.
                      Надо что-то в процессах найма менять.


            1. KVL01
              05.04.2017 12:22

              Да я и не нанимаюсь, сейчас сам провожу собеседования. Отдельная забава: попросить на пальцах рассказать хотя бы пузырьковую сортировку и ответ типа: «А мне не надо это, в фреймворк уже встроен QuickSort, вызываю его просто» (это если он вообще знает, какой там метод используется). Свежие технологии-то у него в голове, а для алгоритмов, похоже, места не осталось. Впрочем, это уже другая история.


              1. Razaz
                05.04.2017 13:10

                А надо ли ему знать/помнить в контексте той задачи, которую он решает?
                Мне вот на собеседовании важно понять — сможет ли он при необходимости вспомнить/нагуглить. А то что лет за 10 человек мог забыть это — не сильно напрягает.


                1. kloppspb
                  05.04.2017 13:28
                  +1

                  IMHO, «знал, но быстро восстановит при необходимости» и «никогда не знал», или «знал на уровне вызубрить без понимания для зачёта и тут же забыть» — сильно разные вещи. И это сразу видно, больше при очной беседе, но и по тестам тоже. Когда специалист не помнит некоторых базовых вещей — это бывает. Когда базовой подготовки нет совсем — это другая ситуация.


                  1. Razaz
                    05.04.2017 13:55

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


                    1. kloppspb
                      05.04.2017 14:14

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

                      Значит, «давай, до свидания». Куда-нибудь ещё, но не к нам.

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

                      У меня в дипломе вообще написано «биолог-биохимик» :-)

                      Надо просто иметь мозги и уметь ими пользоваться.

                      В нашем случае без навыков написания кода мозги бесполезны. Учить никого ни сил, ни желания, ни времени просто нет. Именно поэтому и устное собеседование, и тесты. Возможно, прямо на месте, простенькие, но на бумажке, не можешь написать идеально точно — объясни словами. А то бывает, попадаются такие, со «знанием ООП», а простейшее наследование изобразить не могут…


                      1. Razaz
                        05.04.2017 14:40

                        К сожалению многие подходят формально к процессу собеседования.
                        Я постоянно собеседуюсь сам, так сказать для self-awarness. И собеседуюсь в других странах. Очень отличается подход к найму. В 90% ни разу не спросили ни одного технического вопроса. Ну кроме парней из Dell типа знаю ли я что такое репозиторий :D
                        Основной упор делается на работу в команде, обсуждение опыта плюс обсуждение какой-то технической проблемы. В целом этот подход по моему мнению более качественнен. Даже редкие тестовые задания больше направлены на оценку социальных навыков.


                1. am-amotion-city
                  05.04.2017 13:46

                  По всему коду рельс как раз очень заметно, что «bubble sort» для DHH — слишком сложно :)


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


                  1. Razaz
                    05.04.2017 14:00

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

                    Человек, пишуший FS под Linux не так интересен да? ;)


                    1. am-amotion-city
                      05.04.2017 15:03

                      Человек, пишуший FS под Linux не так интересен да? ;)

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


                1. mrsantak
                  05.04.2017 18:11

                  Вы всерьез считаете, что чтобы написать алгоритм уровня пузырьковой сортировки нужно его обязательно помнить?


                  1. Razaz
                    06.04.2017 02:28

                    Наоборот. Если человек исходя из названия сможет примерно придумать принцип — его надо хватать с руками и ногами.


                    1. mrsantak
                      06.04.2017 11:59

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

                      Тема просто наболевшая, сам долгое время давал на собеседовании задачку написать какую-нибудь сортировку. Где-то половина кандидатов на позицию middle не смогли написать вообще ничего. Для меня до сих пор это кажется дикостью — человек с 3+ годами опыта программирования и не может сгенерировать алгоритм сортировки.


                      1. am-amotion-city
                        06.04.2017 12:55

                        не может сгенерировать алгоритм сортировки

                        Ну квиксорт уже так на ша?ру не сгенерируешь :)


                        1. VolCh
                          06.04.2017 13:34

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


                      1. kalombo
                        07.04.2017 09:05

                        Мне интересно к какому вы пришли выводу. Что эти кандидаты в принципе не могут написать сортировку? Или же они не могут написать сортировку на собеседовании в условиях, которые вы им предоставили?


                        1. kloppspb
                          07.04.2017 09:22

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


                          1. kalombo
                            07.04.2017 09:52

                            Я хочу сказать, что у человека 50% не проходят его легкий(по его мнению) тест, он удивлен такому проценту непрохождения теста, но не пытается пересмотреть свои методы собеседования, он уверен, что всё дело в некомпетентности собеседуемых. Вот я и хочу узнать, быть может что-то неправильное в процессе отбора кандидатов? Может быть дело не в них, раз результаты кажутся дикостью?
                            Если знание алгоритмов необходимо для вакансии, может быть стоит указать это в ней? Прям строго-строго: «будем спрашивать знание алгоритмов, необходимо уметь вертеть связные списки, бинарные деревья туда-сюда» Тогда и 50% бесполезных собеседований не будет. Если же вам они особо не нужны для вакансии, то будьте готов к тому, что кандидаты особо не будут отвечать на вопросы об алгоритмах.


                            1. kloppspb
                              07.04.2017 10:05

                              По своему опыту могу сказать, что при полном соответствии резюме описанию вакансии, и даже при удалённом выполнении тестовых заданий, на собеседовании могут отсеиваться и 80% кандидатов. Потому что в резюме можно указать что угодно (а то и подогнать его под вакансию), задание нагуглить… А вот на очной ставке правда и всплывает.

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


                            1. VolCh
                              07.04.2017 10:09

                              Одна из основных обязанностей программиста — алгоритмизация задач. Если на вакансию программиста откликается человек, который не может (во)создать алгоритм сортировки (лобой алгоритм, лишь бы сортировал), то он не программист, а кодировщик, переводчик — кодирует, переводит алгоритмы с одной формальной, типа блок-схем, или близкой к ней форме записи в другую формальную — код на ЯП. Такие люди тоже бывают полезны, но это не программисты.


                              1. kalombo
                                07.04.2017 10:34

                                Весь этот хайп с алгоритмами на собеседованиях появился подозрительно в то же время когда алгоритмы на собеседованиях стали использовать IT-гиганты типа Гугла, Амазона, Фейсбука. Эту фишку подхватил и Яндекс и принес её в ру-сегмент собеседований(Кстати, аналогичная ситуация была и с канализационными люками). И если для it-гигантов эта фишка оправдана, т.к. действует как удобный фильтр для нескончаемого потока кандидатов, то в конторах поменьше используется исключительно для самоутверждения.

                                Нет, есть конторы, котором на самом деле нужны алгоритмы, поэтому они так и пишут в вакансии, «нам нужны алгоритмы, а которым не нужны, пишут как раз в стиле ваших комментариев: „Ну да это же базовые вещи, ну без них ты только говносайтики сможешь клепать, да формочки к ним, ну ты не програмист, а кодер и вообще тебе не будут давать девки“. Хотя при желании можно найти много примеров авторитетных в IT-сегменте людей, которые без этих „базовых вещей“ вносят огромный вклад в развития программирования(создатель Ruby, например), да и знаете среди этих 50% непрошедших тест мидлов тоже имеются люди с интересными проектами за плечами.

                                В общем, снимите, пожалуйста, корону и, если вам нужны алгоритмы, то предупреждайте об этом, а не поднимайте своё ЧСВ, говоря, „ну это же базовые вещи“


                                1. kloppspb
                                  07.04.2017 12:15

                                  Весь этот хайп с алгоритмами на собеседованиях появился подозрительно в то же время когда алгоритмы на собеседованиях стали использовать IT-гиганты типа Гугла, Амазона, Фейсбука.
                                  Неправда. Например, классика со строчным калькулятором встречалась ещё в прошлом веке. А при найме на системного ассемблерщика меня как-то спросили что я знаю про алгоритмы сжатия и гауссовское распределение :) Впрочем, тогда и программистов было поменьше, и такого «разделения труда», как сейчас, не было.
                                  при желании можно найти много примеров авторитетных в IT-сегменте людей, которые без этих „базовых вещей“ вносят огромный вклад в развития программирования(создатель Ruby, например), да и знаете среди этих 50% непрошедших тест мидлов тоже имеются люди с интересными проектами за плечами.
                                  Можно. Но это не значит, что они интерены как кандидаты на конкретную вакансию.
                                  снимите, пожалуйста, корону
                                  Корона — это считать, что работодателя должно волновать мнение совершенно постороннего человека о том, кого и как ему нанимать.
                                  если вам нужны алгоритмы, то предупреждайте об этом
                                  Если по описанию вакансии и предполагаемых задач кандидат этого не понял — можно считать, что первый тест провален :)


                                  1. kalombo
                                    07.04.2017 12:25

                                    А мне кажется, если человек(а точнее 50%) не понимает какие задачи надо решать по описанию вакансии, то «тест провалил» человек, который разместил эту вакансию.


                                    1. kloppspb
                                      07.04.2017 12:52

                                      Бывает и так, наверное. И задания тестовые бывают как в посте. Означает ли это, что можно обобщать, и в «чью» сторону?


                                  1. Lofer
                                    07.04.2017 13:04

                                    Алгоримы сортировки создавались с конце 19 века. В 50...60 годы 20 века теория сортировки отрабатывалась и оценивались алгоритмы не одним математиком и не 5 минут, которые выдают на собеседовании.

                                    Сейчас люди, которые не изобрели ничего нового в этом направлении математики «дрючат» других людей, которые не сталкивались с этим направлением математики постоянно. Дрючат за то, что у них хвататет мозгов посмотреть сначала в справочнике готовое решение, а не изобретать велосипед? А-ля «а нафига мне будут гуглить ?!»

                                    А почему бы тогда не добавить вопросы типа: схема разводки платы для микропроцессора? Мы же кодим на этом процессоре! А рассчитайте диаграмму направленности для WiFi антены? Вы же по ней Http запросы то гоняете! Ну ладно. это мы загнули, давайте попроще: сколько тактов выполяются команды процессора? А как же вы будете оптимизировать софт ?!

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

                                    1. я должен знать граничные условия функционирования моего изделия
                                    2. я помню не большое количество «типовых решений»
                                    3. я всегда помню, что есть справочники, куда специально обученные люди внесли необходимую мне информацию о материалах и их физических и химических характеристиках
                                    4. если типового решения нет, я могу придумать свое «типовое решение»
                                    5. моя задача как конструктора используя типовые решения и справочные материалы применить весь свой опыт, справочную информацию так, что бы решение было достаточным для указанных граничных условий

                                    Я просил у них почему они настолько аппелирует к справочникам?
                                    Ответ был прост и очевиден: знаний настолько много по нашей отрасли, что запомнить их все просто нереально.

                                    Так что вопрос с короной — очень актуален.


                                    1. kloppspb
                                      07.04.2017 13:20
                                      +1

                                      Дрючат за то, что у них хвататет мозгов посмотреть сначала в справочнике готовое решение, а не изобретать велосипед?

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


                                      1. Lofer
                                        07.04.2017 13:31

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

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

                                        Но вопрос темы то другой: практический смысл, достоинства и недостатки


                                        1. kloppspb
                                          07.04.2017 13:36

                                          Нанять проще, научить — нет :)

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


                                          1. Lofer
                                            07.04.2017 13:47

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

                                            Сколько раз в жизни вы своими руками писали алгоритмы сортировки? А в рамках 3..5 летнего проекта?
                                            Хотите алгоритмичность мышления понять? что мешает взять UML и рисовать себе на здоровье? и карандашик и бумажка и при собеседовании. и дешево и сердито.


                                            1. kloppspb
                                              07.04.2017 14:07

                                              Сколько раз в жизни вы своими руками писали алгоритмы сортировки? А в рамках 3..5 летнего проекта?
                                              Больше одного :) Разматывать сишный qsort, например, в нерекурсивную реализацию не раз приходилось. С обоснованием до байта размеров стека границ в каждом случае. Но дело же не в них как таковых. BTW, я на сортировку и не упирал вовсе, примеры заданий выше в трёх ответах показывал.

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

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


                                            1. kloppspb
                                              07.04.2017 14:29

                                              P.S. А UML ничего не скажет об умении писать код. Что тоже очень важно. Даже простую задачу можно так накорябать, что нафиг :)


                                1. VolCh
                                  07.04.2017 12:18

                                  Алгоритмы нужны всем, даже клепателям формочек для задач типа "пока все поля не заполнены, кнопка "отправить" не работает". Не можешь формально описать простейший алгоритм, который сам (физически, руками) исполнял множество раз — какой ты программист?


                                  1. Lofer
                                    07.04.2017 13:10

                                    Не можешь формально описать простейший алгоритм, который сам (физически, руками) исполнял множество раз — какой ты программист?

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


                                    1. VolCh
                                      07.04.2017 15:58

                                      Не понял вашего комментария. Вы имеете в в иду, что мы не проверяем названные вами способности и берём исключительно на основании способности алгоритмизировать задачи?


                                      1. Lofer
                                        07.04.2017 17:41

                                        Вы имеете в в иду, что мы не проверяем названные вами способности

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

                                        При этом указать KPI оценки результатов перед тем как дать задание? Да ну нафиг
                                        При этом слепо копируя чужое, не понимая почему именно так вопрос поставлен? вполне может быть что даже порядкок вопросов имеет в чужом опроснике имеет смысл…

                                        По принципу: Спички есть? Значит не стоит…
                                        Мне это зачастую напонимает карго культ, который прикрывается «ну это же базовые знания/ все знают / и т.д...» тупо проецируя свою логику и психологию на кандидата.


                                        1. VolCh
                                          07.04.2017 17:48

                                          Выбирается такая формулировка вопросов/задач, чтобы проверить, по возможности, сразу несколько аспектов знаний и навыков. Задача типа "дан массив, написать его сортировку без использования стандартных или сторонних библиотек" проверит, как минимум, одну из двух вещей — знание алгоритмов или способность алгоритмизировать задачи. Если в решение будет какой-то известный алгоритм, то собеседование пойдет по одному пути, если кандидат начнёт изобретать свой (пускай он в итоге и окажется пузырьком или вставками), то по другому.


                                          1. Lofer
                                            07.04.2017 20:51

                                            Полностью согласен.
                                            Но это все будет понятно при общении, иначе как вы получие пояснения?
                                            Так же, по идее, если мы возьмем информацию о вакансии, исходные данные задания, запись/протокол собеседования и покажем еще ??? «экспертам» мы должню получить точно такой же вывод по результатам собеседования. о пригодности кандидата к вакансии. Это будет объективная оценка квалификации и прогодности к вакансии. Логично?
                                            В противном случае это просто субъективная оценка не понятно на чем базирующаяся. Соответсвенно вопрос о корректности и ценности методологии весьма спорный.


                            1. kloppspb
                              07.04.2017 10:30

                              BTW, о таком тоже нужно предупреждать? IMHO, очень наглядный пример. По решению которого можно многое понять, и не только в области алгоритмизации.


                              1. kalombo
                                07.04.2017 10:50
                                +1

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


                                1. kloppspb
                                  07.04.2017 12:09
                                  +1

                                  задавая такой вопрос
                                  А кто сказал что этот вопрос — единственный? Для успешного прохождения собеседования совсем не обязательно на все вопросы ответить правильно, и даже вообще ответить.
                                  вы скорей всего найдете кандидата
                                  … который по совокупности знаний нам подойдёт. Или не подойдёт.
                                  усталость после работы, стресс…
                                  … похмелье etc — это то, что на собеседование приглашать не стоит. Даже странно, что такие простые вещи надо обяснять.


                                1. VolCh
                                  07.04.2017 12:21

                                  То есть стоит рассматривать серьезно кандидата, который из-за усталости и стресса не может простейший хотфикс для упавшего вечером в пятницу продакшена?


                                  1. Razaz
                                    07.04.2017 12:49

                                    Усталось и стресс то же разными бывают. Если у вас был двухнедельный кранч и человек уже как зомби — странно ожидать от него хоть чего-то адекватного. Тут вопрос к работодателю, который допускает такие ситуации.


                                    1. kloppspb
                                      07.04.2017 12:53

                                      В данном случае вопрос к кандидату, какого лешего он потащился на собеседование в таком состоянии.


                                      1. Razaz
                                        07.04.2017 13:02

                                        Возможно он потащился на собеседование, так как на текущей работе есть проблемы, которые приводят к такому состоянию? Всякое же бывает. Не у всех есть возможность отпроситься и придти свежими и выспавшимися. Жизнь она такая штука.


  1. Fil
    28.03.2017 20:07
    +6

    Может вам на Тостер? Это все-таки не статья.


    1. rfvnhy
      29.03.2017 20:42

      Тема поднята очень интересная… Возможно автор доработает ее до статьи…?


      1. Fil
        29.03.2017 20:49

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


  1. arielf
    28.03.2017 20:09

    Не вижу ничего плохого в самих заданиях при условии, если они оплачены. Ежели они ценят своё время, пусть ценят и ваше. Бесплатно их выполнять можно лишь если вы выпускник без единой строчки кода. Для кандидатов с опытом они вообще не имеют смысла, лучше прислать код из реального проекта. Вообще, выполнение какого либо пробного задания — самый последний этап найма, когда кандидат по всем прочим параметрам фирму устроил. Ещё задания на знание алгоритмов имеют смысл в наукоёмких проектах. Для них можно использовать примеры с https://codility.com и похожих ресурсов. А предложение писать драйвер или игру с кучей условий, не говоря уже о целой либе, — немного невежливо.


    1. orcy
      29.03.2017 10:49

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

      Применять ли тестовое задание при найме, оплачивать его или нет — вопрос баланса. Мне кажется с точки зрения здравого смысла, если работодатель дает неоплачиваемое тестовое задание на 3 дня к статье, то велик шанс что он упустит какое-то количество разработчиков. Иногда работодатель может решить что для него это приемлемо, почему нет.


  1. ggrnd0
    28.03.2017 20:10
    -3

    Первое задание вполне адекватное для системного разработчика windows например в компанию Parallels…

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


    1. devalone
      28.03.2017 20:12

      Выполнять тестовое задание пару недель?0_о


      1. ggrnd0
        28.03.2017 20:26

        Это джун. И кода реально дофига нужно.
        Сеньер вполне за день два должен справиться…

        Задание реально огромное, его вполне можно разбить на части:
        1) расширяемое приложение, дживок поиска с поддержкой плагинов, реализация поиска по текстовому файлу в виде плагина.
        2) реализация UI и с отображением прогресса копирования файлов из одной директории в другую.
        с отбражением каждого файла в UI.
        3-N) написание отдельных реализаций поиска по разным типам файла

        N+1) Добавить немного собственного времени на связывание и допиливание функционала
        N+2)…
        N+#) Профит!


        1. rfvnhy
          29.03.2017 20:45

          > вполне за день два должен справиться
          Значит этот день должен быть оплачен. Или исходный код не должен передаваться компании…

          А то как сейчас в некоторых рекламных акциях пишут:
          Принимая участие в акции и отправляя нам письмо вы подтверждаете что все материалы передаете нам с передачей исключительных прав (например конкурс на рисунок/создание логотипа/....).
          А дальше 1-2 победителя наградят мелкими призами, а все кто занял места обычно от 4 и дальше оказываются в пролете, но их материалы могут быть использованы компанией-организатором…


    1. singlevolk
      28.03.2017 20:14

      да написать не проблема. Но — 3 дня, по средним зп региона = 15000. Вопрос — есть ли желание впахать бесплатно на такую сумму?


      1. ggrnd0
        28.03.2017 20:20

        Я же говорю не о 15к, а о 150+к.
        Если из Parallels предложили бы такие задание и зп — то почему нет?
        3 дня — это предел.
        На вскидку простой драйвер с поддержкой 1 конкретной ОС — за три дня напишет кто угодно, даже домохозяйка=)

        Вот со вторым заданием сложнее, там кода больше в разы нужно.


        1. singlevolk
          28.03.2017 20:53
          +1

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


          1. ggrnd0
            28.03.2017 21:23
            -3

            Зачем 3 ночи? профессионал и за 4 часа справится…
            это всего лишь один вечер, если приспичило менять работу — да.


            1. singlevolk
              28.03.2017 21:58

              если не трудно — напишите свои ответы для комментария


            1. singlevolk
              28.03.2017 22:00

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


              1. ggrnd0
                28.03.2017 23:27
                +1

                Зависит от целей найма.
                Вы знакомы с компанией Parallels?
                Они есть на хабре — крутые ребята.
                Если б это была их вакансия — то все ок, имеют право ставить высокие требования к кандидатам. Все же не сайтики на вордпресе клепают…


                1. singlevolk
                  28.03.2017 23:34

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


                  1. rfvnhy
                    29.03.2017 20:52

                    >выполнение тестового, профит,
                    Слишком много нюансов может быть.
                    Задача будет работать, но например код не нравится начальнику…
                    Тогда вполне нормально оплатить затраченное время, пусть и по очень пониженной ставке. Или не использовать этот код. Оставить его тому, кто его делал. Но тут вопрос как это обставить юридически грамотно.


            1. Bringoff
              29.03.2017 08:43
              +2

              Сеньер вполне за день два должен справиться…

              профессионал и за 4 часа справится…

              Вы уж там определитесь,


              а то будет, как на той картинке


              1. ggrnd0
                29.03.2017 10:11

                Это о втором и первом задании соответственно.
                Второе дольше банально за счет кратно большего объема.


        1. rfvnhy
          29.03.2017 20:50
          +1

          Предложить им готовое рабочее приложение.
          Его можно «пощупать», если всё устраивает — исходный код можно посмотреть с листа без возможности копирования, а лучше передать под договор о просмотре без использования.
          Тогда 1. если ваше «задание» будет использовано в работе — сможете отсудить у них немного денег
          2. можете использовать ваше «задание» в своих проектах где и когда угодно.

          Если внимательно почитать про те задания, вполне можете найти строчку типа «передача исключительных прав», или что-то аналогичное…

          В общем надо или подстраховаться или поговорить с юристами…

          Просто крупные компании не дают обычно задач на 3 суток работы.
          Обычно тестовые задачи у них на 1 час максимум, а если что-то сложнее, то вас берут на стажировку/испытательный срок/…
          Или оплачивают задания, как выше уже отметили. Для крупной компании это нормально.


        1. corr256
          31.03.2017 22:37

          Вы путаете тестовое задание для конторы, в которую есть определённое желание попасть и задание, для noname-конторы (как у автора), про которую ты не можешь ответить на вопрос: «оно те надо»?

          Вот вы мега-профессионал, сделаете данное задание за день… или даже за 4 часа. Но делать задание для непонятной конторы… оно вам надо?


  1. sbnur
    28.03.2017 20:28
    +2

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


    1. edogs
      28.03.2017 20:37
      +2

      Вах. Окей, сценарий.
      Вы компания. Даете тестовое задание.
      Вам присылают тестовое задание в котором по дате сносятся все данные с диска закладкой.
      Ваша реакция?


      1. sbnur
        28.03.2017 21:09

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


        1. edogs
          28.03.2017 22:23

          Снос это утрированно. Смысл в том, что Вы преднамеренное закладываете в программу функционал противоположный ее назначению. К каким проблемам это может привести — непредсказуемо.


          1. Areso
            29.03.2017 05:52

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


            1. rfvnhy
              29.03.2017 21:00
              +1

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


            1. edogs
              31.03.2017 16:16

              Не-а.

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

              Вкладываешь в код пару проверок. Через месяц приходят, разводят руками или ругаются, в конечном итоге или платят (если сроки горят) или ищут дальше наивных разработчиков (если сроки не горят).
              Или подают в суд и выигрывают.
              Потому что со стороны разработчика имело место скрытное внесение функционала нарушающего предусмотренную функциональность.
              При чем при некотором совпадении условий тут даже по российским законам можно будет 272 ук натянуть (это отдельный вопрос, который мы бы тут не хотели сейчас полно раскрывать, но факт есть факт — влететь можно).

              Вообще как правильно сказал rfvnhy, и это на самом деле самый важный критерий, критерий это «скрытость» закладок.
              Если передается код с предупреждением о том, что «в полночь он превратится в тыкву», то это нормально. Если же делается тайная закладка с тайной целью, то это совсем другое.


          1. rfvnhy
            29.03.2017 20:57
            +1

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

            Если же программа явно тестовая (те набор исходных данных не меняется и дан в примере, можно сделать что другой набор не будет проходить или в нем явно режется какой-то функционал… например при использовании БД с номером паспорта 2-3 цифры в середине меняются на нули, те результат работы будет непригоден для работы даже небольшой фирмы или для выполнения любой практической задачи)

            Вопрос только что о таких особенностях должно быть написано в сопроводительной документации обязательно!

            Тогда и к вам вопросов меньше будет.
            Хотите устроиться, но беспокоитесь что ваш код/ПО будет использован, а вас на работу не примут.


    1. singlevolk
      28.03.2017 21:38

      толку нет. В требование прислать исходники. Я откажусь — найдут еще тех кто поведутся.


      1. sbnur
        28.03.2017 22:16
        +1

        Если жесткое требование насчет полных исходников, особенно, если в виде проекта среды разраболтки, то можно сразу не терять времени
        Все-таки адекватных компаний больше — как и просто нормальных людей


      1. gatoazul
        28.03.2017 23:05
        -1

        Распечатайте исходники на плохой бумаге матричным принтером и пошлите почтой.

        Или пришлите зашумленную картинку вместо текста.

        Почитать можно — использовать нельзя.


        1. singlevolk
          28.03.2017 23:52

          Хороший совет — но реальность такова, что и это будет бесполезной работой.


          1. ggrnd0
            29.03.2017 00:06
            +3

            image


            1. LynXzp
              29.03.2017 17:40

              Я не понял кто кого собеседует.


              1. Areso
                29.03.2017 18:30

                Тут соискатель явно с огоньком в глазах и существенной профдеформацией)
                А вот специалиста отдела кадров явно тестируют на профпригодность…


        1. rfvnhy
          29.03.2017 21:04

          Наймут пару студентов, которые за копейки перенаберут код… Не вариант.
          Или исходники показываются лично (с бумаги в присутствии кандидата)
          Или составлять договор.
          Или где-то «заявить» исходники как явно свой проект, грубо говоря — запатентовать.

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

          Главное до начала работ обсудить с будущим возможным работодателем как они к этому вообще отнесутся?
          Если нормально — то задание скорее всего действительно тестовое.
          Но подстраховаться стоит.

          А если сразу пошлют — значит это 99% что кидалово… И на него даже не надо время тратить.


    1. mrsantak
      28.03.2017 22:39
      +4

      А в чем прикол тестового задания без предоставления исходников? Весь смысл ТЗ в том, чтобы посмотреть на код, который пишет кандидат.


      1. sbnur
        28.03.2017 23:32

        Смысл прост — важна реализация — скажем на олимпиадах по программированию исходные коды не смотрят — а подвергают тестам
        Прошел все тесты — значит тестовое задание выполнил

        Между прочим (кстати я часто менял место работы как программист и многим видам испытаний повергался) у меня исходные коды мало кто смотрел и вникал, потому как HR менеджерам это недоступно, а программерам неохота. Реалии таковы — один раз меня это даже сильно обидело — старался, писал код по уму, а его никто и не глянул


        1. mrsantak
          28.03.2017 23:52
          +3

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


          1. sbnur
            29.03.2017 07:16

            Ну почему же мало — в ходе работы мало кого интересует код — главное чтобы к сроку работало как надо


            1. mrsantak
              29.03.2017 07:30

              В более менее серьезных проектах к коду предъявляют значительно больше требований, чем «лишь бы работало». И чем крупнее проект, тем больше требований к коду.


              1. sbnur
                29.03.2017 08:19

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


                1. mrsantak
                  29.03.2017 10:13
                  +1

                  Стандарты кода тут не причём. Могу сказать как я оценивал тестовые задания:


                  • Как происходит обработка ошибок?
                  • Насколько понятно написан код? Как он разбит на методы/модули?
                  • Как обрабатываются граничные случаи?
                  • Какие предположения сделал разработчик при написании ТЗ?
                  • Какие библиотеки использовал?
                  • Какие алгоритмы и структуры данных использовал?

                  Ответить на эти вопросы не смотря в код практически невозможно. Однако они важны. Если человек написал решение в виде функции на 1000+ строк, или использовал List там где нужен Set, то он не очень хороший разработчик. Или если в задаче на многопоточность он просто воткнул synchronized в каждый метод.


                  1. sbnur
                    29.03.2017 11:05
                    +1

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


                    1. mrsantak
                      29.03.2017 11:48
                      +2

                      Тестовое задание — это отсев при большом потоке кандидатов. Если у меня есть время пообщаться с кандидатом лично, то я предпочту общение. Но время не всегда есть и не всегда кандидат один.


                      Что касается субъективности оценок — так весь процесс найма субъективен. Хотите объективности — возьмите тест, но это ещё хуже ТЗ.


                      И опять таки, не нужно думать, что я хочу чтобы кандидат использовал те библиотеки которые я знаю — навыки телепатии мне не интересны. Но вот если кандидат парсит xml регекспами, а не dom/sax/etc парсером, то он не пройдёт.


                      1. sbnur
                        29.03.2017 13:18

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


                      1. rfvnhy
                        29.03.2017 21:08

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

                        Хотя бывают например конкурсы.
                        Победители могут рассчитывать на работу.
                        А все остальные приславшие свои работы…
                        не прочитали условий, где передают все исключительные права…


                    1. webcote
                      29.03.2017 17:53
                      +1

                      Спасибо за комментарий, очень жизненно :)

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

                      Сейчас как раз работу ищу — от тестовых заданий отказываюсь, кроме заданий, которые занимают по времени до 1 часа. Компаний много, а я один :)


                      1. VolCh
                        29.03.2017 18:01

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


                        1. webcote
                          29.03.2017 20:07

                          Вот я как раз такой — код писать умею, а языком трепать нет. Берут не меня, а того, у кого дар убеждения больше развит. А еще много работодателей попросту морозятся — тестовое задание отлично выполнил, собеседование с тимлидом прошел, дальше тишина. Через несколько дней написал, мол, что там с работой, получил ответ «Мы просто пересмотрели требования, зато у нас открылась вакансия верстальщика, верстать придется лендинги, можем взять».


                          1. Roman_Skalov
                            01.04.2017 13:33

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

                            У меня было такое, например (C#) формально задание выполнил, юнит-тесты прошли, и в отведённое время уложился. Но в силу плохого на тот момент знания LINQ запросы на LINQ я написал не самым оптимальным образом, плюс, судя по реакции тимлида, ему явно не понравилось, что я долго врубался в суть задачи (там было довольно сложное дерево классов). Итог — отказ.

                            Может быть и такое, что, кандидат всё прошёл, но просто как человек не понравился. Если с человеком ещё пару лет сидеть в одном офисе, конечно, есть ещё и субъективный фактор.

                            Наконец, можно всё пройти, но тупо опоздать на собеседование на час))


                        1. rfvnhy
                          29.03.2017 21:10

                          Контору куда можно пойти работать ХОРОШЕМУ специалисту ОЧЕНЬ много и он наверняка выберет ту, где при прочих равных не придется тратить несколько дней на тестовое задание…


                          1. am-amotion-city
                            30.03.2017 07:37
                            +3

                            контор, куда можно пойти работать ХОРОШЕМУ специалисту ОЧЕНЬ много

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


                            Единицы.


                            Правда, именно эти конторы не просят сделать никаких тестовых заданий, они этих специалистов специальным образом с конференций (или просто по правильному проекту на гитхабе, итли даже из интересного топика на реддите) выцепляют и уговаривают.


                            Просто ради смеха: у вас лично часто прямо код воровали? Потому что я, например, все, что не под NDA — сразу публикую в открытый доступ, и у меня украсть код невозможно. Но вы так вот прямо озабочены, я смотрю по комментариям, вероятной кражей.


                            Так крали уже когда-нибудь?


                          1. Roman_Skalov
                            01.04.2017 13:37

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


        1. lair
          29.03.2017 11:24
          +3

          Смысл прост — важна реализация

          Это кому как. Я именно что код читаю.


          1. sbnur
            29.03.2017 13:13
            -1

            Jedem das seine


          1. rfvnhy
            29.03.2017 21:13

            Ну т.е. вы хотите грубо говоря видеть понравится ли вам этот код.
            Правильно ли все в нем с точки зрения архитектуры и реализации и тд и тп

            Но тогда всё же или ваше тестовое задание должно иметь хоть один из нижеприведенных пунктов:
            1. оплачиваться при решении (естественно если не работает или есть грубые ошибки, которые можно доказать или код вам не предоставлен) то оплачивать не надо
            2. занимает менее 1-2 часов
            3. вы подписываете с кандидатом договор, что все исключительные права на код остаются за ним. И не имеете права использовать его в своей работе.
            4. код просматривается в присутствии кандидата и никуда не копируется.
            5…


            1. lair
              29.03.2017 21:17

              Но тогда всё же или ваше тестовое задание должно иметь хоть один из нижеприведенных пунктов:

              Э-э, почему? Какая связь между любым из этих пунктов и моим желанием видеть, понравится ли мне код? Если я не хочу видеть, понравится ли мне код, а хочу просто работающий код, эти пункты не применимы?


              (BTW, пункт три — это правовая позиция по умолчанию, зачем об этом договор подписывать?)


              1. rfvnhy
                29.03.2017 21:23
                -1

                3 — это было у автора.
                Он опасается что его код будет использован в реальных задачах, а ему за работу никто не оплатит.
                Тут вопрос с чем идти в суд потом. Как доказать что этот код ваш.
                Не всякая экспертиза сможет явно сказать кто автор если нет подстраховки…

                >моим желанием видеть, понравится ли мне код?
                Ну например можете посмотреть на старые или аналогичные проекты соискателя для начала…

                Я к тому, что глобальные «тестовые задания» на много часов должны быть предъявлятся очень ограниченному кругу соискателей, а не как входной тест десяткам людей…

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

                Например — «сможете расшифровать приведенный ниже шифр — мы вас примем на работу, в нем адрес куда приходить» — вполне нормальное задание, даже если работа над ним займет много часов — ведь это явно ТЕСТОВОЕ задание, а не какой-то код, который можно использовать в реальных задачах…


                1. lair
                  29.03.2017 21:30
                  +1

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

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


                  Ну например можете посмотреть на старые или аналогичные проекты соискателя для начала…

                  Это если они у него есть и не под NDA. Что не так часто встречается, как хотелось бы.


                  Я к тому, что глобальные «тестовые задания» на много часов должны быть предъявлятся очень ограниченному кругу соискателей, а не как входной тест десяткам людей…

                  А я нигде и не говорил про "задания на много часов". Я считаю, что тестовое задание должно иметь некий разумный объем — я просто не считаю, что это как-то связано с тем, хочу я смотреть на исходники или нет. Другое дело, что если я не хочу смотреть на исходники, то мне и тестовое задание не нужно...


        1. Roman_Skalov
          01.04.2017 13:25

          Обычно, чтобы прогнать юнит-тесты, вообще-то нужен исходный код. Можно его не смотреть, но нужно, чтобы он был. Хотя, скажем, если есть удалённый метод WCF, это не надо.

          Но если потенциальный работодатель исходники не смотрит, и юнит-тесты не прогоняет — это как минимум странно.


          1. lair
            02.04.2017 23:00
            +1

            Обычно, чтобы прогнать юнит-тесты, вообще-то нужен исходный код.

            От платформы зависит. В .net — совершенно не обязательно.


          1. mrsantak
            03.04.2017 12:37

            А это где такие юнит тесты, что им прям исходники необходимы?


            1. VolCh
              03.04.2017 12:53

              В интерпретируемых языках, как минимум.


            1. Roman_Skalov
              03.04.2017 13:07
              +1

              Ну это смотря как выглядит тест. Если мы имитируем клики по интерфейсу а-ля Selenium какой-нибудь, это одно. Если мы хотим вызвать из кода определённый метод с нужными нам входными параметрами, и сравнить возвращенный результат с ожидаемым, тут хорошо бы, чтобы исходник был. Хотя всё это от конкретной технологии зависит.

              Если писать на JavaScript, например, тут результатом вашей работы будет открытый исходник, по-любому. Хотя, конечно, можно извратиться, и сделать обфускацию.


              1. mrsantak
                03.04.2017 13:34

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

                Зачем? Все что нужно для такого — это бинарник + метод должен быть в API.
                Это какой-то очень странный язык должен быть, чтобы для компиляции и/или исполнения требовать исходники для всех используемых библиотек.


                1. VolCh
                  03.04.2017 13:58

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

                  Из мэйнстрима, навскидку: PHP, Ruby, Python, JavaScript, Perl — 5 языков из топовой дюжины по версии tiobe. Могут быть какие-то средства поставки не в виде исходного кода, но как-то не распространены они вцелом в сообществах, если не считать сознательной обфускации.


                  1. am-amotion-city
                    03.04.2017 17:30

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


                    Вот вам эндпоинты на весь API, обтестируйтесь :)


                    Неясно только, кому это надо.


                    1. VolCh
                      03.04.2017 17:33

                      Как протестировать метод класса на PHP без исходников этого класса?


                      1. am-amotion-city
                        03.04.2017 18:32

                        Тестирование имплементации (читай: методов) — страшный грех, за который нужно бить раскаленным прутом по рукам.


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


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


                        1. VolCh
                          03.04.2017 18:50

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


                          И причём тут вообще видимость методов?


                          1. am-amotion-city
                            03.04.2017 19:42

                            Как тестировать интерфейсы в рамках юнит-тестов вообще не представляю — интерфейсы суть набор абстрактных методов, то есть методов без имплементации.

                            Интерфейсы — это API. Тестирование интерфейса (вне зависимости от имплементации) — набор вызовов API и проверка корректности ответа во всех ожидаемых случаях. Вне зависимости от имплементации, вызов create должен увеличивать количество объектов на единицу, вызов edit — изменять свойства, а вызов delete — уменьшать количество объектов при хорошем id и возвращать ошибку при плохом. Это все, конечно, очень грубо говоря и упрощая, но любое тестирование всегда сводится к этому.


                            Вот вам наружу REST к моему API, вызывайте count, потом create, потом снова count и сравнивайте (и измеряйте скорость отклика, если надо). И так далее. Это — единственно верный набор тестов, которые тестируют интерфейс. Если у меня под капотом магия и сидят пять индусов, читающие запросы вайршарком и вручную выполняющие запросы к Foxpro — это none of your business.


                            1. lair
                              03.04.2017 21:13

                              … только это уже не юнит-тестирование.


                              1. am-amotion-city
                                03.04.2017 22:19

                                юнит-юнит. Integration — это про взаимодействие разных подсистем. А тестирование, к примеру, REST-endpoints — самое что ни на есть unit.


                                Многие ошибочно полагают, что в словах «юнит-тестирование» — «юнит» обозначает каждый метод, так вот это не так. Методы тестировать не нужно. Ни в каком тестировании, как его ни называй.


                                1. lair
                                  03.04.2017 22:28
                                  +1

                                  юнит-юнит. Integration — это про взаимодействие разных подсистем. А тестирование, к примеру, REST-endpoints — самое что ни на есть unit.

                                  У вас REST-endpoint данные откуда берет? Из воздуха?


                                  Многие ошибочно полагают, что в словах «юнит-тестирование» — «юнит» обозначает каждый метод, так вот это не так.

                                  Ну, я не считаю, что юнит — это метод.


                                  Методы тестировать не нужно.

                                  А что, простите, нужно тестировать тогда, если публичный интерфейс из методов и состоит? Или вы имели в виду, что "не только методы"?


                                  1. am-amotion-city
                                    04.04.2017 07:36

                                    У вас REST-endpoint данные откуда берет? Из воздуха?

                                    REST данные берет из спецом написанного ванильного теста, а не из пользовательского ввода. Интеграционный тест — из какого-нибудь сценария под phantomjs, имитирующего именно что пользовательский ввод. С браузером и пользовательшами.


                                    Или вы имели в виду, что «не только методы»?

                                    Я имел в виду не все методы, а только лишь интерфейсные. Если под капотом есть метод, который извлекает данные из базы для последующей обработки, тестировать его не нужно (если мы не тесты для собственно ORM, конечно, пишем).


                                    1. lair
                                      04.04.2017 11:32

                                      REST данные берет из спецом написанного ванильного теста, а не из пользовательского ввода. Интеграционный тест — из какого-нибудь сценария под phantomjs, имитирующего именно что пользовательский ввод. С браузером и пользовательшами.

                                      Вы вопрос не поняли. У вас за ваши рестом есть какой-то бэкенд (БД в том или ином виде, следующий сервис, да хоть файловая система, если у вас файлсервер). И они, очевидно, влияют на прохождение вашего теста.


                                      Я имел в виду не все методы, а только лишь интерфейсные. Если под капотом есть метод, который извлекает данные из базы для последующей обработки, тестировать его не нужно (если мы не тесты для собственно ORM, конечно, пишем).

                                      Не сходится.


                                      Во-первых, если эти методы не тестировать, то как мы поймем, что они работают? А если они не работают, то как мы можем говорить, что система работает, если она от них зависит?


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


                                      Ну и как же тогда "методы тестировать не нужно"?


                            1. VolCh
                              04.04.2017 08:49

                              Это не про интерфейсы, а про контракты, про пред- и пост-условия и инварианты.


                              А тестирование REST API в практически продакшен конфигурации — это уже даже не интеграционное тестирование, а функциональное, практически приемочное. TDD же про юнит-тестирование, модульное. Работа же (HTTP) REST API обычно обеспечивается несколькими модулями: модуль обработки HTTP-запросов, модуль роутинга,, модуль (де)сериализации, модуль доступа к данным. Более минимальная архитектура возможна конечно, но опыт подсказывает, что сложно будет её поддерживать.


                  1. mrsantak
                    04.04.2017 00:23

                    Так это все интерпретируемые языки — у них компиляция отсутствует как класс и как следствие нет понятия бинарник.


    1. Deosis
      29.03.2017 06:46

      Такой вопрос: Если взять фразу «Это тестовое задание. Сделал Имярек Имярекович.» Зашифровать своим ключом и вставить в исходники. При этом часть данных можно использовать как константы, чтобы такой блоб просто не вырезали.
      И если не заплатят, то можно ли на суде это использовать как доказательство, чтобы жуликам оторвать лишнее?


      1. sbnur
        29.03.2017 07:26
        +1

        Суды дело долгое, тем более какова цена иска в подобных случаях
        Напрмер, мне часто отказывали по причине возраста, что запрещено законом, но насколько имело смысл подавать в суд по данной причине


        1. rfvnhy
          29.03.2017 21:18

          Ну докажете вы что вам отказали по причине возраста…
          Заставите компанию принять вас на работу через суд…
          А дальше вас уволят за несоблюдение рабочей дисциплины/опоздание на 20 сек/… или еще какой пункт найдут… Причем за него вы заранее распишетесь в документах…
          Есть очень много методов как выжить ненужного работника,… обычно самых непонятливых хватает на 2-3 месяца… Не одну историю о таком читал…
          Оно вам надо? Явно нет.
          Вот и не пошли вы судиться…
          Т.к. компенсация обычно за короткое время, пока вы судились и требовали вас восстановить, а дальше у нас обычно «суд постановил принять на работу...»

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


    1. Roman_Skalov
      01.04.2017 13:20

      Если компания не спросила у кандидата исходники, можно быть 100% уверенным, что это кидалово. Иначе это никак не объяснить.

      Понятное исключение — это алгоритмические задачки на сайтах типа HackerRank, Codility и др.


  1. ProstoUser
    28.03.2017 20:55
    +1

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

    Надо ведь оценить, как кандидат думает, как пишет. Да и задачки выбирали такие, чтобы на написание хватило максимум 2-3 часа.


    1. singlevolk
      28.03.2017 20:56

      а можно для примера, если не сложно. Не для, а ради сравнения.


      1. dom1n1k
        29.03.2017 00:13

        (из другой области) у студии Лебедева однажды тестовое задание звучало «нарисовать сайт для компании, которая занимается битьем лампочек в подъездах».


        1. singlevolk
          29.03.2017 00:17

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


        1. rfvnhy
          29.03.2017 21:26

          Ну если будут четкие пункты какие меню должны быть, какие стили примерно и тд и тп, то вполне потом можно взять этот сайт и переделав продать его другой компании…
          А вот если именно как у вас звучит — тут уже явно что-то тестовое и только тестовое.
          Хотя какие-то оригинальные решения можно использовать в других местах, поэтому лучше такой сайт где-то оформить как авторское право… Или хотя бы оригинальные решения в нем. Да хоть распечатки у нотариуса заверить с датой.


      1. kloppspb
        29.03.2017 02:42

        Могу показать, что попадалось.

        Раз, Perl:

        Разработать JSON-сервис:

        1. загружает из файла настроек порт, параметры коннекта к БД, список разрешенных методов и начинает слушать заданный порт
        2. получает запрос JSON-RPC (содержит внешнее имя метода и аргументы)
        3. конвертирует запрос в SELECT * FROM name(args) и выполняет его в БД Postgresql
        4. возвращает JSON-RPC структуру с результатом запроса или описанием ошибки


        Два, общее:

        Написать программу которая сравнивает два очень больших текстовых файла (например, терабайтных)
        и выводит в третий файл строки, которые есть в первом, но отсутствуют во втором. Порядковые номера строк значения не имеют, совпадения могут быть в любых позициях. Оценивается быстродействие и ресурсрёмкость.

        Ну и нестареющая классика: калькулятор, выводящий значение выражения, заданного строкой (например, «123 * (14 — 3) + 12»). Тут, правда, даётся уже не пара часов, но если рука набита — можно и уложиться :)


      1. kloppspb
        29.03.2017 02:56

        Ещё вспомнилось, вроде бы мелочёвка, но приятная :)

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


      1. ProstoUser
        01.04.2017 09:32

        Я не помню деталей, так что могу напутать.

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


      1. michael_vostrikov
        01.04.2017 20:19

        Мне вот такая кажется неплохой, хотя она мелкая и больше подходит для джуниоров.
        Дан двумерный квадратный массив, надо вывести элементы по спирали, начиная с центра.


    1. corr256
      31.03.2017 23:11

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

      Вы, по сути, пытаетесь представить человека как некоего робота с pure-методами по решению алгоритмов. И вам очень хочется, чтобы эти методы были как у вас, а то вдруг ещё не поймете что происходит.

      Человек — не робот.


      1. ProstoUser
        01.04.2017 09:43
        +1

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


  1. wadeg
    28.03.2017 21:10

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


    1. rfvnhy
      29.03.2017 21:28

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


      1. wadeg
        29.03.2017 22:02

        Если не укладываетесь в несколько часов — значит, это просто неправильно выбранные задачи. Десяток письменных вопросов будут. Если кандидат шарит, то коротких.
        Поэтому нужно стараться давать задачи, демонстрирующие полный охват проблемы. А вот архитектуру зачастую куда логичнее максимально подробно обговорить устно, с необходимым минимумом письма, конечно. Вопросы же очевидны — почему не так? а еще как можно, а еще? плюсы и минусы там и там, какие из кажутся критическими? а можно те минусы нейтрализовать? Если ответы идут в нормальном режиме, без постоянных «ну если что вспомню, в гугле же не забанили», да просто видно, что человек рассуждает и выдает решения в потоке — отлично. Заданиями это три дня проверять будете (нет). Блин, ну капитанить же отчаянно приходиться.
        А размер компании, оплата тут ну вообще не при чем и не влияют на этот процесс никак. Если вы не гугль и не устанавливаете любые правила.


  1. NightFlight
    28.03.2017 21:43

    Disclaimer: cужу сугубо по личному опыту. Самое смешное, что большинство слабых кандидатов даже не пытаются нанять фрилансера / попросить друга. Уверенность в собственных знаниях восхищает. Так что задание, даже простенькое — некий фильтр для отсеивания людей с нарушенной самооценкой. Ну а если фильтр пройден — тогда уже можно подробно пообщаться в live-режиме и попытаться оценить реальный опыт.


    1. rfvnhy
      29.03.2017 21:29

      ключевое слово — «простое задание»
      Обычно требует до 1-2 часов на выполнение.
      Обычно выглядит как явно тестовое.


  1. rezdm
    28.03.2017 21:45

    Я вот во второй раз нанимаю девелопера в команду небольшую.
    Всех прошу выполнить тестовое задание, но дома, «в любимом кресле», за любое необходимое время (в разумных пределах). Нормуль, сразу видно +- лапоть, что человек делает.
    Когда нанимали бекенд-девелопера, я (мы) предлагали на выбор два задания — одно реализовать интерфейс, второе — наоборот, как угодно, но задача с заковыком.
    Когда нанимал на фронтенд, задание наоборот было «открытое».

    Короче говоря, считаю, что так делать — добро.


    1. singlevolk
      28.03.2017 21:53

      это просто вопрос, без подковырок(вдруг не правильно поймете).
      1. Вы бы взялись делать такое задание:
      а. — если бы работали
      б. — если бы не работали, но активно искали работу(то есть затраченное время без каких либо гарантий) или потратили это время на поездки к работодателю на собеседование
      2. как бы Вы отреагировали увидев Ваше решение на реализе, без приглашения Вас на работу?
      3. как бы Вы отреагировали, если бы человек предложил прислать свои исходники с решением схожей задачи? Или предложил бы оплатить его труд?
      4. каким образом Вы решаете, что задачу решил кандидат, а не фрилансер, сват, брат?


      1. rezdm
        28.03.2017 22:40
        +1

        1. Был в такой ситуации и в (а), и в (б), делал
        2. Не знаю. Как бы считаю, что контора, которая выдаёт задания, которые подходят ей в лоб в функционал — слегонца неэтично. Наши задания заведомо не для продакшна — ну то есть по внешнему виду, т.п. Задания «из другого мира».
        3. Да руками-ногами «за». Только время сократит.
        4. Вопросами о коде. Если человек проходит просто «просмотр кода», следующая встреча — онсайт в офисе, и там несколько вопросов. Читеров пока не попадалось.


        1. singlevolk
          28.03.2017 22:46

          Спасибо.


      1. ggrnd0
        28.03.2017 23:21

        1. Я в 2016-м искал работу полгода.
        За это время успел устроиться в банк и уволиться в конце испыталки по собственному.
        Если бы я заранее знал что так будет, то я бы спокойно сидел на старом месте, и вечерами через день -два делал тестовые задания.

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

        2. Обидно, но вот когда меня звали в Банк-Страхование я отказался от такого же задания.
        На самом деле задание было похоже на 2-е, однако более мелкий кусок, а не все сразу. плюс был выбор какой кусок делать.
        Но я не стал его делать не потому что задание большое, у меня было достаточно времени.
        А потому что задание было непроработанное, у меня были определенные претензии к выбранной архитектуре. И на мои вопросы ПМ отвечал по одному через сутки.
        И вообще мне реально показалось, что вот он может кинуть…
        Иди потом, судись с Банк-Страхование =)
        Хотя даже если б и кинули, я б забил. Есть дела куда интереснее чем бодаться с кем-то там из-за чего-то там…

        3. не понял вопроса.

        4. Если дать кандидату достаточно свободы выбора реализации, то можно просто спросить об обосновании принятого решения.
        Если чего-то не знает или откровенно врет, это можно выявить.
        А по факту, определить, что вот 60% он сделал сам, а остальное загуглил/попросил друга нереально.

        P.S. А вообще, докажи что ты не верблюд.
        Вот мы тут распинаемся, объясняем тебе свою позицию…
        А может ты и есть этот кандидат на пост тимлида, начальника HR в IT или еще чего профильного…
        И вопросы, что ты задаешь, тебе задали на собеседовании и дали время подумать?


        1. singlevolk
          28.03.2017 23:27
          +1

          На З.Ы, — а может быть.
          3 больше к работодателю.
          Ну, а на самом деле, просто стало интересно. Вдруг я один такой дурак и посылаю с такими заданиями зря. Вдруг у нас не отменили крепостное, а я не в курсе.
          И Спасибо!


          1. ggrnd0
            28.03.2017 23:38

            3-а. А почему нет? а вдруг похожа на 99.999%? Ну или пусть на 70%… Так даже интереснее.

            3-б. Я бы предложил сократить объем реализации до некоего MVP, а по остальной части выполнить поверхностный анализ. Умение договариваться тоже важно.

            А вот платить бы точно не стал. Вот зачем платить верблюду? Я его не знаю…

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

            А лучше взять уже готовый кривоватый модуль и просто посмотреть, а что другие могут предложить… Вдруг что и выйдет полезное из этого?

            P.S. из любого конфликта выход один — поиск компромисса.
            Как его искать и прочее это уже личное дело каждого конкретного верблюда.
            Рынок сам сделает свое дело, поможет достойным найти друг друга.


      1. mrsantak
        28.03.2017 23:41

        1. Немножко не мой профиль, но если бы работал, то точно нет. Если бы не работал, то может бы и потратил, если бы задачка понравилась :)
        2. Компания ушла бы в мой черный список. А так, мне не жалко, я уже фан получил решая интересную задачку.
        3. Про оплатить — не вариант, обычно на такое просто бюджета нет. Насчёт прислать свои исходники — если у человека есть свои исходники, то нет смысла ему ТЗ давать.
        4. Никак, в найме вообще нет 100% критериев.

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


        1. rfvnhy
          29.03.2017 21:35

          > Насчёт прислать свои исходники — если у человека есть свои исходники, то нет смысла ему ТЗ давать.

          Вполне можно. Тогда кандидат может предложить какой-то ближайший по его мнению вариант, который у него уже есть.
          «а вот я вот такую, очень похожую на вашу, задачу решил вот так:.....»

          Если задача была тестовой, то грамотные собеседователи вполне могут принять такой ответ. Если же нужно именно решение задачи и кидалово кандидатов — то 100% не примут такой вариант.
          Хотя есть еще другой вариант — что без прохождения именно такого тестового задания не устроиться. Но это все же или в крупных конторах или когда собеседование проводит нанятая контора, когда с реальной конторой-заказчиком встречается мало кандидатов и задача отсеять любителей… Но при этом все же задачи не должны быть очень масштабны…


      1. LynXzp
        29.03.2017 17:39

        1. а нет, б возможно.
        2. Запостил бы где-нибудь «имя компании кидалово», перед собеседованием мне кажется все гуглят компании, на саму компанию забил, иметь с ними дело — себе дороже.
        (не работодатель но отвечу)
        3. Чуть выше комментарием сам предложил что такое надо оплачивать. А если заранее подготовленный то п.4 + хотя бы маленькое устное задание (мне кажется это минимальный компромисс, но все равно не дотягивает до тестового задания).
        4. Пальцем в код, «а если тут изменить?» (студентом не были?). В любом случае потом устное собеседование (и если лабы в универе «палились» сделанные людьми примерно одинакового уровня то такое уж подавно.


  1. lair
    28.03.2017 22:07
    +2

    Ну и я вам напишу, что тестовые задания не созданы одинаковыми. Описанные в посте у меня вызывают отторжение, я бы такие реализовывать не стал. Но я в своей жизни встречался с заданиями (в том числе сравнительно продолжительными), по которым было очевидно, что они не имеют практической применимости.


  1. aamonster
    28.03.2017 22:42

    1 ещё под вопросом, а 2 — однозначно в ответ надо называть стоимость разработки, если готовы оплатить — можно разговаривать (достаточно большой объём и возможность последующего использования результата заказчиком).


  1. Antelle
    28.03.2017 22:47

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


    1. samodum
      29.03.2017 00:25

      Если хотят посмотреть код, то для этого есть гитхаб.
      А насчёт подсказок, есть такое. Мне коллега рассказывал, как проходил одно собеседование в Ozon-Travel.
      Ему задавали вопросы о приложении-конкуренте, над которым он раньше работал и записывали решения на бумажку. После чего попрощались с ним.


      1. Germanets
        29.03.2017 10:25

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


        1. Ingtar
          29.03.2017 10:37

          А как в этом случае отвечать на вопросы? Без технических подробностей?


          1. Germanets
            29.03.2017 10:51

            Просто если вопрос звучит «Как вы при разработке приложения Х реализовывали то-то и то-то» — это подпадает под запрет, если же вопрос про абстрактную вещь «Как бы вы реализовали Х, какие технологии использовали бы?» — вперёд и с песнями… Нужно просто разграничить — и всё, что не касается конкретно твоих знаний и понимания вещей, а предыдущих результатов — отсылать подальше.


            1. Ingtar
              29.03.2017 11:06

              тут, мне кажется, очень тонкая грань :)
              Дискутировать можно бесконечно, предлагаю закончить и спасибо за ваш ответ :)


      1. Antelle
        29.03.2017 19:55

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


        1. am-amotion-city
          30.03.2017 08:38

          человек от этого менее способным не становится

          Зато в 2017 году он от этого мгновенно становится «давай до свидания» на любую мало-мальски серьезную позицию во всех без исключения компаниях, где хочется работать.


          1. alexeykuzmin0
            30.03.2017 11:49

            Зато в 2017 году он от этого мгновенно становится «давай до свидания» на любую мало-мальски серьезную позицию во всех без исключения компаниях, где хочется работать

            Мой опыт собеседования в десятки крупных компаний (за последние несколько лет) как в Москве, так и в варианте релокации (в том числе в Google, скажем) говорит, что, как минимум, в сфере разработки на c++ вы не правы. Про GitHub меня не спросили ни разу, в резюме не указан.


            1. am-amotion-city
              30.03.2017 12:05
              -1

              как минимум, в сфере разработки на c++ вы не правы

              Может быть, врать не буду, я от c++ довольно далек сейчас. Меня лично в Гугл звали как раз найдя код на гитхабе, сами. Только кто ж в Гугле-то сейчас согласится работать? Это ж все равно, что в Сбербанк идти.


              1. alexeykuzmin0
                30.03.2017 12:14

                Только кто ж в Гугле-то сейчас согласится работать?

                Интересно, прокомментируйте. Мои 20+ знакомых ничего плохого о них не говорят.


                1. am-amotion-city
                  30.03.2017 13:18
                  -1

                  Мои 20+ знакомых ничего плохого о них не говорят.

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


                  Дикая бюрократия, странные средства разработки, ну и вообще. Там сейчас, если хоть какие позиции интересные и остались — только в Маунтин Вью, а это — сразу мимо. Я не туземец, в Штаты ехать.


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


                  1. alexeykuzmin0
                    30.03.2017 13:44

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


                  1. corr256
                    31.03.2017 23:22
                    +1

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


                    1. am-amotion-city
                      01.04.2017 08:48
                      -1

                      Ой, спасибо, давно так не смеялся. Вы из какой рекламной брошюры выползли?


                      Во-первых, я русским языком написал: я в Штаты не поеду, даже если мне выделить команду свой язык с нуля писать. Во-вторых, пока вы тут пафосно декламируете, я в тот проект, который меня заинтересовал (в Polymer) коммичу отсюда. Прикиньте, Додсон принимает пулл реквесты.


                      То есть если вам вдруг хочется «самим делать новые средства» — оторвите жопу от дивана, разлогиньтесь на говнохабре — и just do it.


          1. Antelle
            30.03.2017 19:48

            В Microsoft, Google,… — становится? В хипстерских конторах, где надо "супергероя" — возможно. У остальных норм.


            1. am-amotion-city
              31.03.2017 08:29

              В Microsoft, Google,… — становится?

              Вообще-то да, становится. Ну если не на «просто покодить в уголке» претендовать, а на что-то вроде тимлида. Я уже лет 10 не слышал (допускаю, что плохо слушал), чтобы в Гугл взяли руководить отделом человека с пустым профилем на гитхабе.


              Но, как я уже говорил, в Гугл в современных реалиях идти работать — это совсем себя не уважать.


              1. alexeykuzmin0
                31.03.2017 11:08
                +1

                Я уже лет 10 не слышал (допускаю, что плохо слушал), чтобы в Гугл взяли руководить отделом человека с пустым профилем на гитхабе
                Руководить отделом может и нет, но senior'ом (у них это называется Level 5) — вполне берут. По крайней мере, тех, кто пишет на c++.
                Да и при внутренных собеседованиях при повышении как-то на гитхаб не смотрят, а смотрят на умение принести пользу, создать что-то новое.


                1. am-amotion-city
                  31.03.2017 12:51

                  при внутренных собеседованиях при повышении как-то на гитхаб не смотрят

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


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


    1. rfvnhy
      29.03.2017 21:37

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

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

      ну или если у компании большое самомнение…

      Но тестовое задание или короткое по времени или явно тестовое.
      или оплачивается.


      1. Areso
        31.03.2017 15:37
        +1

        К примеру, люди ищут себе С#, а у меня на ГитХабе — PHP и Python. А C# — это опыт работы, но не гитхаба.
        Или другой пример, у меня там мега-сложный проект для IIS, а им нужно десктопные формочки клепать. Когда они будут там разбираться? Проще дать задание (особенно, если оно типовое для всех кандидатов) и посмотреть на результат. Благо, эталонный результат у них есть. Даже у кадров может быть (если это задача с математическим уклоном, плюс время выполнения у эталонного алгоритма).


  1. mrsantak
    28.03.2017 23:04

    Вообще если ТЗ требует больше 8 часов разработки, то с ним что-то не так. Такое делать имеет смысл либо потому что вам тупо интересно, либо вы речь идет о компании мечты. В остальных случаях оно того не стоит.

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


  1. 4e1
    29.03.2017 00:00

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

    насчет кидалова — хз, не встречал, но верю, что такое очень даже возможно )


    1. singlevolk
      29.03.2017 00:06
      +2

      хм, а зачем тогда hr хлеб едят? помойму их задача как раз и состоит в том, чтоб отобрать наиболее преспективных кандидатов по опыту работы, резюме. Дальше задача начальника отдела/тима — провести собеседование.
      А тут один из вариантов — тим не хочет работать, придумал задачу, ну так, что б кандидаты лохами казались. Скинул hr — тот уже тупо кидает кандидату. А им и работник не нужен. Зп просто уже надо подымать. Вот и отчет идет руководству — на текущую зп кандидаты не идут, те кто идут — джуниоры, не годятся. Профит — прогерам подымают зп, берут первого попавшегося кандидата. Задача выполнена — доказать начальству что зарплатный уровень не соответствует.


      1. mrsantak
        29.03.2017 00:32

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

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

        HR зачастую заинтересованны в найме людей как никто другой — у них ЗП сильно зависит от количества закрытых вакансий.


        1. singlevolk
          29.03.2017 00:43
          +1

          А у кандидатов полно времени? Я лучше съезжу в день на 3 собеседования, чем потрачу этот день на тестовое. На собеседованиях результат лучше. минимум 50% — приглашения. У тестовых — еще не разу. Максимум — мы с вами свяжемся.


          1. 4e1
            29.03.2017 00:51

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


          1. mrsantak
            29.03.2017 07:25

            Ну тут надо понимать, что отбраковать какую-то долю хороших кандидатов — это не смертельно (при условии большого потока). Грубо говоря, на входе у нас 100 кандидатов, из них 10 хороших, 90 — плохих. После ТЗ будет 20 кандидатов, из них 7 хороших — остальные плохие, вот этих 20 уже пригласят на беседу.


            1. rfvnhy
              29.03.2017 21:47
              +1

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

              Я когда студентом был пробежался по десятку мест. В 2х местах я просто прощался после первых признаков что компания возможно будущий работодатель вообще не ценит моё время.
              Например когда предлагали прийти на продолжение собеседования в очень узком диапазоне времени, не спрашивая удобно ли мне в этот день в это время.
              Или когда сказали что во время испытательного срока (3 мес, работа была несложной и реально хватило бы первой недели для того что бы понять умеет ли кандидат выполнять эту работу, остальное время скорее на притирку в коллективе) оплата будет 20-30% от будущей з/п.
              При полной занятости, обучение не требовалось.
              Потом узнал что во второй компании это было нормально. 99% текучка с отказом после исп. срока.


            1. wadeg
              29.03.2017 23:44
              +1

              при условии большого потока кандидатов

              Неверно.
              Верно так: при условии большого потока хороших кандидатов. Но так почему-то не бывает.

              После ТЗ будет 20 кандидатов, из них

              все 20 — плохих, потому что все кандидаты с хорошим опытом гарантированно «отбракуются» уже самим фактом ТЗ.


      1. 4e1
        29.03.2017 00:45

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

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


        1. mrsantak
          29.03.2017 07:20

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


          1. Lofer
            30.03.2017 00:03

            во втором — меньше часа.

            Оценка результирующего кода тестового задания тоже чего-то «стоит».


    1. rfvnhy
      29.03.2017 21:41

      тут снова вопрос встаёт.
      задача или явно тестовая или явно короткая или явно ваш код никуда потом не будет использован.

      А если они хотят что бы десятки людей потратили по МНОГО часов что бы они их отсеяли…
      По моему это нормально если осталось 1-3 кандидата. Для их окончательной выборки.

      Опять же о хоть какой-то грамотности кода можно судить по любому большому куску исходников.
      Т.е. если не хотят смотреть ваш код совсем — уже странно.


  1. dom1n1k
    29.03.2017 00:17

    Я считаю, что тестовое задание должно занимать не более 3-4 часов.
    Исключение составляют компании-звезды, про которые общеизвестно, что уровень задач там высок, и куда хотят попасть очень многие — там до 10-15 часов.


    1. daiver19
      29.03.2017 12:31

      Это что за компании-звезды с тестовыми заданиями? Максимум что мне встречалось это нелсожная алгоритмическая задачка на спецсайте.


      1. VolCh
        29.03.2017 13:24

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


        1. daiver19
          29.03.2017 13:28

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


      1. dom1n1k
        29.03.2017 15:29

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


        1. rfvnhy
          29.03.2017 21:50

          Ну такие конторы не всегда кидают… В отличии от совсем мелких, которым часто плевать на репутацию — завтра сменят ИП/ООО и продолжат работу.
          Ну так и с такими гигантами делать тестовые задания явно выглядящие как не тестовое… Маловероятно.
          Ну и обычно там много этапов при приеме на работу. Прошел один — идет следующий.
          Просто после очередного этапа или будет хоть какая-то оплата или примут на исп. срок или… Я с гигантами не сталкивался, сужу по статьям в интернете…


  1. Lofer
    29.03.2017 00:17

    Само по себе задание в принципе не сложное. Ничего сложного нет.
    Вопрос в том, что перечень «а покажи что умеешь» очень специфический и узконаправленный, можно было бы сократить перечень раза в 2..3 точно.
    А ответ на вопросы можно было бы получить раз в 10 проще задачей.
    Похожую задачку присылали лет 8 назад. Сделал просто что бы «размяться», а большую часть заменил «заглушками» не пригодными к «практическому» применению.


  1. KvanTTT
    29.03.2017 01:26

    Я все же считаю, что если кандидат хочет устроиться на работу, то он не побрезгует выполнить и тестовое задание. А от уважающей себя компании оно будет адекватным по размеру и срокам. По крайней мере я сужу по себе — я тестовое выполнял.


    Своим кандидатам я бы давал тестовое задание следующих видов:


    • Небольшой, но вполне целостный проект. Исходный код при этом можно открывать (чтобы показывать и другим работадателям).
    • Фикс багов в проекте компании или другом проекте с открытым исходным кодом (результат, очевидно, также является открытым).
    • Тестовое задание оплачивается работадателем (рассчитывается примерное количество часов и объявляется ставка).

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


    1. Areso
      29.03.2017 06:19

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


    1. corr256
      31.03.2017 23:57

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

      Мой итог не очень… Но теперь я хочу спросить ВАС: Вы хоть одно тестовое задание сделали? Вы сделали их 10? или 100? Или из темы: «болтать — не мешки ворочать?»


      1. VolCh
        01.04.2017 12:43

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

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


      1. KvanTTT
        04.04.2017 18:00

        Вы хоть одно тестовое задание сделали?

        Конечно, я с радостью выполнил тестовое задание на последнюю работу. Оно реально было связано с тем, чем придется заниматься. Сейчас соискателем даю точно такое же. Раньше тоже выполнял.


  1. Areso
    29.03.2017 06:34
    +3

    Как технического специалиста меня приглашают для оценки уровня соискателей.
    Мы даем простые задачи, и просим их решить при нас. Можно пользоваться IDE, можно пользоваться справочниками и интернетом. Нельзя лишь искать готовое решение. Если это задачка, к примеру, на нахождение числа счастливых билетов, то мы заранее знаем результат и время выполнения лучшего алгоритма, но даже за неоптимизированные алгоритмы мы никогда еще не отказывали. Если результат соискателя отличается на 1 (см. границы массивов), это небольшой недостаток. По времени у нас все задачи занимают до часа (если человек опытен). Можно сидеть до 4 часов. Бывает, что соискатель из-за стресса не может родить ничего, мы разрешаем, если человек попросит, прислать задачи потом электронной почтой, но можем потребовать объяснить решение. Если человек решил дома не сам, это будет видно на объяснениях кода.


  1. lanseg
    29.03.2017 08:31

    Тестовые задания, вообще, специфическая вещь — не так давно мне выдали довольно интересное, но продолжительное тестовое задание, на которое я мог потратить 10-12 часов. По идее, задание хорошее, показывает и знание языка и технологий и умение писать понятный код. И фирма известная, не кинет.
    Я занимался задачей часа по полтора в день, но, дней через пять, я полностью охладел и к заданию и к организации и решил не доводить его до готовности, а довести до какой-то логической точки и отправить на проверку.
    Видимо, эта задача проверяла ещё и желание работать именно в этой организации.


  1. ZaEzzz
    29.03.2017 08:47
    -2

    Считаю, что ТЗ — это нормально.

    На должность PHP мидла и сеньора в небольшую компанию, которая не является в веб-студией, на удаленную работу даем задание написать на yii2 простенький новостной сайт с регистрацией и авторизацией используя базовые шаблоны yii2 (чтобы не думали над версткой) и в нем реализовать: CRUD для новостей и CRUD для уведомлений на страницу авторизованному пользователю и на почту. Уведомления должны навешиваться на различные события. В качестве, примера в результате выполнения ТЗ должно быть уведомление, которое видит пользователь на странице при добавлении новой новости. Результат принимается на только гитхабе или битбакете с условием, что название нашей компании нигде не будет фигурировать.

    Я — ПМ, PHP не знаю и пишу на Python'e где-то часик в неделю. В итоге на связке Python/Django решил эту задачу за 4 часа. Мне кажется, что сеньор решит ее достаточно быстро, при этом сама задача не имеет никакого смысла для продакшена — подобных решений тысячи. Но вы даже не представляете какие гневные оды пишут соискатели: они требуют оплаты (обычно в районе 20к) за ТЗ, если они возьмутся его выполнять вне зависимости от результата — работа же выполнена; требуют только собеседования с испытательным сроком и тому подобное. То есть они именно требуют и пытаются ставить условия. При этом только некоторые из них дают ссылку на гитхаб и код у них там не ахти. В результате таким образом отсеивается порядка 80% соискателей. Остальные 20% решили сделать ТЗ и большая часть прошла до собеседования. В итоге нашли действительно хороших и адекватных разработчиков.

    Сейчас стартуем проект в новой области для нас и опять в поисках разработчиков (штат расширяется) и опять начались оды.

    Какое ваше мнение как соискателя по отношению к там как мы? Все правильно делаем или мы кидалы?

    P.S. второе ТЗ из статьи для меня сюр какой-то — это действительно сильно похоже на кидалово


    1. Serganbus
      29.03.2017 09:47

      даем задание написать на yii2 простенький новостной сайт с регистрацией и авторизацией используя базовые шаблоны yii2 (чтобы не думали над версткой) и в нем реализовать: CRUD для новостей и CRUD для уведомлений на страницу авторизованному пользователю и на почту. Уведомления должны навешиваться на различные события. В качестве, примера в результате выполнения ТЗ должно быть уведомление, которое видит пользователь на странице при добавлении новой новости.

      Это готовая реализация какого-либо функционала, который можно использовать как базу для дальнейшей работы. Например, заменить шаблон верстки на свой и добивать функционал при необходимости. Это действительно может стоить денег.
      Такими тестовыми заданиями вы фактически отнимаете время у разработчика, то есть перекладываете на него затраты. Особенно неадекватно это выглядит, если тестовое дается до предварительного собеседования. Поскольку, как вы сказали, вы набирали разработчиков в небольшую компанию, то у кандидата даже нет полной информации об условиях работы, не говоря уже о заработной плате. То есть, выполняя ТЗ, кандидат в итоге получает кота в мешке в виде возможности собеседования в мутную контору. Таких однозначно нужно слать лесом.
      Если же тестовое задание дается после собеседования — это нормальная ситуация, поскольку кандидат знает, какие условия ему будут предоставлены в случае успешно выполненного тестового задания.


      1. kloppspb
        29.03.2017 10:00

        Это готовая реализация какого-либо функционала

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


      1. kloppspb
        29.03.2017 10:13
        +1

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

        Разработать программу, которая предназначена для периодического запуска и сохранения в БД данных RSS-рассылки (URL — любой, но в процессе проверки может быть подсунут произвольный; считаем что статьи отдаются полностью).

        Что тут можно увидеть:

        1. Знает ли кандидат про cronjob (да-да, бывает что и не...)
        2. Какими средствами парсинга XML владеет (в идеале — рассуждения о причинах выбора конкретного)
        3. Как он видит структуру БД для данного случая и почему
        4. Предусматривает ли средства предотвращения повторного запуска при работающем экземпляре
        5. Минимальные знания о HTTP (не забыл ли про Last-Modified)
        6. Что будет делать если список статей пришёл, но часть из них уже есть в базе (сделал обновление изменённых — плюс, сделал грамотно — жирный плюс)
        7. А если это Atom?
        8. и т.д.


        1. shamyyl
          29.03.2017 17:54

          Хорошее задание, если ищете джуна.

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

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


          1. kloppspb
            29.03.2017 18:05
            +2

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

            Кэп, это вы?
            Почему-то противники тестовых заданий заранее предполагают, что их дающие — полные идиоты, которые не могут сами понять кому какие задания выдавать. И что все ищут исключительно синьоров с резюме в полгугла :-)


            1. VolCh
              29.03.2017 18:10

              кому какие задания выдавать

              и давать ли вообще


              1. kloppspb
                29.03.2017 18:25
                +1

                Ну да.

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


            1. shamyyl
              29.03.2017 20:34

              Почему-то противники тестовых заданий заранее предполагают, что их дающие — полные идиоты

              Напомнило «Все, кто обобщает — огурцы».

              А если серьезно, то на какую позицию вы даете это тестовое задание?

              Кэп, это вы?

              «Синьором с резюме в полгугла» не являюсь. Но после такого задания интерес к организации у меня пропал бы.


              1. kloppspb
                30.03.2017 02:02

                на какую позицию вы даете это тестовое задание?

                Эта вакансия не моя. Но знаю, что на позицию человека, основной круг деятельности которого — работа с подобными вещами: RSS-потоками, API соцсетей, краулерами и т.д. На другом конце — Sphinx.

                Вообще за 20 с лишним лет так и не довелось столкнуться с чёткой градацией «джун, мидл, сеньор». Везде есть определённые задачи, и либо ты можешь их выполнять (можно считать, что на уровне мидл+), либо нет. Поэтому в любом случае проверяется наличие крепкой базы: алгоритмической (те самые «напиши на бумажке», калькулятор), языковой, знание основных протоколов (и способность вникнуть в незнакомые/придумать свои), знание архитектур ОС (межпроцессные взаимодействия etc). И с виду простенькие задания, которые перечислил, позволяют очень хорошо всё это проверить. Потому что крепкий специалист и начинающий выполнят их совершенно по-разному.

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

                после такого задания интерес к организации у меня пропал бы.

                Думаю, это было бы взаимно :) Зачем нужен человек, который даже такую мелочь сделать не может?


          1. Big_Shark
            29.03.2017 20:31

            Для джуна? Вы уверены? Джун конечно может быть и сделает это, но скорее всего все в одном классе без возможности расширения и с ужасным АПИ, а вот сделать все это грамотно, это уже совсем другой уровень. И вот как раз на таких задачах можно понять как думает кандидат, и какой у него уровень знаний.


      1. ZaEzzz
        29.03.2017 11:12
        +1

        Это готовая реализация какого-либо функционала, который можно использовать как базу для дальнейшей работы. Например, заменить шаблон верстки на свой и добивать функционал при необходимости. Это действительно может стоить денег.

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

        Особенно неадекватно это выглядит, если тестовое дается до предварительного собеседования.

        Если же тестовое задание дается после собеседования — это нормальная ситуация

        Все дорожат своим временем. И работодатель в том числе. В нашем случае если проводить собеседование с каждым перед тем, как давать ТЗ, то это колоссальная потеря времени ПМ'а и тимлида. Мы изначально наивные — верим всему, что написано в резюме и можно сказать, что предварительное собеседование соискатель прошел своим резюме (ТЗ отправляем не всем). Если он не готов подтвердить свои минимальные знания в требуемой области, то не стоит дальше вести диалог. Если мы не нравимся своим заданием соискателю, то так же не стоит вести дальнейший диалог — все должны быть довольны друг другом.

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

        Никто не запрещает узнавать о компании, задавать вопросы о работе и прочее. Кстати, бывает и такое, что задают вопросы по самому ТЗ и мы считаем это адекватным — если что-то не знаешь или не понял, то за вопросы никто не наказывает, тем более за уточняющие. Можно даже засчитать это в плюс кандидату.

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


        1. corr256
          01.04.2017 00:10

          Судя по всему, у вас ни HRа, ни Тимлида нет. У вас есть только МЫ.


          1. VolCh
            01.04.2017 12:44

            Это называется "команда".


    1. Big_Shark
      29.03.2017 17:00

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


      1. ZaEzzz
        30.03.2017 07:59

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


  1. Fed_Mikron
    29.03.2017 09:04
    +3

    Я как работодатель, либо даю относительно простое задание, которое не является законченным решением и делается за пару часов. Главное увидеть как человек подходит к делу и что за решение выдаст.
    Бывает, что даю реальное задание, которое на 1-2 дня работы, но при этом сразу оговариваю, что оно БУДЕТ ОПЛАЧЕНО в случае решения. А наймём человека при этом или нет — отдельный разговор, так как зависит от способа решения, времени, общения и тд.
    Этот подход всех устраивал и ни разу никто не жаловался.


    1. kostus1974
      29.03.2017 11:32
      +2

      даю реальное задание,… при этом… оно БУДЕТ ОПЛАЧЕНО в случае решения

      вот! вот нормальный способ убить двух зайцев сразу. тему можно закрывать с ремаркой «вот так должно быть» )


      1. ZaEzzz
        29.03.2017 12:02
        +1

        Не все готовы давать реальные задачи.


        1. VolCh
          29.03.2017 13:25

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


          1. kostus1974
            29.03.2017 16:50

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


            1. VolCh
              29.03.2017 17:10

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


              1. rfvnhy
                29.03.2017 21:56

                Так это и не тестовое обычно… Ну или см выше — оно или оплачивается или явно этот код нигде не используется или…


                1. ZaEzzz
                  30.03.2017 08:02

                  Ну мы же говорим про тестовое, а не про фриланс.


  1. trofProg
    29.03.2017 09:31

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


  1. AlexZaharow
    29.03.2017 10:02
    +4

    В просьбе решить ТЗ есть одна тонкость, о чём иногда многие забывают — не только вас выбирают, но и вы выбираете компанию тоже. Поэтому не позволяйте себя обманывать и предложите свои условия выполнения ТЗ — например, что вы считаете, что для теста можно выполнить только часть задания (в вашем случае, например, только запрет на чтение) и этого должно быть вполне достаточно, чтобы оценить уровень при этом так же сказать, что это съэкономит время и им и вам. И посмотрите на реакцию. Возможно по их реакции вы сразу поймёте, что что-то не чисто (даже если не будет понятно что именно, но неподготовленная их реакция о многом говорит) и этого будет достаточно, чтобы прекратить собеседование и не тратить на них время, а если они идут на встречу вашим предложениям, то почему бы и не попробовать?


  1. Pakos
    29.03.2017 11:10

    На собеседовании тестовые задания даём, даём время написать на бумажке (да-да-да, хабровчане любят говорить «и программировать потом тоже на бумажке?»), но есть отличие — это не должен быть код со всеми инклудами, бегиэндами, выдержанный в стиле SQL-92 и проходящий проверку W3C (зависит от задачи), большинство нормальных кандидатов смогли или на пальцах объяснить в процессе чего хотят сделать, набросав схему/основные конструкции прямо в процессе или сказали что с такой технологией не работали, но сделали бы примерно так, используя знакомые им (например, другой язык). Этап был не нужен, если человек присылал свои исходники примерно по теме (например, как ссылку на гит). Те же, кто писал в резюме «опыт 100500 лет в технологии», но реально знал мало, тот мог полчаса сидеть с, например, табличкой на пять полей и парой запросов — простым и очень простым. Присылать «напишите драйвер» смысла не видим (не я решаю в утверждении методики тестирования кандидатов).
    Сам получал ТЗ на ТЗ только один раз лет дцать назад — нужно было сделать маленький сервис на перле, сделал, принёс на собеседовании, он не заработал у них (другая СУБД и что-то ещё), поправил на месте, получил работу и в качестве первого задания встроить это на сайт. После чего переписал модуль, т.к. для демки он пригоден, а как продакшн выглядит глупо, неоптимально и чужеродно.


    1. corr256
      01.04.2017 00:15

      Ваш мнение выглядит как и ваш опыт «один раз лет дцать назад».


  1. kostus1974
    29.03.2017 11:28
    +1

    кидалово в половине или в большинстве случаев. но это нормально. для других областей это тоже «норма» (т.е. обычное явление): то же самое с объявлениями про недвижимость, про автомобили. тоже кидалово в половине или в большинстве случаев: обычно это или просто рекламная замануха (объява есть, товара по факту нет), или попытка сбыть неликвид (с авто такое часто бывает).
    отчасти в этом «виноваты» и агрегаторы, типа авито или хх.ру. они просто есть, и недобросовестные личности этим пользуются, к сожалению. интерес агрегаторов — деньги, просмотры, платные услуги — никак не пересекается с качеством контента. тот же авито просто умрёт, если перестанет публиковать (или станет реально модерировать) ложные объявления «агентов по недвижимости» или перекупов авто. буквально отвалится половина постоянной клиентуры. то же самое с хх, наверное.
    просто тщательней надо выбирать даже потенциальных работодателей.
    а по сути — надо давать задания концептуальные, конечно. например, на понимание ООП, на понимание основных концепций qt, на умение писать «красивый» код. или такие задания, где есть интересующая конкретика, но явно нет законченного продукта. это можно отнести к области контроллеров, эмбеддинга и т.п.


  1. VolCh
    29.03.2017 11:38

    При наборе джунов даю задачу, которую сам бы сделал за пару-тройку часов. Задачи не сложные алгоритмически (CRUD веб-сервис или морда к нему, на алгоритмы — это на собеседовании :) ), но объёмные довольно — полностью развернуть проект. Цель — посмотреть владеет ли кандидат нужным стэком и(или) насколько быстро может освоить его азы.


    1. arielf
      29.03.2017 17:04

      Ну джуну ещё можно, и наверное, нужно, но автор же далеко не джун


  1. varnav
    29.03.2017 11:49
    +2

    Задание, которое можно решить прямо во время интервью — ок.
    Задание, которое надо делать отдельно — не ок.


  1. smple
    29.03.2017 11:56
    +1

    1. Лучше всего разработчику завести аккаунт на github (думаю это 100% людей)
    2. Взять какой нибудь интересный проект, или небольшой инструмент который популярен в языке программирования.
    3. Это позволит развиваться самому и рефакторить код, а в случае собеседования можно прикладывать профиль на github и когда говорят что хотелось бы увидеть ваш код (можно сразу показывать напоминать о профиле на github и пример кода)

    Это имеет несколько плюсов:


    1. Вы развиваетесь как разработчик улучшая решения
    2. С вашим развитием улучшаете инструмент рефакторингом
    3. На собеседование есть что показать и смысла давать вам другое тестовое задание нет (ну может только спросить работали с таким fw или либой)

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


    1. grandmotherboard
      01.04.2017 12:41

      Лучше всего разработчику завести аккаунт на github (думаю это 100% людей)
      О_о так тонко недочеловеком меня еще не называли


  1. youlose
    29.03.2017 12:11
    +2

    Надо было это тестовое задание опубликовать на гитхабе с лицензией GPL =)
    Вот бы обломались товарищи, а автору — лишнее портфолио.


  1. Soprano
    29.03.2017 12:14

    Для этого существует испытательный срок, во время которого сотрудник и проходит тест на проф пригодность.


    1. kloppspb
      29.03.2017 12:16

      А если не прошёл — выкинутые деньги, потеряное время?


      1. arielf
        29.03.2017 12:36
        +1

        Почему время разработчика никто не ценит? У фирмы много кандидатов, но и у кандидата много фирм. Если вы работаете и неспешно ищете работу, то только и будете выполнять задания. Более того, однажды мне прислали задания несколько фирм, и выполняя одно задание, я упустил сроки в другой, более привлекательной фирме.


        1. kloppspb
          29.03.2017 12:46
          +1

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

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

          А домашки в той сфере, с которой ты знаком, не должны сильно отвлекать.


          1. corr256
            01.04.2017 00:19

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

            Возьмите 2-3-х, и заработаете много денег.


            1. kloppspb
              01.04.2017 01:06

              Учитывая что…

              1) у вас нет никакой информации о том, какие люди нам нужны, для каких задач, на каких условиях, как и о наших проектах, и о рабочих процессах

              2) домашки, которые я привёл, кажутся вам слишком сложными, и/или вы всерьёз полагаете, что они могут представлять хоть какую-то ценность для неизвестных вам проектов — квалификация ваша слишком низка

              … ваше мнение очень важно для нас.


        1. burnitblue
          29.03.2017 12:50
          +1

          К тому же, дело не только в том времени, которое тратится на «много фирм».
          Еще есть время на текущего работодателя, время на быт там, на сон, туда-сюда.

          Либо задание должно быть не большим, либо времени на него должно даваться больше.


          1. arielf
            31.03.2017 01:04

            Угу, про 'туда-сюда' можно вообще забыть.


      1. Soprano
        29.03.2017 16:34

        Получаешь свои деньги за исп. срок и идёшь дальше искать работу.


      1. arielf
        29.03.2017 17:01

        Ну что поделать, риски в бизнесе.


  1. kalombo
    29.03.2017 12:14
    +4

    У меня недавно был не совсем приятный случай тестового задания. Тестовое задание представляло из себя написание CRUD для иерархической структуры данных, приложение должно представлять из себя SPA/javascript на фронтенде, REST API/python на бекенде. На задание я потратил приличное количество времени, точно больше одного дня(всё 8 марта просидел), несмотря на то, что у меня были все наработки для реализация и я активно использовал копипаст. В итоге я получил фидбек, в котором было сказано, что тестовое задание в целом выполнено хорошо, но у них в фирме используется knockout и они смотрят в сторону Angular2, а я использовал React, поэтому готовы предложить мне сумму на четверть меньше, чем я запрашивал.
    Всё бы ничего, но, во-первых, мне можно было это сказать еще на этапе собеседования, а не заставлять меня решать тестовое задание, в котором не было сказано абсолютно ничего относительно рекомендуемого стека технологий. И, во-вторых, позиция была python-разработчик, поэтому немножко нелогично отказывать из-за отсутствия знаний по фронтедну.


    1. lovermann
      29.03.2017 18:58

      Тебя посодют, а ты не воруй! :D


    1. rfvnhy
      29.03.2017 22:01
      +1

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

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


      1. VolCh
        30.03.2017 08:59

        Весьма спорная позиция. Лично я бы максимум уточнил возможно ли использовать опен-сорс библиотеки/фреймворки для решения или всё надо с ноля писать. И то лишь потому, что встречался с ситуацией, когда код написанный как морда к GPL-библиотеке пришлось переписывать под MIT-библиотеку и то после долгих споров с юристами, которіе настаивали на полном написании с ноля. Но это для реальных задач, а для тестовых не факт, что в голову бы пришло спросить про конкретную лицензию, вопрос был бы именно про опенсорс.


      1. kalombo
        30.03.2017 09:35
        +1

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


  1. Andrey7287
    29.03.2017 12:15
    +1

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

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


  1. burnitblue
    29.03.2017 12:15

    Если работодатель действительно хочет не кинуть, а проверить знания и заинтересован в кандидате — почему бы не сказать ему «простите великодушно, у меня нет времени на такую большую штуку», и работодатель подобрал бы другое задание? Вот честно, не знаю, насколько я сейчас наивна, но такое общение кажется взаимоуважительным.

    Если ответ а-ля «нет, с какой стати» — ну это большой повод задуматься, т.к. собеседование собеседованием, а работать дальше придется вместе не три рабочих дня.

    Мне кажется, тестовое задание должно занимать не более времени одного отдельного собеседования — т.е. час-полтора.


    1. VolCh
      29.03.2017 13:41

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


      1. singlevolk
        29.03.2017 14:16

        то есть получается если кандидат хорошо владеет, для примера, шарпом и sql, но никогда не работал с entity framework, то он вам не подходит? фактически этим вы низводите программирование до знания узких библиотек.


        1. VolCh
          29.03.2017 17:17

          Не получается. Получается, что он будет делать задачу не 2-3 часа, а 10-20, например. А мы посмотрим насколько быстро он обучается.


          1. JSmitty
            29.03.2017 18:19
            +1

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

            Если человек вам по стэку не подходит, и вы не готовы ему платить за освоение стэка — очень некрасиво воровать его время под предлогом «тестового задания».


            1. VolCh
              29.03.2017 18:45
              +2

              Мы проверяем его навыки обучения, если он не знает стэка. Задание минимальное не покрывает и 20% того из стэка, что понадобится на реальных задачах. Если за 20 часов он изучит 20% стэка, то мы его резюме переложим в папочку "выбрать", а не "отказать". Бывало, что для человека, который за 20 часов освоил 50% нужного стэка, мы выбивали дополнительную вакансию у руководства, потому что не могли выбрать из двух кандидатур: один почти всё, что нужно знает за три года опыта, а другой за 20 часов его догнал почти :)


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


              1. corr256
                01.04.2017 00:36

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


            1. lair
              29.03.2017 18:58
              +1

              Если человек вам по стэку не подходит, и вы не готовы ему платить за освоение стэка — очень некрасиво воровать его время под предлогом «тестового задания».

              Ну так вроде как никто не заставляет делать тестовое задание, если стек не знаком, и ты не хочешь с ним знакомиться.


  1. mickvav
    29.03.2017 12:25

    Как-то подбирали фрилансера под довольно толстую веб-задачу, в качестве тестового задания выложили не связанную с темой и очевидно не нужную в продакшене задачу — http://wiki.linkintel.ru/index.php/Rearrangements. Из 20-ти человек с мойкруга, которые указывали, что ищут подработку и имели более-менее нужный skill-set, за тестовое задание взялся ровно один. Сделал. Его и взяли. Как-то так.


  1. lexikon
    29.03.2017 13:21
    +1

    Считаю такие задания полнейшим кидаловом! Просят отверстать адаптивные email письма под все платформы, коих более 20.
    Если результатом твоего задания будет конечный продукт, а в конце просят предоставить исходный код — стоит задуматься.


  1. Roman_Skalov
    29.03.2017 13:27
    +1

    У меня такое ощущение, что автор не вполне осознаёт всю глубину глубин. Я недавно отправлял резюме в одну компанию (правда, там предполагалась удалённая работа на иностранцев, в собственно русских компаниях цифра может быть другая), так они мне отписали, что получили 250 резюме (!) Отсюда и берутся все эти тесты. По моим ощущениям, как минимум 90% получивших тесты даже не начинают их делать.

    Если, например, посмотреть вот этот тест, который сам по себе издевательство https://my.rpsins.com/resume/ когда я через него продрался, оказался там зарегистрирован где-то 650-м.

    По мне, так адекватный тест (не кидалово) должен иметь такой вид, что для его выполнения какие-то навыки нужны, но в реальной жизни он бесполезен. Драйвер, блокирующий все файлы с цифрами в именах — это вещь бесполезная. То же самое — поиск файлов (очевидно, есть уже реализованные поиски). Меня вот один раз попросили написать простенький код на языке BrainF**k. Три раза просили написать на JavaScript таблицу, отображающую содержимое JSON (ясно, что уже есть стандартный jqGrid и т.д.)

    Что касается мыслей нанять фрилансера делать за Вас тест — вот сами подумайте. Если поиски работы затянутся, таких вот тестов вполне может прийти штук 50. Мне вот на этой неделе 4 теста пришло. И для каждого нанимать фрилансера, и выбрасывать на это деньги? Ещё некоторые тесты бывают онлайн в режиме парного программирования — вот прямо сейчас садитесь и пишите. Тут никакой фрилансер не поможет.

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


    1. arielf
      29.03.2017 16:58
      +1

      Вообще, большое количество плохих или 'no name' кандидатов говорит о низкой позиции или или иной проблеме. Чем ниже вакансия — тем больше желающих, ибо они думают в стиле: 'Ну уж уборщиком собачьего дерьма меня точно возьмут!' Очередь желающих работать охранником в 'Ашане' видна с Луны. Целые кипы анкет и конкурс как в космонавты. В то время, как исследовательские отделы больших компаний часто недоукомплектованы. Пришлют им может и больше резюме, но реально они будут рассматривать лишь кандидатов с определённым образованием, нужным опытом, списком работ и рекомендациями. А их внезапно не так уж много. И для хороших кандидатов конкуреция ниже. Вряд ли человеку, работавший ведущим инженером в Samsung предложат написать драйвер при приёме на работу в Philips. Поэтому выход один: любить свою работу и быть в ней в числе лучших. Чтобы при наборе вашего имени в google.com всё было ясно. :3


    1. rfvnhy
      29.03.2017 22:05

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


      1. Roman_Skalov
        30.03.2017 11:24

        Я считаю цифру 650 вполне заурядной. Когда я сам участвовал в отборе кандидатов (Питер), нам через сайт вроде Job.Ru недели за три пришло порядка 40 резюме, дальше мы просто перестали считать. Самая заурядная должность с з/п средней по рынку.

        Если же речь идёт об иностранной компании, которая принимает на удалённую работу людей со всего мира, в т. ч. русских, украинцев, индусов и пакистанцев, и эта вакансия висит у них на сервере не три недели, а, скажем, год, цифра 650 будет вполне ожидаема.


        1. corr256
          01.04.2017 00:41

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


          1. Roman_Skalov
            01.04.2017 09:11

            Сейчас я никого не набираю на работу, я сам ищу работу.


  1. Mimus_spb
    29.03.2017 15:24

    Тестовые задания это суровая необходимость.
    Слишком много wannabe-погромистов нынче на рынке.


    1. kalombo
      29.03.2017 18:02

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


      1. mrsantak
        31.03.2017 20:21

        Одно другому не мешает :)


        Хотя не понимаю хейт по поводу "кода на бумажке" — если речь идёт о мелких задачах и никто не докапывается до синтаксиса, то какая разница где его писать?


  1. undersunich
    29.03.2017 17:54

    За свою жизнь переделал немало тестовых заданий сроком реализации от 2 часов до 1 недели.Даже один раз попросили игру сделать.И такое было.Пришел к выводу что если у человека много свободного времени(или он не ценит время как категорию) то пусть выполняет.Лучший выход здесь это ПЛАТНЫЕ тестовые задания.Оплата должна быть в любом случае независимо от того приняли человека или нет.Платить надо по ставке на которую претендует человек деленной на 2.Да и еще.Из моей практики(20 лет) никогда не удавалось заработать нормальные деньги в тех конторах которые требовали выполнить тестовое задание.


    1. kalombo
      29.03.2017 18:10

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


      1. Areso
        29.03.2017 19:04

        1. Может и найдутся. Кто-то претендует на позицию А, к ней прилагается задача Б, срок выполнения задачи 4 часа решением менеджера и подтвержденная разработчиком (решать можно дольше, но компания готова оплатить 4 часа). Ставка, пусть будет, 100 000 рублей. За 4 часа это 2500 рублей, делим на 2, это 1250 рублей. Причем нам не важно, сколько кандидат с ней пурхался по факту.
        1250 рублей это 1-2 часа на фрилансе.
        2. Делать тяп-ляп будут, и будут требовать деньги, тут вы правы.
        Я не открою Америку, если скажу, что многие разработчики (не все) именно так и работают. Тяп-ляп и ждут зарплату. По разным причинам получается так (мотивация, сроки, отсутствие знаний, упрямство, и т.п.), но так получается.
        3. Скандалы можно предотвратить лишь функциональным описанием задачи (данные на входе и ожидаемые данные на выходе) и наличием теста к задаче. Присланная задача прошла приложенный к ней тест? Должна быть оплачена, независимо от того, насколько там внутри ужас-ужас.


      1. undersunich
        29.03.2017 21:38

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


  1. vkrestnikov
    29.03.2017 18:59

    Конкретно тестовое задание с драйвером не сложное, я даже знаю в какой компании его предложили.
    Сам его решил за 2 вечера.


    1. singlevolk
      29.03.2017 19:02

      И Вас взяли на работу?


  1. Roman_Skalov
    30.03.2017 11:11
    +1

    Я ещё так скажу, что, если искать удалённую работу за границей, где платят гораздо больше, чем в России (что с падением рубля стало особенно актуально), там тесты присылают все. То есть вообще все. 100%. Иногда предлагают просто «поболтать», с целью понять уровень английского, но потом тесты будут обязательно, причём два или три.

    Выбора тут нет вообще никакого, а на любые попытки подвинуть работодателя он довольно прямо отвечает, что «впереди вас есть ещё несколько очень интересных кандидатов». Некоторые (очень мало) работодатели готовы подвинуться по срокам, если сможешь внятно обосновать, многие в случае отказа прямо говорят, что можно снова обратиться к ним через 3-5-6 месяцев, но это всё. У меня был случай, когда лежал с температурой и был небоеспособен, но на предложение подвинуть срок меня прямо спросили, хочу ли я эту работу.

    Также за границей очень популярны сайты с автоматизированными тестами на алгоритмы, вроде Codility, HackerRank, TestDome и т. д. Тут работодатель экономит своё время по максимуму, он даже не смотрит код, который написал кандидат, достаточно посмотреть автоматический отчёт с сервера, что прошли все юнит-тесты.


    1. arielf
      31.03.2017 00:54

      Ну, при устройстве заграницу цель оправдывает затраты времени. Если вам пришло приглашение из Silicon Valley можно надеть юбку из соломы и сплясать папуасский брачный танец. И автоматизированные тесты на алгоритмы — очень хорошая практика. Я их выполнял. А когда вы получили пример из очередного ООО 'Вектор', и им нужно прислать файл проекта Visual Studio (хотя ясно сказали кадровику, что не работаете в Windows) настроение уже совсем другое.


      1. Roman_Skalov
        01.04.2017 10:12

        Да в Silicon Valley тоже полно таких же ООО Вектор, только на американский лад. И тесты с использованием технологий, которые я не знаю, и в резюме не упоминал, мне присылают довольно часто.


        1. arielf
          01.04.2017 16:19

          У них принято говорить Acme Ltd. ;-)


      1. Roman_Skalov
        01.04.2017 15:56

        И кстати да, .NET теперь пришёл в мир Юникса )) Если Вы не в курсе (многие ещё не в курсе), погуглите Visual Studio Code и .NET Core.


        1. am-amotion-city
          02.04.2017 08:07

          Это не называется «пришел в мир юникса». Кое-что как пилили на моно, так и пилят. Для новых проектов — я очень сомневаюсь, что кто-то в здравом уме выберет .NET именно для юниксов. Портировать легче — да. Новые проекты — он тут никому не нужен, этот .NET, у нас есть куча стеков гораздо разумнее, интереснее и провереннее.


          1. Roman_Skalov
            03.04.2017 13:13

            Ну да, .NET нужно ещё побороться за место под солнцем Юникса. Я видел статистику, что последние по крайней мере года 4 Ява примерно в 4 раза популярнее, чем C#. Вот они так и зашевелились.

            Когда я разбираю алгоритмические задачки на HackerRank, там большинство пишет на Яве, реже Питон, ещё реже C++. C# очень мало.


            1. am-amotion-city
              03.04.2017 14:56

              алгоритмические задачки на HackerRank

              Дык ясное дело, на эрланге, небось вообще нет, потому что инструмент принято выбирать по задаче, а алгоритмы — явно не самое сильное место шарпа. Удивлен наличию в этом списке C++.


              Хотя лично я алгоритмы бы на Хаскеле или D пилил, если уж.


              1. mrsantak
                04.04.2017 00:31

                А чего такого нет в шарпе, что на нем алгоритмы плохо писать?
                И что не так с плюсами?


                1. am-amotion-city
                  04.04.2017 08:37

                  С плюсами все так, просто на плюсах все алгоритмы уже стопиццот раз написаны же, какой смысл велосипеды строить?


                  А шарп — ну, на мой непросвещенный взгляд, язык разрабатывался не для алгоритмических решений, и любой, кто владеет хотя бы пятью разными языками — выберет что-то другое. Уже упомянутые мной Haskell или D, или уж R, если хочется быть попроще и поближе к жизненным реалиям.


                  1. wAngel
                    04.04.2017 10:07

                    А вот интересно. Как обстоят дела с применимостью функциональных ЯП в ACM-like задачах, где требуется иметь очень хорошее представление о вычислительной сложности операций, которое формируется в т.ч. за счет использования явных императивных конструкций?

                    Расскажите, плз, кто знает.


                    1. am-amotion-city
                      04.04.2017 11:28

                      представление о вычислительной сложности операций,
                      которое формируется в т.ч. за счет использования явных императивных конструкций?

                      А я-то, старый дурак, всю жизнь думал, что представление о вычислительной сложности операций формируется умением оценить биг-о (для композитов — умением сложить несколько разных). При чем тут императивные инструкции?


                      Или вы думаете, что в функциональных языках все до сих пор гадают «какой же мощности у нас тут проход по списку? Интересно, хотя бы меньше, чем O(N?)?!»


                      1. wAngel
                        04.04.2017 11:35

                        Я поэтому и спросил, т.к. не в курсе положения дел, и не делал никаких утверждений.
                        Если вы знаете — расскажите, плз.
                        Популярно ли решать задачи на ФЯП? Эффективно ли с точки зрения времени выполнения (по сравнению с другими) и, собственно, самой реализации?


                        1. am-amotion-city
                          04.04.2017 17:09

                          Популярно ли решать задачи на ФЯП?

                          Кхм. Ну, некоторые решают, да. Уверен, вы сами слышали про такие казусы.


                          Эффективно ли с точки зрения времени выполнения (по сравнению с другими)
                          и, собственно, самой реализации?

                          С какими другими? Сравнивать функциональные языки (все) с другими (sic!) по производительности — это все равно, что сравнивать локомотив и самолет по грузоподъемности.


                          В современном реальном мире задачки решают ради процесса, а не ради результата. Если у меня производительность упрется в, ну не знаю, сортировку — я через NIF вызову boost какой-нибудь. Но такого не произойдет, потому что в реальном мире никто ничего не сортирует в таких масштабах. Надо смотреть на узкие места данного конкретного случая. Никакое решение фактически никогда не экстраполируется на другие, пусть похожие, варианты. И, скорее всего, затык будет не в алгоритме, а в пропускной способности какой-нибудь железяки.


                          А если вы решаете задачу ради решения — какая разница, за какое время она выполнится? Олимпиады? — Там вроде сейчас принято бороться за зругие ценности, хотя могу и ошибаться.


                          Скажу так: мне за последние 15 лет моей разноплановой девелоперской жизни, со сложными иногда задачами, никогда не приходилось отказываться от продуктивного языка в пользу «мифологически быстрого». Максимум, что было — я биндил готовые c-библиотечки в нужные места.


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


                          Возможно, у кого-то другой опыт. У меня — такой.


  1. Lofer
    30.03.2017 12:17

    Заметил пару аргументов «за» тестовое задание:

    • Если изучим код кандидата и если он «хороший», то и програмер хороший.
    • Если человек готов «вложиться на энтузиазме» в изучение новой технологии, то и програмер хороший, обучаем и т.д.


    А если попробовать рассмотреть эти два аргумента немного с другой точки зрения?
    1. Что значит «хороший код»?
      Для этого нормальная компания регламентирует свой «Code Style v xx.xx» и регламентирует дизайн в рамках выбранных технологий для проекта.
      Код кандидата будет с таких же позиций рассматриваться или абстрактного «красиво»?
      Именование в «непонятной логике» — плохо?
      Стратегия обратки ошибок «непонятно» — плохо?
      Для простого примера из 5 классов кандидат навернул еще 10 классов что бы впихнуть все популярные шаблоны проектирования это оценить как?
      Кандидат идиот, который сделал избыточно для «простого примера» или грамотный специалист, который предусмотрел в коде все, вплоть до марсианского летоисчисления?
      По идее нормальный кандидат это тот, кто будет следовать CodeStyle и дизайну приложения и при случае аргументированно объяснить «почему можно/нужно сделать лучше».

    2. Что значит «вложиться»? Выучить API? Смысл ?! Это показатель краткосрочной памяти и не более. Возможно скорость гугления.
      Если что-то сложее чем «наваять форму» вроде что-то для Sharepoint / CRM / Service Bus / DB и т.д. то дома или не должно быть лицензий или куча виртуальных серверов, да и развернуть инфраструктуру для такого «простого теста» это далеко не 5 минут.
      Эмпирическая оценка изучения «новой технологии» в смежной области занимает 1...4 недели. Компании выгоднее взять адкватного обучаемого кандидата и прокачать его.
      Диффузия знаний — через месяц всех уравняет.


    Как это «оценивает» тестовое задание, тем более если методология оценки «красиво / правильно / достаточно вложился» субъективна и кандидату не предоставляется? Не понятно.


    1. alexeykuzmin0
      30.03.2017 12:21
      +1

      Что значит «хороший код»?

      Не согласен с тем, что это субъективно. Если человек в 100-200 строчках нарушил каждую букву из SOLID, то это объективно плохой код.


      1. Lofer
        30.03.2017 12:38
        -1

        Если человек в 100-200 строчках нарушил каждую букву из SOLID

        А с какого хр… SOLID стал последней инстанцией, за нарушения заповедей когорого полагается «хорошо, но потом сжеть на костре» ?! Это же набор рекомендаций и не более.
        Предположим, что все вызовы запихнули в один интерфейс Web Service. Это хорошо или плохо? С точки зрения SOLID — ужасная ересь. А с точки зрения бизнеса — отличная штука ибо не нужно нанимать нового админа и нету нового гимороя с оркестрацией.
        В противном случае это просто «карго культ» SOLID, а не взвешенное решение, на основании объективных метрик.


        1. alexeykuzmin0
          30.03.2017 12:48
          +1

          Да, бывает такое, что известные рекомендации приходится нарушать. И для каждого такого нарушения должна быть веская причина. В вашем примере «не нужно нанимать нового админа» — причина для нарушения известных рекомендаций, ну, а ее вескость зависит от ситуации.
          Но на практике куда чаще встречаются просто некомпетентные люди, которым «проще написать так, а потом хоть трава не гори». И их код, как правило, хорошо видно именно по тому, что широко известные рекомендации массово нарушаются без каких-либо причин.
          Если ситуация спорная — стоит всегда пригласить разработчика и обсудить его код. Разумеется, компетентный специалист всегда сможет рассказать, почему он сделал так, а не иначе.


    1. VolCh
      30.03.2017 12:29

      Код кандидата будет с таких же позиций рассматриваться или абстрактного «красиво»?

      Если до кандидата code style и требования к архитектуре доведены не были (как обычно бывает), то рассматриваться будет с позиций абстрактного "красиво". Чем ближе код теста будет к реальному в компании, тем выше шансы кандидата получить оффер при прочих равных.


      Компании выгоднее взять адкватного обучаемого кандидата и прокачать его.

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


      1. Lofer
        30.03.2017 12:46

        написать что-то работающее с использованием незнакомой технологии.

        Почему вы решили, что кандидат не знает? Не указал в CV?


        1. VolCh
          30.03.2017 12:51

          Сказал, что не знает, когда эйчары спросили " у нас в вакансии семь основных технологий, у вас указано пять из них, что с остальными?".


    1. kloppspb
      30.03.2017 12:34

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

      регламентирует дизайн в рамках выбранных технологий для проекта

      Скорее нет. Наоборот, выбор реализации кандидатом — это возможность поговорить и о его причинах, и о других путях. Что даёт представление о владении материалом в принципе.
      при случае аргументированно объяснить «почему можно/нужно сделать лучше».

      Да.


      1. Lofer
        30.03.2017 12:42

        Скорее нет. Наоборот, выбор реализации кандидатом — это возможность поговорить и о его причинах, и о других путях. Что даёт представление о владении материалом в принципе.

        А собеседование без «тестового задания» это не покажет за минут 5 общения?


        1. VolCh
          30.03.2017 12:53

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


        1. kloppspb
          30.03.2017 12:56
          +2

          Может покажет. Может не покажет. Может в параллель, а может перпендикулярно. К тому же языком болтать (ok, «иметь хорошую теоретическую базу») и писать код — совершенно разные навыки.

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


    1. Roman_Skalov
      01.04.2017 15:41

      Что значит «хороший код»?


      Странное какое-то замечание. Вы вот сами не видите разницу между говнокодом и нормальным кодом? Совершенно необязательно ссылаться на «Code Style XX.X», SOLID, Agile и Xtreme Programming. Если в каком-то конкретном случае непонятно, спросите у потенциального работодателя.

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


      1. Lofer
        01.04.2017 17:21

        Вы вот сами не видите разницу между говнокодом и нормальным кодом?

        Это «эмоциональная оценка». Должно быть какое-то метрическое объективное измерение, в том числе и «экономическое»
        При выборе между «говнокодом» который будет стоить будет стоит 10 денег и «классным кодом» ценой в 30 денег, если оба позволят «заработать» 100 денег выбор очевиден. Это будет «говнокод» за 10, а не «красивый» за 30.


        1. Roman_Skalov
          01.04.2017 18:09

          Очевидно, для прохождения тестового задания такие экономические критерии неприменимы. Тут цель не заработать «икс» денег, а чтобы код понравился тому, кто будет делать code review. Причём практика показывает, что делающие review тестов зачастую люди очень злые, которые хотят побыстрее избавиться от горы тестов каких-то совершенно левых для них чуваков. Мне, например, было заявлено на один тест, что он «looping», хотя там была рекурсия с совершенно нормальной базой, которая не зацикливалась точно.

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


        1. youlose
          01.04.2017 20:22
          +2

          ну потом-то «говнокод» расширять надо будет за 20/40/80/… (сложность будет расти и нелинейно), а «классический код» — также по 30 и будет заходить (ну может быть и будет сложность расти и поддерживаемость усложнятся, но не так быстро как в первом случае)


      1. Lofer
        01.04.2017 17:37

        А с точки зрения «техспеца», который выставляет счет за «красивый код» — выгоднее «красивый код.» Его экономика/бумажник основан на «красивом коде». Соответсвенно и подбирать нужно окружение под «красивый код». Иначе в чем разница? Иначе выльется в «научи бобра борщ варить и до свидания ...» с точки зрения бизнеса.


  1. alexeykuzmin0
    30.03.2017 12:19
    +1

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

    Грубо говоря, тестовое задание — это то же самое для оценки работодателя, что и задачи на алгоритмы и «накодить на бумаге» для оценки вас.


  1. arielf
    30.03.2017 20:25
    +1

    Ещё один момент. Многие здесь писали, что больше половины кандидатов отказались от выполнения заданий и таким образом отсеялись. Но ведь это не значит, что отсеялись худшие. Вполне могли отсеятся и лучшие. Дело в том, что наиболее активны в выполнении заданий начинающие программисты, ибо им нужно показать себя с лучшей стороны, и пробный пример — хорошая возможность. Опытному же инженеру ничего доказывать не нужно, он в себе уверен, и ему проще перейти к следующей вакансии.


    1. Lofer
      30.03.2017 20:35
      +1

      С точки зрения бизнеса, судя по ответам, так и есть. Зачем договариваться с «равным», если можно выбрать угадавшего наиболее близко «наши внутрение стандарты», работающего не «из-за денег», а постоянно кодящего «for fun» :)


      1. mickvav
        30.03.2017 20:45

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


    1. mrsantak
      31.03.2017 20:30

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


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


    1. Roman_Skalov
      01.04.2017 15:43

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


      Да, и на следующей вакансии пришлют следующее тестовое задание)) Ad infinitum.


  1. kvothe
    30.03.2017 21:10

    На мой взгляд, тестовые задания имеют право на жизнь, если они адекватно составлены и в них не просят написать "половину проекта". Например, одно из того, что мне было приятно сделать чуть напрягшись — мне прислали файл с тестами и надо было написать программу, которая их пройдёт. Это заняло ~40 строк кода.


    С другой стороны, когда задание выглядит примерно так:


    Реализовать серверную часть приложения по сбору данных.
     
    Интерфейс состоит из 3-х методов:
     
     int init(uint64 block_size, uint32 blob_size)
     
    Метод осуществляет установку соответствующих параметров.
    block_size — размер передаваемого блока данных в байтах
    blob_size — размер хранимого blob в количестве блоков
    Возвращаемые значения:
    0 в случае успеха
    отличное от 0 в случае неудачи.
    
    ...
    
    Язык: Python

    Это выглядит несколько странно.


    1. kalombo
      31.03.2017 09:08

      Случайно, вакансия не подразумевает релокацию в Смоленск?


  1. Roman_Skalov
    01.04.2017 10:45

    Приведу примеры самых последних тестов, которые получал. Все компании иностранные. У русских компаний, может, это сейчас по-другому как-то выглядит.

    1. Написать (JavaScript) код, конвертирующий произвольный SVG в PNG. Из условий задачи можно сделать вывод, что SVG может использовать подключаемые внешние шрифты, слои, 3D анимацию и фильтры типа blur и проч. На мой взгляд, задача не выглядит кидаловом, т.к. явно есть множество готовых инструментов, которые это делают. Т.е. компания, давая это задание, явно не собирается потом как-то практически использовать результат. В ответ на вопрос о сроках было предложено выполнить «как можно скорее, время выполнения — для нас тоже фактор».

    2. C#, Windows Forms, multithreading. Написать интерфейс, который в фоновом режиме будет удалять заданную на интерфейсе директорию со всеми файлами и поддиректориями. Кидаловом тоже не выглядит — точно такой же функционал реализован обычным Windows Explorer, т.е. коммерческое использование результатов теста бессмысленно. Тест делался онлайн, было выделено 3 часа (в начале позвонили и поставили задачу, по истечении 3 часов требовалось отправить результат).

    3. Написать «на бумаге» (Google Docs) в режиме парного программирования (Скайп) функцию (JavaScript), сравнивающую значение двух строковых переменных без учёта регистра. Ясно, что задача примитивна, но на выполнение было выделено 5 (пять) минут (!)

    4. Написать на Backbone.JS карусель с картинками. Ясно, что это совершенно стандартная задача, на гитхабе можно с лёгкостью найти уже реализованные подобные карусели. Загвоздка в том, что на Backbone я никогда не работал. На вопрос о сроках мне было предложено также сделать «как можно скорее».

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

    Очень часто задают алгоритмическую задачку — в строковой переменной содержатся открывающие и закрывающие скобки 3-х разных видов, требуется проверить, являются ли они парными. Спрашивали в общей сложности в 4-х разных компаниях. Другая стандартная задача — написать код, принимающий данные в формате JSON, и отображающий их в виде таблицы (JavaScript с фреймворками или без), спрашивали в 3-х компаниях.

    А вот пример явного кидалова — evaluation project одной американской фриланс-биржи, не будем называть имён. В качестве теста было предложено написать web-application в стеке MEAN с геолокацией на ArcGIS и обменом данными через Socket.IO. Приложение хранит данные о донорах крови с их географическими координатами. Пользователь может либо добавить в базу нового донора, либо найти ближайших из базы. На выполнение было отведено трое суток по таймеру. Готовое приложение должно было также содержать юнит-тесты, которые все должны проходить. [Тут надо ещё учесть, что ArcGIS куда сложнее, чем Google Maps API]


  1. corr256
    01.04.2017 17:23

    За десяток лет, я выполнил очень много тестовых заданий. Когда я их выполнял, мне казалось, что

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

    Теперь я хочу спросить программистов, которые занимаются рекрутингом: «Вы сами хоть одно тестовое задание сделали? Вы сделали их 10? или 100»?

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


    1. Roman_Skalov
      01.04.2017 18:26
      +1

      Я не думаю, что подход — «очень быстро, пусть и с багами» является правильным при выполнении тестов. Если тест работает с багами, значит, он не работает. Если у вас есть какие-то сомнения, как вам следует расставить свои приоритеты, спросите потенциального работодателя.

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


    1. michael_vostrikov
      01.04.2017 20:27

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

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


      Кто мешает взять любого сообразительного выпускника/джуниора/миддла и за месяц протащить его по стэку?

      Как отличить сообразительных от несообразительных?
      Как быть уверенным, что через месяц он не уйдет?
      Где взять ресурсов, чтобы делать задачи этот месяц?
      Зачем таскать выпускника по стеку, если можно за этот месяц найти человека, уже знающего стек?


      Другое дело, что иногда говорят, что долго ищут и никого не нашли. Тогда да, логично взять того, кто согласен изучить все что нужно.


  1. kloppspb
    01.04.2017 17:37

    Вы сами хоть одно тестовое задание сделали? Вы сделали их 10? или 100

    Да, где-то между 10 и 100. И очень люблю их. Интересные — хорошая разминка для мозгов, даже коллекционирую их. Любые задания расцениваю как одну из характеристик работодателя, вплоть до отказа наниматься по результатам разглядывания ТЗ.

    мне казалось

    Вам казалось.

    Очевидно, что вам и люди-то не нужны

    Очевидно, что нам лучше знать что нам нужно. В данном случае можно сформулировать так: вот тем конкретным работодателям вы лично оказались не нужны.


    1. corr256
      01.04.2017 19:46

      Конечно, проще тратить время на очередное собеседование с кофейком и ощущением собственной значимости.


      1. Areso
        02.04.2017 12:31
        +1

        С одной стороны вы правы: зачастую собеседующий тешит свое самолюбие. Хотя он и решение уже знает (и вероятно не одно). С другой стороны — каждое собеседование — это несколько часов времени, включая время на подготовку к нему (подготовить среду, прочитать еще раз резюме, чтобы не задавать людям глупых вопросов, уже раскрытых в резюме/гитхабе) и время на уборку после кандидата (почистить историю, удалить проекты / ВМ), а когда у тебя куча просроченных задач, лишнее собеседование лишь оттягивает срок сдачи уже просроченных задач. А когда у тебя кандидаты идут подряд, то хоть вечером работай…


      1. kloppspb
        02.04.2017 13:49

        До собеседования доходят те с кем и поговорить приятно. Сандартная схема — телефон, ТЗ, очная встреча. И именно на ТЗ отсеивается большая часть, так как в резюме написать можно что угодно, да и в заочной предварительной короткой беседе не всё можно понять. А по ТЗ выясняется, что алгоритмическая подготовка никакая, язык знает так себе, вплоть до велосипедов вместо стандартной библиотеки, сам код разваливается до состояния «переписать с нуля» при крохотных изменениях входных данных, и т.д. О чём с таким собесдедовать?