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

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

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

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

Особенно для тех, кто раньше нанимал этот тип и использовал этот метод.

Я также думал, что могу дать им код для рефакторинга и посмотреть, как они это делают. Кто-нибудь когда-либо давал рефакторинг в качестве части процесса найма?

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

Почему это может быть разумнее нанимать людей, не встречающихся с ними http://www.fastcompany.com/magazine/136/made-to-stick-hold-the-interview.html

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

Есть ли у заявителя какие-то ошибки?

Как код заявителя интегрируется в существующий код?

Претендует ли заявитель на что-то, что на самом деле не имеет значения?

Подходит ли заявитель к стандарту кодирования существующего кода?

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

ПРИМЕЧАНИЕ. Что касается ответа @bpapa, я бы удостоверился, что проблема нова и, очевидно, не используется в производстве.

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

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

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

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

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

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

Я не уверен, что для вас есть хорошее решение.

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

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

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

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

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

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

Если вы хотите проверить их на месте, попросите их изменить строку. С организационной точки зрения упорство, решительность и энтузиазм столь же важны, как и технически искусные, ИМХО.

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

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

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

В конце сеанса просто удалите свою работу. Ничего страшного.

Я никогда не был частью процесса найма … но в интервью, которые я сделал, меня попросили однажды реализовать дважды связанный список, а другой – разработать алгоритм, классический, сколько целых точек в пределах в данном случае три точки, образующие треугольник, один раз в O (n ^ 2), а затем снова в O (n).

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

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

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

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

Редактировать:

Что касается «небольших, четко определенных задач»: то, что я пытаюсь сделать для съемки, – это то, что включает в себя очень подробное описание простой бизнес-логики как части более крупной задачи программирования. Например, одно из заданий программирования, которые я давал в прошлом, заключается в настройке простого веб-приложения Java и реализации нескольких функций. Мы тщательно описали, как должны были работать функции для устранения неоднозначности. Это было по нескольким причинам:

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

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

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

Мне когда-то пришлось сдать экзамен по Visual Basic MCP, в конце которого они даже не потрудились дать мне результат.

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

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

Чтобы ответить на вопрос:

Для PHP я думаю, что корзина, адресная книга и форум будут хорошими проектами. Обычно они охватывают широкий спектр тем веб-программирования – сеансы, регистрацию, базу данных, обработку форм и аутентификацию.

Лично говоря: похоже, вы больше похожи на архитектора, чем на гуру кодирования. Я не стал бы налагать наказание на заявителя, потому что он не может придумать имя неясной функции или необходимости ссылаться в другом месте. Главное, что он имеет инициативу и знает, где искать (небо знает, сколько раз мне нужно искать PHP.NET). Хороший вопрос для архитектора, IMHO, заключается в том, чтобы сказать ему, что у вас есть набор данных, но у вас есть три разных способа их отображения, и каждый вид имеет разные операции. Если его ответ – это просто гигантский SWITCH-CASE, то он может быть неправильным выбором.

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

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

Обычно это зависит от языка, на который вы нанимаете. Например, когда я пошел и дал интервью для PHP, меня попросили написать сценарий в блоге, используя пользовательскую среду MVC, тогда как когда я взял интервью для открытия в качестве разработчика JS, меня попросили закодировать определенный плагин в jQuery. Его более зависимая от вас нанимает парня в конечном счете. Вы не хотите просить кого-нибудь написать вам механизм музыкальных рекомендаций, а затем заставить его работать на процессоре платежных шлюзов.