Предварительное тестирование кодирования - как долго это разумно? [закрыто]

22

РЕДАКТИРОВАТЬ

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

Ради тех, кто все еще заинтересован, я пытаюсь дать краткое изложение дискуссии, возникшей из этого вопроса:

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

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

Тем не менее, я нашел все ваши ответы ценными и спасибо за обмен.

ОРИГИНАЛЬНАЯ ПОЧТА

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

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

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

Разумно ли от компании ожидать, что я проведу 4 часа, работая над их фиктивным заданием в свободное время, даже до того, как они скажут мне привет? (рекрутер прислал мне тест на кодирование)

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

В этой компании я пришел к выводу, что либо:

1) Моя мотивация не очень хорошая и, вероятно, они ищут кого-то другого

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

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

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

Aston
источник
Полу-связанные: workplace.stackexchange.com/questions/6978/…
Blrfl
Ваш комментарий справедливый. Однако меня интересует, что вы думаете о том, насколько разумно ожидать, что кто-то потратит 4 часа на предварительную проверку.
Aston
1
Это экономическое предложение с разумностью, определяемой тем, что будет нести рынок. Это будет колебаться с условиями. Если это рынок сотрудников (то есть, многие компании ищут несколько кандидатов), то к таким вещам будет меньше терпимости, чем когда это рынок работодателей. Я потратил в общей сложности двенадцать часов на собеседование на должность, которую я сейчас занимаю, потому что потенциальные выгоды от этого были заранее определены. Десять лет спустя они были правы, и каждая минута, которую я потратил на это, была достойной инвестицией.
Blrfl
3
Если вы когда-нибудь проводите собеседование в одной из крупных компаний-разработчиков программного обеспечения, вы часто летите в их расположение (для меня это было 10-часовое время в пути), а затем тратите 8 часов в день (или два, не случайно) на программирование / проектирование / интервью. Я подозреваю, что проблема заключается в том, считаете ли вы, что у компании есть влияние, чтобы требовать этого.
Стивен Эверс
1
Мой опыт работы с «крупными компаниями-разработчиками программного обеспечения» заключался в том, что первым этапом было собеседование по телефону в течение 1 часа, и это справедливо. Чего мне не хватает, так это того, что они ожидают от меня 4 часа работы без какой-либо информации от них. Я немного подумал, и подумал, что, может быть, у них не так много времени, и если им кто-то нравится, они бы его нанимали на эти 4 часа работы. В этом случае я могу понять их подход (это относится к ответу Данка).
Aston

Ответы:

24

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

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

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

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

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

Карл Билефельдт
источник
Также ОП указала, что испытание должно занять не более 4 часов. Я думаю, что если тест займет кандидата = <4 часа, они, вероятно, не будут заинтересованы в любом случае.
Томбатрон
Спасибо за ответ. Может быть, я второй тип, которому нелегко выделить 4 часа на такую ​​задачу, так что, возможно, они ищут кого-то другого, у кого есть. И да, решение реальных проблем полезно по причинам, которые вы упомянули, и я сталкивался с такими задачами, например, когда я брал интервью у телевизионной компании, мне нужно было сделать калькулятор подписки на каналы, когда для FX-компании мне нужно было подвести итог валюта из файла CSV, и это справедливо, но эта компания зашла слишком далеко от их ожиданий для меня. Может только для меня.
Aston
3
Я думаю, что это немного упрощенно. Не все решения должны интегрироваться с другими системами - это может быть, например, процесс анализа данных. И хотя код может не использоваться непосредственно компанией, дизайн вполне может быть использован. Процесс тестирования должен быть поверхностным, и я думаю, что больше часа - это слишком много.
Кирк Бродхерст
2
Относиться к поиску работы как к работе на полную ставку разумно, только если вы безработный. Если вы работаете, но тестируете рынок, чтобы увидеть, есть ли что-то лучшее, такой уровень приверженности не практичен, кроме как в краткосрочной перспективе, потому что вы просто перегорели.
Дэн Нили
11

Нет, не типично , почему вы решаете их проблемы бесплатно? (4 часа)

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

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

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

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

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

Джон Рейнор
источник
Спасибо за ответ. Ваши методы кажутся честными. Мне нравится идея простых вопросов и сложных вопросов, потому что она дает кандидату хорошее представление о том, как хорошо они справляются, даже без дальнейшего объяснения. Допустим, я выполняю 3 простых задания и не могу выполнить последнее, я бы не чувствовал себя неудачником, но я также мог бы признать, что мне нужно совершенствоваться. Что меня действительно беспокоило в моем случае, так это 4 часа ожидания за пределами площадки, еще до того, как компания заговорила со мной.
Aston
@Aston - Кроме того, если вы не ответили на последний вопрос, он автоматически вас не дисквалифицирует. Возможно, вы не будете наняты в качестве программиста, но, возможно, где-то еще. В некоторых случаях кандидатов нанимали на другие должности (поддержка, QA). Сначала мы опросили людей, а затем - викторину. Я полагаю, вы могли бы сначала опросить и сразу исключить этого человека, но, возможно, вы упустили некоторых потенциально хороших технических, но не программирующих кандидатов.
Джон Рейнор
8

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

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

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

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

gbjbaanb
источник
1
Извините, если мне неясно, но я сослался на тест, который проводится перед собеседованием, поэтому я могу сделать это самостоятельно дома.
Aston
1
тем не менее, я бы все равно сделал это псевдокодом. Они либо хотят, чтобы я подумала о том, как решить проблему, либо хотят, чтобы у вас была бесплатная работа. Если последнее, это не будет место, где вы хотите работать.
gbjbaanb
@gbjbaa: ИЛИ более вероятный сценарий - они хотят видеть тип работы, которую вы делаете. В связи с этим тривиальных задач недостаточно. Псевдокод его не обрежет. Кроме того, держу пари, что для определения проблемы, ее рассмотрения, доработки и утверждения потребовалось более 4 часов. Итак, учитывая, что они могли бы реализовать это самостоятельно за меньшее время, чем требовалось, чтобы спросить, почему вы думаете, что они после бесплатной работы? Если задание заняло неделю или две, я мог бы понять вашу точку зрения, но 4 часа? Кроме того, я взял интервью у слишком многих людей, которые были хороши в выражении мыслей и в конечном итоге оказались очень плохими в решении проблем.
Данк
1
Я всегда немного подозрительна, если задача слишком близка к реальной ситуации в мире. Я слышал истории, когда менеджеры устраивали интервью только для того, чтобы получать советы от умных и умных людей о том, как решить конкретную проблему. Дело не в том, что они не решили это сами, но им было интересно посмотреть, как это решит кто-то другой. В конце концов они не хотели никого нанимать, но это уже другая история.
Aston
3

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

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

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

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

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

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

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

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

Мередит Бедный
источник