Каков этикет для домашнего теста кода?

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

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

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

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

Много раз работодатель будет указывать некоторые из этих вещей. Если вам интересно, какой этикет ожидается, если он не указан, вы можете добавить эту деталь к вопросу.
Вы берете проект домой. Вы делаете все возможное с любыми ресурсами, которые можете, и возвращаете то, что вы завершили, как только сможете... Я не понимаю, что сложного в этой концепции.
Я сделал этот опрос, чтобы взять домой тест кода bit.ly/38gFTHc. Меня интересует этикет работодателей и сотрудников в отношении этой тенденции.

Ответы (5)

Как правило, вы не можете просмотреть то, что вы отправили.

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

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

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

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

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

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

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

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

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

Удачи в любом случае.

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

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

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


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

Кто-нибудь думает, что 20 часов — это разумное время, чтобы попросить кандидата пройти тест по программированию?
20 часов не разумны, если они не платят большие деньги.
Чем длиннее задача, тем больше вероятность того, что эта компания не наймет. Попросите, чтобы вам заплатили blog.raychenon.com/…

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

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

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

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

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

сколько времени можно ожидать, что кто-то потратит на домашний тест кода?

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

И если вы тратите 4 часа на что-то подобное, ожидаете ли вы возможность просмотреть то, что вы сдали, с разработчиками, которые это просматривали?

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

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

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

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