Pull to refresh

Comments 519

Тоже так однажды проходил тестовое задание на web разработчика. Напиши одну фишку для их сайта, потом другую, на предложение третьей ответил что пусть сначала наймут. Обиделись и больше на связь не выходили. Так что кидалово в большинстве случаев
UFO just landed and posted this here
однажды
в большинстве случаев
Хорошая выборка.
ИМХО не предоставление копируемого исходного кода вполне нормальным будет.
Например отдавать только исполняемый файл. Для проверки работоспособности и дизайна уже достаточно. А исходный код только в присутствии кандидата с листов распечатки пусть проверяют.
Или сразу регистрировать/патентовать свой код и выпускать под лицензией.

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

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

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

А так это выглядит кидаловом «с бесплатной месячной стажировкой»…
Особенно если заданий больше одного. Или нет чётких критериев примут/не примут.
В общем что-то типа «договор о намерениях».
Исполняемый файл в вебе? Т.е. верстальщик вместо html присылает exe? А чо, клёвая идея!
Примеры тестовых заданий, которые вы привели, действительно — очень странные.
Я обычно даю соискателям совсем простые задания, которые даже не выглядят чем-то законченным.
При этом меня интересует в основном ход мысли и особенности реализации — этого вполне достаточно.
ну я обычно работодателям предлагаю выслать мои рабочие исходники по схожей тематике, но тут, за последний месяц 5 предложений, только выполнение их заданий. Создается стойкое ощущение кидалова.
UFO just landed and posted this here
Первое — вполне ок. Надо правда вакансию глянуть, но вообще нормальное задание.
Да, задание интересное. А на сколько у Вас бы поднялось знание русского языка предложи бы вы тестово поднять на 7 этаж грузчикам?
Увы, моих знаний русского языка не хватает чтобы распарсить ваш вопрос, но, по крайней мере, их достаточно чтобы писать наречие «насколько» правильно и обособлять деепричастные обороты ;)
хорошо. я не против. прикрываясь грамматикой — обычно прикрывают отсутствие своего мнения. и да, писал на эмоциях, не расставил знаки препинания. минусуйте.
1. Это была ваша ремарка про мой уровень русского языка.
2. Своё мнение я высказал.
3. Расшифруйте все же ваш вопрос, а то я до сих пор в недоумении.
А там расшифровывать нечего.
Посыл мысли — Что бы Вам сказали грузчики, если бы Вы предложили им тестовое задание — поднять на 7 этаж груз. Ну потом бы решили, нанимать их или нет.
UFO just landed and posted this here
Хорошая отмаза. В теории. А как насчет практики? Не пробовали? Вот я в прошлом комментарии про это и намекал. Русский язык обогатился бы однозначно.
Такие тестовые задания необходимо оплачивать как работу (на хабре обсуждалось). Так что и написать можно и перенести рояль.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UFO just landed and posted this here

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

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

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

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

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

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

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

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

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

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

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

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


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

То есть вам нужен интроверт, возможно нарцисс, желательно с не очень обширными социальными навыками общения, который компесирует это сосредоточеностью в программировании и при этом должен разделять ваши «ценности»? Ну да… практически идеальный объект для манипуляций :)
Знакомые «личности» :)
Вот какраз таки программисты, которые на работе пишут что-то, что им не нравится, а только дома доходят до «just for fun» — вот это очень подозрительные товарищи… Как можно нормально работать, если на работе этого самого фана и челленджей нет?
Может быть такому человеку стоит сменить работу, чтобы работа была «for fun» и приносила не только деньги, но и удовольствие?
Весь код, который я сейчас пишу — это код за деньги, и этот код, как и сами проекты мне нравится, я в нём вполне себе реализуюсь как программист на мой взгляд. А после работы у меня есть ещё пару-тройку часов на другие увлечения — попытки улучшить свою физическую форму(чтобы внезапно через несколько лет не получить проблемы со здоровьем, которые на той же работе скажутся), переключения на другую деятельность — книги, фильмы, банальные посиделки с друзьями(часть из которых — с коллегами)…
Бываю руководители, которые думают, что если погромист не сидит за ПэКа, то он не работает, поэтому он постоянно должен за ним сидеть.
Поэтому никаких серьезных успехов не достичь, когда от тебя ожидают сидения за ПэКа, и, возможно, написание кода. А кода гнет спадает(дома), уже доходит.
UFO just landed and posted this here
Мне лично такое убожество, как программист, работающий только за деньги, — за соседним столом не требуется

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

UFO just landed and posted this here

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

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

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

самый лучший расклад, на мой взгляд. независимо от того, фриланс или нет
До многодневного задания мы не доходили. Первая «капча», потом вживую или по инету голосовое общение, потом облегченное погружение и собственно уже оплачиваемая притирка — несложные задачки. Ну и в процессе решения этих задачек — либо взаимообогащение/притирание, либо все-таки расставание.
UFO just landed and posted this here
спасибо за мнение, оно очень важно для нас -)
UFO just landed and posted this here
когда искал работу сам — предлагал сам посмотреть образцы своего кода, скриншоты программ, форм, образцы отчетов. нередко после этого вызывали сразу на глубокую проверку знаний («дана иерархия классов с множественным наследованием, изобразите какие виртуальные таблицы функций построит компилятор „- в известном турагенстве, сразу от дверей)

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

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

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

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

Притом для Москвы 1 час сидя в мягком кресле не так чтобы соизмерялось с например часиком езды на общественном транспорте для очного собеседования и потом часиком обратно -)
>При этом меня интересует в основном ход мысли и особенности реализации — этого вполне достаточно.

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

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

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

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

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

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

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

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

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

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

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

Написание задания заняло у нас часа 3 и сэкономило нам неделю минимум.
Наша имха — если у нанимателя нет тестового задания, то ему чертовски хочется поговорить, а не нанять подходящего кандидата:)
Согласен, немного в опросе не додумал. Но, как кто не сталкивался с задачей на 20 минут. Все в основном законченные модули. Может мне просто не везет. Да я и не против выполнить задание. Но не бесплатную работу. Хотя, еще раз повторюсь, для адекватного работодателя вполне должно хватать исходников из рабочих проектов. Базу можно увидеть. Как оформляет код, как выстраивает логику. Этого по идее должно хватать. Плюс опыт в резюме.
для адекватного работодателя вполне должно хватать исходников из рабочих проектов.
Рабочих — каких? С предыдущей работы? Так они как правило под nda.
Опенсорс с гитхабом? Не показатель, т.к. «выставочный проект» и «реальная работа» разные вещи.

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

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

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

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

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

Социалка очень важна
Это бесспорно, но все же гитхаб как социалка. Вроде покрупнее есть.
Что-то не припомню покрупнее.
мы же про социалку? фейсбук… фконтакт. Вот уж где люди раскрываются.
Не надо сарказма. Мне вот важно как человек обсуждает те или иные решения, как он реагирует на критику и тд. Еще и уровень английского сразу проверяется.
Это не сарказм, это продолжение мысли о том, что для github-а делаются «выставочные» проекты.
Образ там тоже «выставочный» создается, по тем же причинам, особенно с тех пор как его как часть резюме стали расценивать и мониторить.
В итоге на гитхабе Вы видите какие проекты человек в принципе может создавать когда ему надо создать имидж и как себя может вести если ему нужно поддерживать имидж… но на работе ему этот имидж на фиг не сдался, поэтому с практической точки зрения это фигня.
А вот в фб и вк люди ведут себя более естественным образом
А в фб и вк люди с каких пор стали выкладывать более естественный код и проекты?)
UFO just landed and posted this here
Это не сарказм, это продолжение мысли о том, что для github-а делаются «выставочные» проекты.

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

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

Задача на 20 минут, абстрактная — это нормальная тестовая задача, по которым даже и вопросов не возникло бы. А тут в течении месяца 5 «тестовых», полноценных модуля.
nda — это в каком смысле, если вы не подписали с работодателем соглашение о передаче исходных кодов — то все что вы написали, является вашей интелектуальной собственностью.
Ну да, ну да, а при увольнении можно забрать всю свою работу с собой, удалив исходники у работодателя. Ведь договора о передаче исходных кодов не было, а у Вас же авторские права. Ага. А платил он Вам исключительно за счастье наблюдать Вас на рабочем месте. Сорри за сарказм, просто подобного уже лет *цать не слышали.
ну не говрите глупостей. забрать не по феншую. Это как у маляра содрать краску. Но вот право на исходники — на Вашу интелектуальную собственность — у Вас сохраняется. Почитайте законы.Если конечно в приложении договора не было прописано другое.
Да и проблема что ли — поменять названия классов.
А платили мне за работу — тоесть за то что у них работает ПО, согласно требованиям. По как что, к сожалению, за растраченную инетелектуальность, за мозги у нас не готовы платить. За физический труд запросто, за вредность производства — пожалуйста. А вот за мозги фиг.
Как говорил мой прошлый начальник — это вы, программисты, специально придумали. Чтоб вам платили, а вы фигней страдали.
Но вот право на исходники — на Вашу интелектуальную собственность — у Вас сохраняется. Почитайте законы.
Вот Вы и почитайте.
Нам даже дискутировать лениво, для нас эти споры 10 лет назад уже отгремели, при том что первый раз нам по башке за неправильное толкование (как у Вас сейчас) еще 20 лет назад прилетело:)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

кстати, ниже mrsantak Вам это же толкует, прислушайтесь.
Есть такая статья: 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-ФЗ)


Если кратко:
Авторские права — позволяют автору указывать своё имя на продукте (все помните менюшечку „About“).
Если это служебное задание — то исключительные права принадлежат работодателю, на 3 года, после передачи. Далее, по прошествии трех лет, если работодатель не сообщил, что он продляет и передает служебное задание другим лицам(то есть не покормил денежкой разработчика), то » исключительное право на служебное произведение возвращается автору".

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

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

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

Ну и по топику:
1) штука нужна для безопасников, что бы в компы свои юсб не сували, дату не сливали. Коммерческая разработка 146%.
В принципе, можете реализовать и продать нуждающимся. Спрос точно есть.
2) штука по сути шелл, мне так кажется, но тоже похоже на коммерцию или заготовку на коммерцию. Где оно может применяться — не знаю, но это не тестовое задание 147%.

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

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

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

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

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


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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ну и то, за что работодатель платит прописано в трудовом договоре и приложениях к нему. Если работодатель не внёс туда пункт, о передаче прав на результаты вашего труда, то прав у него нет — делайте что посчитаете нужным. Если внёс, то вы сами на это согласились.
так вот вопрос и возникает, как доказать по памяти я воспроизвел классы-обьекты или принес на флешке. В этом то и суть.
UFO just landed and posted this here
эм. Ну во первых — спалиться трудно, во вторых.Да ладно. Спор не о чем. Уже скучно. Я 16 лет использую свои обьекты классы в различных проектах. Постоянно пополняю и использую от с\с++ до с#… не разу проблем не было, и уверен не будет.
UFO just landed and posted this here
мы не в США, иначе были бы другие разговоры, про те же тестовые задания
В суде предложат повторить. Причем на другом примере. Вы же говорите что у вас идеальная память на код?

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

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

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

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

А еще большой вопрос, не уволят ли этого разработчика с нового места работы, после выплаты за него крупного штрафа.
Вопрос не в 'нормальности' или ваших 'понятиях', а в законе и возможностях его исполнения. Нет договора на передачу прав на код, не подписан NDA — проблемы компании. Никакого обмана и нарушения закона. Но даже если вы подписали: вы всего лишь передали кусок кода. Никто не запретит вам использовать архитектурные решения, или переписать его на другом языке. Это будет уже другая программа. Более того, даже если вы просто взяли целую библиотеку из прошлой работы, как ваш бывший работодатель докажет её использование? Исходники же закрыты.
название класса в битриксе поменять — оно конечно влетаемо. А вот если взять код, которому далеко до совершенства — там другая песня. Один фиг через пяток рефакторингов будет неузнаваем, главное не мешать развиваться синдрому NIH
>Муторно и не рентабельно. У меня куча универсальных библиотек моей разработки.
Вы их «принесли с собой», когда нанимались?
Или в рабочее время делали?
Если второе — права передаются фирме-нанимателю в полном объеме. Только _авторство_ у нас в стране по закону передать нельзя.
Т.е. вашими ФИО где-то документ в недрах конторы помечен будет.

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

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

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

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

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

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

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

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

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

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

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

Единственное тестовое задание которое мне понравилось за пару лет было не на технические знания, а на командную работу. И я всеми руками за такие задачки. Только давать их некому :D
Мы вот отказались от тестовых заданий. Просто пара задачек на собеседовании.
Тестовое задание это задание по которому можно увидеть как человек решает практическую задачу, пара это задачек на собеседовании или предварительное задание до собеседование — не принципиально, все это тестовые задания.
У меня есть гитхаб, завтра можно выходить на работу?)
Поcле прохождения собеседования — конечно ;D
Просто ради интереса, https://github.com/DevAlone?tab=repositories на какую-нибудь должность я мог бы претендовать? Из последнего кода — test_task, который писал, чтоб попасть на одни курсы по цпп(но начал делать и отправил поздно, поэтому не прошёл).
Если не затруднит конечно :)
У нас ни на какую к сожалению. ASM/C++ не используются ¯\_(ツ)_/¯.
У меня есть гитхаб

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

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

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

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

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

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

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

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

> будет 6 часов гуглить, но через пару недель — уже нет — не вижу проблемы
это очень хорошая скорость обучения или очень простые задачи…
А если нормальное обучение 0.5-1-2 года?
Тут может «спасти» если таким работникам платить в соотв. кол-во раз меньше.
Пока не доучится — сидит «стажером».
Снова вопрос специфики. Есть работы когда надо «вот прям сейчас и быстро»…
А я что, должен знать наизусть всю RTL, а то и, упаси б-же, какую-нить Boost? Не говоря уже о чём-то более специфичном. В языках, на которых писал лет 8 назад, я теперь и синтаксис-то не вспомню. Что не мешает мне к ним периодически возвращаться и успешно решать задачи. Да, с гуглом, с манами и, заглядывая в свои старые исходники. Зачем всё это держать в голове?
Ничего в гугле нет плохого, если гугление действительно не занимает по 6..8 часов.
А рубит фишку соискатель или тупо копирует нагугленное, легко определить, ведь 90% кода в интернете — говно.
>В языках, на которых писал лет 8 назад, я теперь и синтаксис-то не вспомню.
И вы указываете их в резюме и ищете работу с их использованием…
Вот только работодатель если указывает в тестовом задании что его надо выполнить за 1 час на таком-то языке, то подразумевает что работа будет в первую очередь именно на этом языке и ему желателен работник, у которого опыт именно в этом языке… и желательно посвежее…
я так понимаю, что IntelliSense в Visual Studio вы тоже выключаете? а чего оно «само гуглит»?
успешно решать задачи. Да, с гуглом, с манами и, заглядывая в свои старые исходники. Зачем всё это держать в голове?
Вопрос в другом — почему при прочих равных (а ведь равные есть, мы же не об уникальной позиции говорим) работодатель должен будет выбрать Вас (гуглящего половину времени), вместо разработчика у которого это всё и так в голове (просто потому, что он писал на языке не 8 лет назад, а пишет прямо сейчас)?
UFO just landed and posted this here
При прочих равных, если вы после собеседования разработчика, «у которого это всё и так в голове», не предложили ему место, значит никаких этих «прочих равных» и не было.
Вы странно представляете себе процесс найма. Первого попавшегося по проф. навыкам схватил и все?
Сначала собеседуют с месяцок кучу кандидатов, потом выбирают лучшего. А не так что нашли «у кого в голове есть» и на этом всё.
Ну да, вот представим, что, скажем, покупаете себе новую машину. И в голове есть некие желаемые характеристики — там, движок такой-то, расход такой-то, цвет, год и, скажем, японец. Не бывает же такого, что походил по салонам, и беру первую машину, которая формально подходит под эти характеристики. Нет, тут начинается субъективный фактор. Вон там дают кредит на невыгодных условиях, в другом месте мне менеджер нахамил, а в третьем вроде как и японец, но какой-то говнокомпании (с удивлением обнаруживаешь, что есть и такие) и др. Это трудно даже сформулировать.

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


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

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

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

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

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

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

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

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


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

Человек, пишуший FS под Linux не так интересен да? ;)
UFO just landed and posted this here

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

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

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

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

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

UFO just landed and posted this here

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

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

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

В общем, снимите, пожалуйста, корону и, если вам нужны алгоритмы, то предупреждайте об этом, а не поднимайте своё ЧСВ, говоря, „ну это же базовые вещи“
UFO just landed and posted this here
А мне кажется, если человек(а точнее 50%) не понимает какие задачи надо решать по описанию вакансии, то «тест провалил» человек, который разместил эту вакансию.
UFO just landed and posted this here
Алгоримы сортировки создавались с конце 19 века. В 50...60 годы 20 века теория сортировки отрабатывалась и оценивались алгоритмы не одним математиком и не 5 минут, которые выдают на собеседовании.

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

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

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

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

Так что вопрос с короной — очень актуален.
UFO just landed and posted this here
Особенно для кандидата, который вдруг решил что он лучше знает что именно нужно конкретному работодателю.

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

Но вопрос темы то другой: практический смысл, достоинства и недостатки
UFO just landed and posted this here
это результаты той самой практики, они же не от балды выбирались.

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

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

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

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

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

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

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

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

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

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

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

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

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

Если о знания в предметной области, то это безусловно бонус.
UFO just landed and posted this here
Базовый :)

Или «базовый» или «Это не… чётко оговоренный объём обязательных знаний.»

Доктор, Вы уж определитесь :) А то как-то противоречите самому себе.

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

Это не самодурство. Это нормальный процесс. Если бы эту часть описывали спецы по психологии/социологии они бы выразили это формальными терминами. А поскольку мы не спецы, то и выражаемся как «чайники» в стиле "… тут кампутер Каутион сломался сам..." :)
Отсутсвие общего глоссария :)
UFO just landed and posted this here
Не математик часом? Среди них чаще всего мне попадаются редкостные зануды :)

Нет. Просто приходилось из «своего кармана» оплачивать весь цикл разработки проектов, включая найм или оплату Hr контор, разгребать косяки после ну и бизнес-аналитику делать :)
Так что да… занудствовать приходилось еще как…
Приношу извинения :)
Вы не поверите, но любая программа — это алгоритм.
UFO just landed and posted this here
Зависит от целей. Просто, задавая такой вопрос, вы скорей всего найдете кандидата, который сталкивался с подобным, короче у которого набита рука на такие задачи. А умение мыслить вы не всегда сможете так проверить, слишком много факторов могут этому помешать: усталость после работы, стресс… ну, в общем, я уже перечислял это выше.
UFO just landed and posted this here

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

Усталось и стресс то же разными бывают. Если у вас был двухнедельный кранч и человек уже как зомби — странно ожидать от него хоть чего-то адекватного. Тут вопрос к работодателю, который допускает такие ситуации.
UFO just landed and posted this here
Возможно он потащился на собеседование, так как на текущей работе есть проблемы, которые приводят к такому состоянию? Всякое же бывает. Не у всех есть возможность отпроситься и придти свежими и выспавшимися. Жизнь она такая штука.
В таком случае лучше отзвониться и перенести собес. Вполне нормальная практика, уж точно лучше чем идти на него ушатанным.
Во-первых, речь идёт не о «знать» алгоритмы, а об умении составить алгоритм решающий задачу. В данном случае речь о простой задаче (по-моему мнению).
Во-вторых цель найти компетентного разработчика, а не придумать собеседование, которое пройдёт большинство кандидатов.
В-третьих, какой смысл в вакансии указывать что я собираюсь спрашивать на собеседовании? Мне интересно что кандидат реально знает и умеет, а не то что он нагуглить за день до собеседования и что он забудет день спустя. По факту я спрашиваю либо базовые вещи, либо то что заявлено у человека в резюме.
В-третьих, какой смысл в вакансии указывать что я собираюсь спрашивать на собеседовании?

Что бы не «любить моск» тому, кто откликнется на вакансию. Вы же указываете язык разработки? Это нормально предварительно знать требования, нужные в работе. Это нормально обновить «краткосрочную память» перед собеседованием.
Сколько раз было в вакансии одно, в собеседовании другое, а по факту вообще третье…

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

Базовые для вас или для кандидата? Вы редактировали лично учебные программы учебных заведений которые дают «базовые знания»? Микрософт, Оракл, IBM, Фейсбук. и т.д Вам давали на подпись «Перечень базовых знания для ??? „

UFO just landed and posted this here

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

UFO just landed and posted this here
Полностью согласен. Со всеми выраженными мыслями.
Но есть нюанс:
Вакансия водителя? Права категории XYZ
Вакансия токаря? разряд XYZ
Менедждер проекта? PMP certification exam
Cisco? экзамен/сертификат CCNA
Microsoft? MCTS экзамен(ы)
Oracle? Oracle Unified Method 5 Essentials
Список можно продолжать.
Но это все объединяет одно — очерченный набор знаний/требований, которые ссылается в конечном итоге на валидируемый первоисточник (гост/isо/производителя и т.д.)

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

Если сравнивать подходы к найму в отраслях, которым более 20 лет и более молодым «программированием» — явно наблюдаются отличия, в стиле «Я Hr/Team Lead — я так вижу» :)
UFO just landed and posted this here
UFO just landed and posted this here
Вы, смею предположить, никогда не устраивались на работу ни токарем, ни водителем, ни даже грузчиком.

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

В моем «производстве» если косяк, то это проишествие категории техническая остановка или авария (масштаба государства) или кого-то просто убьет (благо не массово).

Не знаю как сейчас, но «тогда» просто так приписать себе «3 разряд» было нереально, без атестационной комиссии с протоколом.
У грузчиков — может построже с этим :)
UFO just landed and posted this here

Есть такие вещи как профессиональные и образовательные стандарты, например http://www.apkit.ru/committees/education/meetings/standarts.php


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

Если человек идёт на собеседование на вакансию «программист» и не понимает, что его одна из его основных обязанностей это алгоритмизация задач, то он не программист.


У меня сейчас несколько приятелей проходят обучение на курсах открых при ИТ компаниях, их читают люди работающие в этих компаниях.
Не называя конкретные имена, но кампании уровня ЕПАМ, Luxsoft, СберТехнологии, Яндекс.
Самое печальное в этом всем что им не объясняли ни что такое алгоритм, ни нотации. Так… упомянули один раз. Зато будут программисты Java/C# после курсов, и часть из них себе эти компании… возьмут на работу.

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

Вы часто видели в вакансиях что-то вроде: Требуется программист. Минимальные требования «Программист 06.001 5.131118 Утвержден Приказом Минтруда России №679н от 18.11.2013» и " Разработчик Web и мультимедийных приложений 06.035"?
Но для сетевика:
Опыт работы с активным сетевым оборудованием Cisco(конфигурация коммутаторов, маршрутизаторов, не ниже CCNA)

Снимает кучу вопросов.

Можно не устраивать цирк, а просто корректно сформулировать квалификационные требования для вакансии, бережно и уважительно распоряжаясь как своими ресурсами, так и ресурсами кандидата. Вроде все возможности для этого есть. Не жаловаться потом, что приходят неакватные, безграмотные или неквалифицированные люди, которые трятят наше время.
Вы часто видели в вакансиях что-то вроде: Требуется программист. Минимальные требования «Программист 06.001 5.131118 Утвержден Приказом Минтруда России №679н от 18.11.2013»

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

Про собеседование — более менее понятно.
Откройте предложенный выше «Программист 06.001» и какой из упомянутых там пунктов, с вашей точки зрения, лучше продемонстрирует тестовое задание чем собеседование?

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

У меня сейчас несколько приятелей проходят обучение на курсах открых при ИТ компаниях, их читают люди работающие в этих компаниях.
Не называя конкретные имена, но кампании уровня ЕПАМ, Luxsoft, СберТехнологии, Яндекс.
Самое печальное в этом всем что им не объясняли ни что такое алгоритм, ни нотации. Так… упомянули один раз. Зато будут программисты Java/C# после курсов, и часть из них себе эти компании… возьмут на работу.

Все что я выше писал относится в первую очередь к middle и senior'ам. С junior'ами все конечно по-другому, junior в принципе может и не знать целевой ЯП. Там свои вопросы и свои критерии.


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

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

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

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

Применять ли тестовое задание при найме, оплачивать его или нет — вопрос баланса. Мне кажется с точки зрения здравого смысла, если работодатель дает неоплачиваемое тестовое задание на 3 дня к статье, то велик шанс что он упустит какое-то количество разработчиков. Иногда работодатель может решить что для него это приемлемо, почему нет.
UFO just landed and posted this here
Выполнять тестовое задание пару недель?0_о
UFO just landed and posted this here
> вполне за день два должен справиться
Значит этот день должен быть оплачен. Или исходный код не должен передаваться компании…

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

да написать не проблема. Но — 3 дня, по средним зп региона = 15000. Вопрос — есть ли желание впахать бесплатно на такую сумму?
UFO just landed and posted this here
ок. часто человек ищет работу еще работая. То есть 3 дня, вернее 3 ночи надо будет впахать с неизвестным результатом. Вы например готовы потратить время семьи и свое личное на что то абстрактное? то что с большей вероятностью не принесет Вам ничего?
UFO just landed and posted this here
за 4 часа — тот кто постоянно этим занимается, даже меньше по времени. Остальным 4 часа ушло только на то, что б почитать литературу.
UFO just landed and posted this here
не знаком. поищу — почитаю.
Тут же вопрос не в компании, а в адекватности. Кто даст гарантию что — это не просто прогер, которому дали рабочую задачу, на сайте от лица компании дал объявление?
Это же интернет — это же анонимность.
Если бы вопрос стоял так — собеседование в компании, выделение рабочего места — выполнение тестового, профит, тогда да, а так. ну слишком часто в нете кидают.
>выполнение тестового, профит,
Слишком много нюансов может быть.
Задача будет работать, но например код не нравится начальнику…
Тогда вполне нормально оплатить затраченное время, пусть и по очень пониженной ставке. Или не использовать этот код. Оставить его тому, кто его делал. Но тут вопрос как это обставить юридически грамотно.
Сеньер вполне за день два должен справиться…

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

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


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

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

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

Просто крупные компании не дают обычно задач на 3 суток работы.
Обычно тестовые задачи у них на 1 час максимум, а если что-то сложнее, то вас берут на стажировку/испытательный срок/…
Или оплачивают задания, как выше уже отметили. Для крупной компании это нормально.
UFO just landed and posted this here
Да — последнее время число подобных случаев возросло — видно кризис достает
Как сказано в одном умном фильме (точнее в книге) — Я чувствую это в воде, чувствую это в земле, ощущаю в воздухе — мир изменился.
Как совет — не предоставлять исходных кодов (или фрагментарно), а в бинарнике поставить закладки, скажем по дате
Предохранение — залог сохранения
Вах. Окей, сценарий.
Вы компания. Даете тестовое задание.
Вам присылают тестовое задание в котором по дате сносятся все данные с диска закладкой.
Ваша реакция?
Это к чему? — я про снос не говорил — это вы додумали — можно просто перестает работать скажем через месяц — месяца обычно хватает для принятия решения о приеме на работу.
Моя же реакция — на ваше замечание негативная — я давал совет автору, а не вам
Снос это утрированно. Смысл в том, что Вы преднамеренное закладываете в программу функционал противоположный ее назначению. К каким проблемам это может привести — непредсказуемо.
Это приведет к понимаю того, что этот человек ценит свой труд и умеет в DRM.
Мне уже доводилось встречать таких вот личностей, вы нам сделайте функциональный проект (явно не абстрактное тестовое задание), а мы там подумаем и может быть примем на вас удаленщиком или заплатим, если нам проект понравится (нет). Вкладываешь в код пару проверок. Через месяц приходят, разводят руками или ругаются, в конечном итоге или платят (если сроки горят) или ищут дальше наивных разработчиков (если сроки не горят).
Ну в большинство «функциональных проектов» можно вложить неполный функционал. Например использование не всех данных или явное их искажение или запрет на сохранение проекта или… да многое можно придумать прочитав условия конкретной задачи.
Но надо всё же указать это в сопров. док-ах, иначе уже на вас могут подать в суд «мы вашу задачу использовали для реальной работы, что бы проверить, а она нам данные испортила/полученный в результате расчетов мост рухнул/...»
Либо явно указывать что «не для реальной работы», но это все надо еще с нашим законодательством согласовать… Я просто с таким не сталкиваюсь.
Не-а.

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

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

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

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

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

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

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

Почитать можно — использовать нельзя.
Хороший совет — но реальность такова, что и это будет бесполезной работой.
UFO just landed and posted this here
Я не понял кто кого собеседует.
Тут соискатель явно с огоньком в глазах и существенной профдеформацией)
А вот специалиста отдела кадров явно тестируют на профпригодность…
Наймут пару студентов, которые за копейки перенаберут код… Не вариант.
Или исходники показываются лично (с бумаги в присутствии кандидата)
Или составлять договор.
Или где-то «заявить» исходники как явно свой проект, грубо говоря — запатентовать.

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

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

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

Между прочим (кстати я часто менял место работы как программист и многим видам испытаний повергался) у меня исходные коды мало кто смотрел и вникал, потому как HR менеджерам это недоступно, а программерам неохота. Реалии таковы — один раз меня это даже сильно обидело — старался, писал код по уму, а его никто и не глянул
Так ведь цель ТЗ — это выяснить подходит кандидат или нет, сам факт того, что он выполнил ТЗ говорит об очень малом, а вот то как он его сдела — о значительно большем. Если работодатель даёт ТЗ, но не смотрит его, то это уже за гранью добра и зла, нафиг в такие конторы идти…
Ну почему же мало — в ходе работы мало кого интересует код — главное чтобы к сроку работало как надо
В более менее серьезных проектах к коду предъявляют значительно больше требований, чем «лишь бы работало». И чем крупнее проект, тем больше требований к коду.
я ждал подобного вопроса — естественно в крупных (серьзных) компаниях существуют собственные паттерны кода, но следует ли их выносит в тестовое задание — естественно, что испытуемый с ними не знаком
У меня были такие ситуации — в тестах при приеме на это не акцентировалось внимание — после приема в течение месяца проводился контроль написанного кода.
Другими словами это не тестовая ситуация.

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


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

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

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

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


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


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

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

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

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

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

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

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

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

Наконец, можно всё пройти, но тупо опоздать на собеседование на час))
Контору куда можно пойти работать ХОРОШЕМУ специалисту ОЧЕНЬ много и он наверняка выберет ту, где при прочих равных не придется тратить несколько дней на тестовое задание…
UFO just landed and posted this here
Ну это только если у него есть связи. Если их нет, сначала надо ещё каким-либо образом обосновать, что он и правда хороший специалист. Можно написать в резюме опыт 10 лет и длинный список технологий, но кто знает, может кандидат всё это сочинил.
Смысл прост — важна реализация

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

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

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

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


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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

UFO just landed and posted this here

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

UFO just landed and posted this here

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


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

UFO just landed and posted this here

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

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

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


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

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


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

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

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

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


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

Не сходится.


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


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


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

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


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

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

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

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

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

Надо ведь оценить, как кандидат думает, как пишет. Да и задачки выбирали такие, чтобы на написание хватило максимум 2-3 часа.
а можно для примера, если не сложно. Не для, а ради сравнения.
(из другой области) у студии Лебедева однажды тестовое задание звучало «нарисовать сайт для компании, которая занимается битьем лампочек в подъездах».
ну, тут конечно совсем из другой области, больше для креативности.(я надеюсь идет разговор про лендинг и дизайн). Хотя я бы придумал ;)
Ну если будут четкие пункты какие меню должны быть, какие стили примерно и тд и тп, то вполне потом можно взять этот сайт и переделав продать его другой компании…
А вот если именно как у вас звучит — тут уже явно что-то тестовое и только тестовое.
Хотя какие-то оригинальные решения можно использовать в других местах, поэтому лучше такой сайт где-то оформить как авторское право… Или хотя бы оригинальные решения в нем. Да хоть распечатки у нотариуса заверить с датой.
UFO just landed and posted this here
UFO just landed and posted this here
Я не помню деталей, так что могу напутать.

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

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

UFO just landed and posted this here
В наших тестовых заданиях не надо было придумывать алгоритмы. Просто рутинная работа на адекватную структуру классов и просто на владение инструментом. Задачек, которые были бы решены так, что ни кто не понял, не случалось. Но когда человек инстанциирует класс явным образом, а потом использует статический массив для хранения данных — сразу видно, что он просто не понимает, зачем это нужно и на каком языке он пишет. Или другой товарищ написал на шарпе цикл, в котором ради определения размера массива на каждом прохождении цикла копировался целиком весь массив.
А смысл, если можно прям на собеседовании задать несколько задачек, чтобы посмотреть ход мыслей и способность вообще видеть пути решения и сразу оценивать их? Буквально на несколько минут каждая на разные темы — и уже многое отлично видно, и не отсекаешь сходу кучу вменяемых разрабов, без энтузиазма относящихся к идее поработать пару дней на тестовые задания по каждому потенциальному работодателю?
Не все задачи можно уложить в пару часов…
Некоторые задачи требуют не только кодинга, но и архитектуры…
Особенно если компания крупная, а з/п будет начинаться с сотен тысяч…
Если не укладываетесь в несколько часов — значит, это просто неправильно выбранные задачи. Десяток письменных вопросов будут. Если кандидат шарит, то коротких.
Поэтому нужно стараться давать задачи, демонстрирующие полный охват проблемы. А вот архитектуру зачастую куда логичнее максимально подробно обговорить устно, с необходимым минимумом письма, конечно. Вопросы же очевидны — почему не так? а еще как можно, а еще? плюсы и минусы там и там, какие из кажутся критическими? а можно те минусы нейтрализовать? Если ответы идут в нормальном режиме, без постоянных «ну если что вспомню, в гугле же не забанили», да просто видно, что человек рассуждает и выдает решения в потоке — отлично. Заданиями это три дня проверять будете (нет). Блин, ну капитанить же отчаянно приходиться.
А размер компании, оплата тут ну вообще не при чем и не влияют на этот процесс никак. Если вы не гугль и не устанавливаете любые правила.
Disclaimer: cужу сугубо по личному опыту. Самое смешное, что большинство слабых кандидатов даже не пытаются нанять фрилансера / попросить друга. Уверенность в собственных знаниях восхищает. Так что задание, даже простенькое — некий фильтр для отсеивания людей с нарушенной самооценкой. Ну а если фильтр пройден — тогда уже можно подробно пообщаться в live-режиме и попытаться оценить реальный опыт.
ключевое слово — «простое задание»
Обычно требует до 1-2 часов на выполнение.
Обычно выглядит как явно тестовое.
Я вот во второй раз нанимаю девелопера в команду небольшую.
Всех прошу выполнить тестовое задание, но дома, «в любимом кресле», за любое необходимое время (в разумных пределах). Нормуль, сразу видно +- лапоть, что человек делает.
Когда нанимали бекенд-девелопера, я (мы) предлагали на выбор два задания — одно реализовать интерфейс, второе — наоборот, как угодно, но задача с заковыком.
Когда нанимал на фронтенд, задание наоборот было «открытое».

Короче говоря, считаю, что так делать — добро.
это просто вопрос, без подковырок(вдруг не правильно поймете).
1. Вы бы взялись делать такое задание:
а. — если бы работали
б. — если бы не работали, но активно искали работу(то есть затраченное время без каких либо гарантий) или потратили это время на поездки к работодателю на собеседование
2. как бы Вы отреагировали увидев Ваше решение на реализе, без приглашения Вас на работу?
3. как бы Вы отреагировали, если бы человек предложил прислать свои исходники с решением схожей задачи? Или предложил бы оплатить его труд?
4. каким образом Вы решаете, что задачу решил кандидат, а не фрилансер, сват, брат?
1. Был в такой ситуации и в (а), и в (б), делал
2. Не знаю. Как бы считаю, что контора, которая выдаёт задания, которые подходят ей в лоб в функционал — слегонца неэтично. Наши задания заведомо не для продакшна — ну то есть по внешнему виду, т.п. Задания «из другого мира».
3. Да руками-ногами «за». Только время сократит.
4. Вопросами о коде. Если человек проходит просто «просмотр кода», следующая встреча — онсайт в офисе, и там несколько вопросов. Читеров пока не попадалось.
UFO just landed and posted this here
На З.Ы, — а может быть.
3 больше к работодателю.
Ну, а на самом деле, просто стало интересно. Вдруг я один такой дурак и посылаю с такими заданиями зря. Вдруг у нас не отменили крепостное, а я не в курсе.
И Спасибо!
UFO just landed and posted this here
1. Немножко не мой профиль, но если бы работал, то точно нет. Если бы не работал, то может бы и потратил, если бы задачка понравилась :)
2. Компания ушла бы в мой черный список. А так, мне не жалко, я уже фан получил решая интересную задачку.
3. Про оплатить — не вариант, обычно на такое просто бюджета нет. Насчёт прислать свои исходники — если у человека есть свои исходники, то нет смысла ему ТЗ давать.
4. Никак, в найме вообще нет 100% критериев.

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

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

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

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

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

UFO just landed and posted this here
Если хотят посмотреть код, то для этого есть гитхаб.
А насчёт подсказок, есть такое. Мне коллега рассказывал, как проходил одно собеседование в Ozon-Travel.
Ему задавали вопросы о приложении-конкуренте, над которым он раньше работал и записывали решения на бумажку. После чего попрощались с ним.
Разумеется распрощались — в таком случае ровно один вариант — говорить о том, что подобные рассказы по трудовому договору запрещены.
А как в этом случае отвечать на вопросы? Без технических подробностей?
Просто если вопрос звучит «Как вы при разработке приложения Х реализовывали то-то и то-то» — это подпадает под запрет, если же вопрос про абстрактную вещь «Как бы вы реализовали Х, какие технологии использовали бы?» — вперёд и с песнями… Нужно просто разграничить — и всё, что не касается конкретно твоих знаний и понимания вещей, а предыдущих результатов — отсылать подальше.
тут, мне кажется, очень тонкая грань :)
Дискутировать можно бесконечно, предлагаю закончить и спасибо за ваш ответ :)
UFO just landed and posted this here
UFO just landed and posted this here
Зато в 2017 году он от этого мгновенно становится «давай до свидания» на любую мало-мальски серьезную позицию во всех без исключения компаниях, где хочется работать

Мой опыт собеседования в десятки крупных компаний (за последние несколько лет) как в Москве, так и в варианте релокации (в том числе в Google, скажем) говорит, что, как минимум, в сфере разработки на c++ вы не правы. Про GitHub меня не спросили ни разу, в резюме не указан.
UFO just landed and posted this here
Только кто ж в Гугле-то сейчас согласится работать?

Интересно, прокомментируйте. Мои 20+ знакомых ничего плохого о них не говорят.
UFO just landed and posted this here
Мне как-то ближе подход выбирать то, про что говорят хорошее, чем то, про что не говорят плохого.
Ну так они хорошее говорят, о чем-то же мы общались пару месяцев.
В корпорациях работать не интересно, на мой взгляд.
Спасибо за аргументацию. На вкус и цвет, как говорится.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Я уже лет 10 не слышал (допускаю, что плохо слушал), чтобы в Гугл взяли руководить отделом человека с пустым профилем на гитхабе
Руководить отделом может и нет, но senior'ом (у них это называется Level 5) — вполне берут. По крайней мере, тех, кто пишет на c++.
Да и при внутренных собеседованиях при повышении как-то на гитхаб не смотрят, а смотрят на умение принести пользу, создать что-то новое.
UFO just landed and posted this here
> Но вообще, если вместо задания человек предлагает посмотреть на его код, а ему отказывают, это плохой признак.

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

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

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

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

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

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

HR зачастую заинтересованны в найме людей как никто другой — у них ЗП сильно зависит от количества закрытых вакансий.
А у кандидатов полно времени? Я лучше съезжу в день на 3 собеседования, чем потрачу этот день на тестовое. На собеседованиях результат лучше. минимум 50% — приглашения. У тестовых — еще не разу. Максимум — мы с вами свяжемся.
у кого как, кампании хватит и того, чтобы среди всех кандидатов времени было достаточно хотя бы у одного, способного это задание сделать
Ну тут надо понимать, что отбраковать какую-то долю хороших кандидатов — это не смертельно (при условии большого потока). Грубо говоря, на входе у нас 100 кандидатов, из них 10 хороших, 90 — плохих. После ТЗ будет 20 кандидатов, из них 7 хороших — остальные плохие, вот этих 20 уже пригласят на беседу.
Вот только для отличного спеца будет лень решать большое тестовое задание, да еще явно похожее на кидалово.
Да еще требующее много времени.
Он просто пойдет в другое место (возможно в компанию конкурент) на аналогичные условия, но с более дружественным собеседованием на работу.

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

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

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

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

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

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

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

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

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

Ну так и я о том же, большие конторы не практикают обычно тестовые задания, не говоря уже о 10-15 часах.
Конторы типа Яндекса, Гугла и подобные.
И я не говорю, что там именно такие задания, я говорю, что они могут себе позволить их давать.
Ну такие конторы не всегда кидают… В отличии от совсем мелких, которым часто плевать на репутацию — завтра сменят ИП/ООО и продолжат работу.
Ну так и с такими гигантами делать тестовые задания явно выглядящие как не тестовое… Маловероятно.
Ну и обычно там много этапов при приеме на работу. Прошел один — идет следующий.
Просто после очередного этапа или будет хоть какая-то оплата или примут на исп. срок или… Я с гигантами не сталкивался, сужу по статьям в интернете…
Само по себе задание в принципе не сложное. Ничего сложного нет.
Вопрос в том, что перечень «а покажи что умеешь» очень специфический и узконаправленный, можно было бы сократить перечень раза в 2..3 точно.
А ответ на вопросы можно было бы получить раз в 10 проще задачей.
Похожую задачку присылали лет 8 назад. Сделал просто что бы «размяться», а большую часть заменил «заглушками» не пригодными к «практическому» применению.

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как итог. Сильный специалист откажется тратить свое время на вакансию, рассчитанную для джуна.
UFO just landed and posted this here
кому какие задания выдавать

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

UFO just landed and posted this here
Почему-то противники тестовых заданий заранее предполагают, что их дающие — полные идиоты

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

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

Кэп, это вы?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Так это и не тестовое обычно… Ну или см выше — оно или оплачивается или явно этот код нигде не используется или…
Ну мы же говорим про тестовое, а не про фриланс.
я думаю, в опросе должен быть еще один вариант. потому что все же есть тестовые задания, которые отражают реальные знания, но результат выполнения нигде не будет использоваться. то, что у вас, это конечно наглость со стороны работодателя. но тестовое задание неотъемлемая часть в принятии решения о зачислении на работу
В просьбе решить ТЗ есть одна тонкость, о чём иногда многие забывают — не только вас выбирают, но и вы выбираете компанию тоже. Поэтому не позволяйте себя обманывать и предложите свои условия выполнения ТЗ — например, что вы считаете, что для теста можно выполнить только часть задания (в вашем случае, например, только запрет на чтение) и этого должно быть вполне достаточно, чтобы оценить уровень при этом так же сказать, что это съэкономит время и им и вам. И посмотрите на реакцию. Возможно по их реакции вы сразу поймёте, что что-то не чисто (даже если не будет понятно что именно, но неподготовленная их реакция о многом говорит) и этого будет достаточно, чтобы прекратить собеседование и не тратить на них время, а если они идут на встречу вашим предложениям, то почему бы и не попробовать?
На собеседовании тестовые задания даём, даём время написать на бумажке (да-да-да, хабровчане любят говорить «и программировать потом тоже на бумажке?»), но есть отличие — это не должен быть код со всеми инклудами, бегиэндами, выдержанный в стиле SQL-92 и проходящий проверку W3C (зависит от задачи), большинство нормальных кандидатов смогли или на пальцах объяснить в процессе чего хотят сделать, набросав схему/основные конструкции прямо в процессе или сказали что с такой технологией не работали, но сделали бы примерно так, используя знакомые им (например, другой язык). Этап был не нужен, если человек присылал свои исходники примерно по теме (например, как ссылку на гит). Те же, кто писал в резюме «опыт 100500 лет в технологии», но реально знал мало, тот мог полчаса сидеть с, например, табличкой на пять полей и парой запросов — простым и очень простым. Присылать «напишите драйвер» смысла не видим (не я решаю в утверждении методики тестирования кандидатов).
Сам получал ТЗ на ТЗ только один раз лет дцать назад — нужно было сделать маленький сервис на перле, сделал, принёс на собеседовании, он не заработал у них (другая СУБД и что-то ещё), поправил на месте, получил работу и в качестве первого задания встроить это на сайт. После чего переписал модуль, т.к. для демки он пригоден, а как продакшн выглядит глупо, неоптимально и чужеродно.
UFO just landed and posted this here
кидалово в половине или в большинстве случаев. но это нормально. для других областей это тоже «норма» (т.е. обычное явление): то же самое с объявлениями про недвижимость, про автомобили. тоже кидалово в половине или в большинстве случаев: обычно это или просто рекламная замануха (объява есть, товара по факту нет), или попытка сбыть неликвид (с авто такое часто бывает).
отчасти в этом «виноваты» и агрегаторы, типа авито или хх.ру. они просто есть, и недобросовестные личности этим пользуются, к сожалению. интерес агрегаторов — деньги, просмотры, платные услуги — никак не пересекается с качеством контента. тот же авито просто умрёт, если перестанет публиковать (или станет реально модерировать) ложные объявления «агентов по недвижимости» или перекупов авто. буквально отвалится половина постоянной клиентуры. то же самое с хх, наверное.
просто тщательней надо выбирать даже потенциальных работодателей.
а по сути — надо давать задания концептуальные, конечно. например, на понимание ООП, на понимание основных концепций qt, на умение писать «красивый» код. или такие задания, где есть интересующая конкретика, но явно нет законченного продукта. это можно отнести к области контроллеров, эмбеддинга и т.п.

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

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

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


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

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

Лучше всего разработчику завести аккаунт на github (думаю это 100% людей)
О_о так тонко недочеловеком меня еще не называли
Надо было это тестовое задание опубликовать на гитхабе с лицензией GPL =)
Вот бы обломались товарищи, а автору — лишнее портфолио.
Для этого существует испытательный срок, во время которого сотрудник и проходит тест на проф пригодность.
UFO just landed and posted this here
Почему время разработчика никто не ценит? У фирмы много кандидатов, но и у кандидата много фирм. Если вы работаете и неспешно ищете работу, то только и будете выполнять задания. Более того, однажды мне прислали задания несколько фирм, и выполняя одно задание, я упустил сроки в другой, более привлекательной фирме.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
К тому же, дело не только в том времени, которое тратится на «много фирм».
Еще есть время на текущего работодателя, время на быт там, на сон, туда-сюда.

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

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

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

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

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

Если ответ а-ля «нет, с какой стати» — ну это большой повод задуматься, т.к. собеседование собеседованием, а работать дальше придется вместе не три рабочих дня.

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

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

то есть получается если кандидат хорошо владеет, для примера, шарпом и sql, но никогда не работал с entity framework, то он вам не подходит? фактически этим вы низводите программирование до знания узких библиотек.

Не получается. Получается, что он будет делать задачу не 2-3 часа, а 10-20, например. А мы посмотрим насколько быстро он обучается.

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

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

Мы проверяем его навыки обучения, если он не знает стэка. Задание минимальное не покрывает и 20% того из стэка, что понадобится на реальных задачах. Если за 20 часов он изучит 20% стэка, то мы его резюме переложим в папочку "выбрать", а не "отказать". Бывало, что для человека, который за 20 часов освоил 50% нужного стэка, мы выбивали дополнительную вакансию у руководства, потому что не могли выбрать из двух кандидатур: один почти всё, что нужно знает за три года опыта, а другой за 20 часов его догнал почти :)


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

UFO just landed and posted this here
Если человек вам по стэку не подходит, и вы не готовы ему платить за освоение стэка — очень некрасиво воровать его время под предлогом «тестового задания».

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

Как-то подбирали фрилансера под довольно толстую веб-задачу, в качестве тестового задания выложили не связанную с темой и очевидно не нужную в продакшене задачу — http://wiki.linkintel.ru/index.php/Rearrangements. Из 20-ти человек с мойкруга, которые указывали, что ищут подработку и имели более-менее нужный skill-set, за тестовое задание взялся ровно один. Сделал. Его и взяли. Как-то так.
Считаю такие задания полнейшим кидаловом! Просят отверстать адаптивные email письма под все платформы, коих более 20.
Если результатом твоего задания будет конечный продукт, а в конце просят предоставить исходный код — стоит задуматься.
У меня такое ощущение, что автор не вполне осознаёт всю глубину глубин. Я недавно отправлял резюме в одну компанию (правда, там предполагалась удалённая работа на иностранцев, в собственно русских компаниях цифра может быть другая), так они мне отписали, что получили 250 резюме (!) Отсюда и берутся все эти тесты. По моим ощущениям, как минимум 90% получивших тесты даже не начинают их делать.

Если, например, посмотреть вот этот тест, который сам по себе издевательство https://my.rpsins.com/resume/ когда я через него продрался, оказался там зарегистрирован где-то 650-м.

По мне, так адекватный тест (не кидалово) должен иметь такой вид, что для его выполнения какие-то навыки нужны, но в реальной жизни он бесполезен. Драйвер, блокирующий все файлы с цифрами в именах — это вещь бесполезная. То же самое — поиск файлов (очевидно, есть уже реализованные поиски). Меня вот один раз попросили написать простенький код на языке BrainF**k. Три раза просили написать на JavaScript таблицу, отображающую содержимое JSON (ясно, что уже есть стандартный jqGrid и т.д.)

Что касается мыслей нанять фрилансера делать за Вас тест — вот сами подумайте. Если поиски работы затянутся, таких вот тестов вполне может прийти штук 50. Мне вот на этой неделе 4 теста пришло. И для каждого нанимать фрилансера, и выбрасывать на это деньги? Ещё некоторые тесты бывают онлайн в режиме парного программирования — вот прямо сейчас садитесь и пишите. Тут никакой фрилансер не поможет.

И да, можно согласиться, что потенциальные работодатели не ценят время кандидатов, но если им приходит по 250 резюме на вакансию, мое и Ваше мнение их вообще никак не волнует. К сожалению.
Вообще, большое количество плохих или 'no name' кандидатов говорит о низкой позиции или или иной проблеме. Чем ниже вакансия — тем больше желающих, ибо они думают в стиле: 'Ну уж уборщиком собачьего дерьма меня точно возьмут!' Очередь желающих работать охранником в 'Ашане' видна с Луны. Целые кипы анкет и конкурс как в космонавты. В то время, как исследовательские отделы больших компаний часто недоукомплектованы. Пришлют им может и больше резюме, но реально они будут рассматривать лишь кандидатов с определённым образованием, нужным опытом, списком работ и рекомендациями. А их внезапно не так уж много. И для хороших кандидатов конкуреция ниже. Вряд ли человеку, работавший ведущим инженером в Samsung предложат написать драйвер при приёме на работу в Philips. Поэтому выход один: любить свою работу и быть в ней в числе лучших. Чтобы при наборе вашего имени в google.com всё было ясно. :3
Ну если 650 кандидатов на одну должность, то вполне логично сделать несколько этапов.
% 75 отсеются за очень короткое время, с остальными можно уже работать более пристально. В т.ч. оплачивать их время, если оно привело к нужным результатам.
Естественно не по максимальной ставке.
Ну или это оочень вкусная вакансия и риск быть кинутым перевешивает все плюсы.
Я считаю цифру 650 вполне заурядной. Когда я сам участвовал в отборе кандидатов (Питер), нам через сайт вроде Job.Ru недели за три пришло порядка 40 резюме, дальше мы просто перестали считать. Самая заурядная должность с з/п средней по рынку.

Если же речь идёт об иностранной компании, которая принимает на удалённую работу людей со всего мира, в т. ч. русских, украинцев, индусов и пакистанцев, и эта вакансия висит у них на сервере не три недели, а, скажем, год, цифра 650 будет вполне ожидаема.
UFO just landed and posted this here
Сейчас я никого не набираю на работу, я сам ищу работу.

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

Одно другому не мешает :)


Хотя не понимаю хейт по поводу "кода на бумажке" — если речь идёт о мелких задачах и никто не докапывается до синтаксиса, то какая разница где его писать?

За свою жизнь переделал немало тестовых заданий сроком реализации от 2 часов до 1 недели.Даже один раз попросили игру сделать.И такое было.Пришел к выводу что если у человека много свободного времени(или он не ценит время как категорию) то пусть выполняет.Лучший выход здесь это ПЛАТНЫЕ тестовые задания.Оплата должна быть в любом случае независимо от того приняли человека или нет.Платить надо по ставке на которую претендует человек деленной на 2.Да и еще.Из моей практики(20 лет) никогда не удавалось заработать нормальные деньги в тех конторах которые требовали выполнить тестовое задание.
Идея с оплатой тестовых заданий обречена на провал, т.к если она будет массово применяться, то найдутся люди, которые захотят на этом заработать. Например делать тяп-ляп, а потом требовать деньги. Я думаю никакой компании не нужны скандалы, пусть даже она 100 раз права.
1. Может и найдутся. Кто-то претендует на позицию А, к ней прилагается задача Б, срок выполнения задачи 4 часа решением менеджера и подтвержденная разработчиком (решать можно дольше, но компания готова оплатить 4 часа). Ставка, пусть будет, 100 000 рублей. За 4 часа это 2500 рублей, делим на 2, это 1250 рублей. Причем нам не важно, сколько кандидат с ней пурхался по факту.
1250 рублей это 1-2 часа на фрилансе.
2. Делать тяп-ляп будут, и будут требовать деньги, тут вы правы.
Я не открою Америку, если скажу, что многие разработчики (не все) именно так и работают. Тяп-ляп и ждут зарплату. По разным причинам получается так (мотивация, сроки, отсутствие знаний, упрямство, и т.п.), но так получается.
3. Скандалы можно предотвратить лишь функциональным описанием задачи (данные на входе и ожидаемые данные на выходе) и наличием теста к задаче. Присланная задача прошла приложенный к ней тест? Должна быть оплачена, независимо от того, насколько там внутри ужас-ужас.
Вы можете не верить но мне 2 раза удавалось выполнять тестовые задания за плату.Все дело в работодателе, если понимающие люди то они заплатят.А вот распознать с достойными людьми ты имеешь дело или нет это приходит только с опытом
Конкретно тестовое задание с драйвером не сложное, я даже знаю в какой компании его предложили.
Сам его решил за 2 вечера.
Я ещё так скажу, что, если искать удалённую работу за границей, где платят гораздо больше, чем в России (что с падением рубля стало особенно актуально), там тесты присылают все. То есть вообще все. 100%. Иногда предлагают просто «поболтать», с целью понять уровень английского, но потом тесты будут обязательно, причём два или три.

Выбора тут нет вообще никакого, а на любые попытки подвинуть работодателя он довольно прямо отвечает, что «впереди вас есть ещё несколько очень интересных кандидатов». Некоторые (очень мало) работодатели готовы подвинуться по срокам, если сможешь внятно обосновать, многие в случае отказа прямо говорят, что можно снова обратиться к ним через 3-5-6 месяцев, но это всё. У меня был случай, когда лежал с температурой и был небоеспособен, но на предложение подвинуть срок меня прямо спросили, хочу ли я эту работу.

Также за границей очень популярны сайты с автоматизированными тестами на алгоритмы, вроде Codility, HackerRank, TestDome и т. д. Тут работодатель экономит своё время по максимуму, он даже не смотрит код, который написал кандидат, достаточно посмотреть автоматический отчёт с сервера, что прошли все юнит-тесты.
Ну, при устройстве заграницу цель оправдывает затраты времени. Если вам пришло приглашение из Silicon Valley можно надеть юбку из соломы и сплясать папуасский брачный танец. И автоматизированные тесты на алгоритмы — очень хорошая практика. Я их выполнял. А когда вы получили пример из очередного ООО 'Вектор', и им нужно прислать файл проекта Visual Studio (хотя ясно сказали кадровику, что не работаете в Windows) настроение уже совсем другое.
Да в Silicon Valley тоже полно таких же ООО Вектор, только на американский лад. И тесты с использованием технологий, которые я не знаю, и в резюме не упоминал, мне присылают довольно часто.
У них принято говорить Acme Ltd. ;-)
И кстати да, .NET теперь пришёл в мир Юникса )) Если Вы не в курсе (многие ещё не в курсе), погуглите Visual Studio Code и .NET Core.
UFO just landed and posted this here
Ну да, .NET нужно ещё побороться за место под солнцем Юникса. Я видел статистику, что последние по крайней мере года 4 Ява примерно в 4 раза популярнее, чем C#. Вот они так и зашевелились.

Когда я разбираю алгоритмические задачки на HackerRank, там большинство пишет на Яве, реже Питон, ещё реже C++. C# очень мало.
UFO just landed and posted this here

А чего такого нет в шарпе, что на нем алгоритмы плохо писать?
И что не так с плюсами?

UFO just landed and posted this here
А вот интересно. Как обстоят дела с применимостью функциональных ЯП в ACM-like задачах, где требуется иметь очень хорошее представление о вычислительной сложности операций, которое формируется в т.ч. за счет использования явных императивных конструкций?

Расскажите, плз, кто знает.
UFO just landed and posted this here
Я поэтому и спросил, т.к. не в курсе положения дел, и не делал никаких утверждений.
Если вы знаете — расскажите, плз.
Популярно ли решать задачи на ФЯП? Эффективно ли с точки зрения времени выполнения (по сравнению с другими) и, собственно, самой реализации?
UFO just landed and posted this here
Заметил пару аргументов «за» тестовое задание:
  • Если изучим код кандидата и если он «хороший», то и програмер хороший.
  • Если человек готов «вложиться на энтузиазме» в изучение новой технологии, то и програмер хороший, обучаем и т.д.


А если попробовать рассмотреть эти два аргумента немного с другой точки зрения?
  1. Что значит «хороший код»?
    Для этого нормальная компания регламентирует свой «Code Style v xx.xx» и регламентирует дизайн в рамках выбранных технологий для проекта.
    Код кандидата будет с таких же позиций рассматриваться или абстрактного «красиво»?
    Именование в «непонятной логике» — плохо?
    Стратегия обратки ошибок «непонятно» — плохо?
    Для простого примера из 5 классов кандидат навернул еще 10 классов что бы впихнуть все популярные шаблоны проектирования это оценить как?
    Кандидат идиот, который сделал избыточно для «простого примера» или грамотный специалист, который предусмотрел в коде все, вплоть до марсианского летоисчисления?
    По идее нормальный кандидат это тот, кто будет следовать CodeStyle и дизайну приложения и при случае аргументированно объяснить «почему можно/нужно сделать лучше».

  2. Что значит «вложиться»? Выучить API? Смысл ?! Это показатель краткосрочной памяти и не более. Возможно скорость гугления.
    Если что-то сложее чем «наваять форму» вроде что-то для Sharepoint / CRM / Service Bus / DB и т.д. то дома или не должно быть лицензий или куча виртуальных серверов, да и развернуть инфраструктуру для такого «простого теста» это далеко не 5 минут.
    Эмпирическая оценка изучения «новой технологии» в смежной области занимает 1...4 недели. Компании выгоднее взять адкватного обучаемого кандидата и прокачать его.
    Диффузия знаний — через месяц всех уравняет.


Как это «оценивает» тестовое задание, тем более если методология оценки «красиво / правильно / достаточно вложился» субъективна и кандидату не предоставляется? Не понятно.
Что значит «хороший код»?

Не согласен с тем, что это субъективно. Если человек в 100-200 строчках нарушил каждую букву из SOLID, то это объективно плохой код.
Если человек в 100-200 строчках нарушил каждую букву из SOLID

А с какого хр… SOLID стал последней инстанцией, за нарушения заповедей когорого полагается «хорошо, но потом сжеть на костре» ?! Это же набор рекомендаций и не более.
Предположим, что все вызовы запихнули в один интерфейс Web Service. Это хорошо или плохо? С точки зрения SOLID — ужасная ересь. А с точки зрения бизнеса — отличная штука ибо не нужно нанимать нового админа и нету нового гимороя с оркестрацией.
В противном случае это просто «карго культ» SOLID, а не взвешенное решение, на основании объективных метрик.
Да, бывает такое, что известные рекомендации приходится нарушать. И для каждого такого нарушения должна быть веская причина. В вашем примере «не нужно нанимать нового админа» — причина для нарушения известных рекомендаций, ну, а ее вескость зависит от ситуации.
Но на практике куда чаще встречаются просто некомпетентные люди, которым «проще написать так, а потом хоть трава не гори». И их код, как правило, хорошо видно именно по тому, что широко известные рекомендации массово нарушаются без каких-либо причин.
Если ситуация спорная — стоит всегда пригласить разработчика и обсудить его код. Разумеется, компетентный специалист всегда сможет рассказать, почему он сделал так, а не иначе.
Код кандидата будет с таких же позиций рассматриваться или абстрактного «красиво»?

Если до кандидата code style и требования к архитектуре доведены не были (как обычно бывает), то рассматриваться будет с позиций абстрактного "красиво". Чем ближе код теста будет к реальному в компании, тем выше шансы кандидата получить оффер при прочих равных.


Компании выгоднее взять адкватного обучаемого кандидата и прокачать его.

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

написать что-то работающее с использованием незнакомой технологии.

Почему вы решили, что кандидат не знает? Не указал в CV?

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

UFO just landed and posted this here
Скорее нет. Наоборот, выбор реализации кандидатом — это возможность поговорить и о его причинах, и о других путях. Что даёт представление о владении материалом в принципе.

А собеседование без «тестового задания» это не покажет за минут 5 общения?

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

UFO just landed and posted this here
Что значит «хороший код»?


Странное какое-то замечание. Вы вот сами не видите разницу между говнокодом и нормальным кодом? Совершенно необязательно ссылаться на «Code Style XX.X», SOLID, Agile и Xtreme Programming. Если в каком-то конкретном случае непонятно, спросите у потенциального работодателя.

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

Это «эмоциональная оценка». Должно быть какое-то метрическое объективное измерение, в том числе и «экономическое»
При выборе между «говнокодом» который будет стоить будет стоит 10 денег и «классным кодом» ценой в 30 денег, если оба позволят «заработать» 100 денег выбор очевиден. Это будет «говнокод» за 10, а не «красивый» за 30.
Очевидно, для прохождения тестового задания такие экономические критерии неприменимы. Тут цель не заработать «икс» денег, а чтобы код понравился тому, кто будет делать code review. Причём практика показывает, что делающие review тестов зачастую люди очень злые, которые хотят побыстрее избавиться от горы тестов каких-то совершенно левых для них чуваков. Мне, например, было заявлено на один тест, что он «looping», хотя там была рекурсия с совершенно нормальной базой, которая не зацикливалась точно.

Кроме того, и в нормальной компании говнокод может не проходить юнит-тесты, и какой-нибудь злой директор по качеству будет делать ата-та за несоответствие корпоративным стандартам. Не говоря уже о том, что, когда аффтар уволится, и его детище достанется кому-нибудь в качестве legacy, он огребёт немало невидимых лучей поноса, и будет часто икать.
ну потом-то «говнокод» расширять надо будет за 20/40/80/… (сложность будет расти и нелинейно), а «классический код» — также по 30 и будет заходить (ну может быть и будет сложность расти и поддерживаемость усложнятся, но не так быстро как в первом случае)
А с точки зрения «техспеца», который выставляет счет за «красивый код» — выгоднее «красивый код.» Его экономика/бумажник основан на «красивом коде». Соответсвенно и подбирать нужно окружение под «красивый код». Иначе в чем разница? Иначе выльется в «научи бобра борщ варить и до свидания ...» с точки зрения бизнеса.
А у меня вот несколько иное мнение насчет тестовых заданий, не нашел его ни в вариантах ответа, ни в других комментариях.
Я сам прошу тестовые задания у работодателей. Потому что они (как формулировка, так и обсуждение решения) позволяют очень много о работодателе узнать. Как минимум, станет понятен технологический стек, то, насколько мягко или жестко относятся в компании к говнокоду, насколько важно оптимальное решение задачи. Да и наверняка задача будет хоть немного похожа на то, что будет в работе, и можно будет оценить интересность предметной области (именно той ее части, что у этого работодателя).
Ну а в крайнем случае будет сразу видно, что работодатель нечестен, что бывает очень полезно выяснить как можно раньше.

Грубо говоря, тестовое задание — это то же самое для оценки работодателя, что и задачи на алгоритмы и «накодить на бумаге» для оценки вас.
Ещё один момент. Многие здесь писали, что больше половины кандидатов отказались от выполнения заданий и таким образом отсеялись. Но ведь это не значит, что отсеялись худшие. Вполне могли отсеятся и лучшие. Дело в том, что наиболее активны в выполнении заданий начинающие программисты, ибо им нужно показать себя с лучшей стороны, и пробный пример — хорошая возможность. Опытному же инженеру ничего доказывать не нужно, он в себе уверен, и ему проще перейти к следующей вакансии.
С точки зрения бизнеса, судя по ответам, так и есть. Зачем договариваться с «равным», если можно выбрать угадавшего наиболее близко «наши внутрение стандарты», работающего не «из-за денег», а постоянно кодящего «for fun» :)
Маленькой компании может быть не нужен второй супер-инженер, который будет хотеть больше бюджета, а нужен именно что мотивированный джуниор. Пока он вырастет — и компания вырастет и бюджет может уже появиться.

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


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

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


Да, и на следующей вакансии пришлют следующее тестовое задание)) Ad infinitum.

На мой взгляд, тестовые задания имеют право на жизнь, если они адекватно составлены и в них не просят написать "половину проекта". Например, одно из того, что мне было приятно сделать чуть напрягшись — мне прислали файл с тестами и надо было написать программу, которая их пройдёт. Это заняло ~40 строк кода.


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


Реализовать серверную часть приложения по сбору данных.
 
Интерфейс состоит из 3-х методов:
 
 int init(uint64 block_size, uint32 blob_size)
 
Метод осуществляет установку соответствующих параметров.
block_size — размер передаваемого блока данных в байтах
blob_size — размер хранимого blob в количестве блоков
Возвращаемые значения:
0 в случае успеха
отличное от 0 в случае неудачи.

...

Язык: Python

Это выглядит несколько странно.

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

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]
UFO just landed and posted this here
Я не думаю, что подход — «очень быстро, пусть и с багами» является правильным при выполнении тестов. Если тест работает с багами, значит, он не работает. Если у вас есть какие-то сомнения, как вам следует расставить свои приоритеты, спросите потенциального работодателя.

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

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


Кто мешает взять любого сообразительного выпускника/джуниора/миддла и за месяц протащить его по стэку?

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


Другое дело, что иногда говорят, что долго ищут и никого не нашли. Тогда да, логично взять того, кто согласен изучить все что нужно.

UFO just landed and posted this here
UFO just landed and posted this here
С одной стороны вы правы: зачастую собеседующий тешит свое самолюбие. Хотя он и решение уже знает (и вероятно не одно). С другой стороны — каждое собеседование — это несколько часов времени, включая время на подготовку к нему (подготовить среду, прочитать еще раз резюме, чтобы не задавать людям глупых вопросов, уже раскрытых в резюме/гитхабе) и время на уборку после кандидата (почистить историю, удалить проекты / ВМ), а когда у тебя куча просроченных задач, лишнее собеседование лишь оттягивает срок сдачи уже просроченных задач. А когда у тебя кандидаты идут подряд, то хоть вечером работай…
UFO just landed and posted this here

Articles