Я впервые занимаюсь HR, и мы ищем разработчика. Процесс отбора состоит из трех этапов: техническое собеседование по телефону, задача по программированию (от 0,5 до 1 часа) и, наконец, собеседование с высшим руководством и со мной.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я даю некоторым кандидатам (в основном, новичкам с 1 или 2 техническими стажировками за плечами ) задачу по программированию, они не только не выполняют ее в заданные сроки (неделя), но и Я больше ничего о них не слышу, если не свяжусь.
Я думаю о том, чтобы бросить задание по программированию, но я действительно думаю, что это может помочь установить, кто действительно знает языки, указанные в их резюме.
Как я могу улучшить наш процесс найма?
ОБНОВЛЕНИЕ, ПОСКОЛЬКУ ЭТОТ ВОПРОС БЫЛ РАЗМЕЩЕН
По большей части многих кандидатов отталкивают тесты по программированию, что очень расстраивает, поскольку мне нужно просмотреть МНОГО кандидатов, чтобы найти того, кто готов это сделать. С учетом сказанного, я нашел некоторых желающих сделать это, и в целом обнаружил, что:
а) Это показывает, что у них хорошее отношение к компании и роли , если они готовы пройти лишнюю милю , чтобы выполнить ее.
б) Они умеют программировать. Конечно, они могли смошенничать, но если они пытались это сделать, опять же, хорошее отношение для нас гораздо важнее, поскольку с ними будет гораздо легче справиться.
С тех пор я нанял дипломированного разработчика, который попытался и успешно выполнил упражнение. Он также выполнил все дополнительные «бонусные баллы» по заданию. Пока рано говорить, насколько он хорош в своей роли, так как он только начал.
В некоторых случаях я избегаю давать задание разработчикам, если у них уже есть сильное портфолио, работающее на хорошие бренды, и послужной список. Так как, чтобы попасть в крупные бренды, ему придется пройти собственные вступительные испытания.
ВТОРОЕ ОБНОВЛЕНИЕ С РАЗМЕЩЕНИЯ ЭТОГО ВОПРОСА
Дипломированный разработчик оказался звездным сотрудником. Мы оставили его и повысили ему зарплату.
Вам нужен тест по программированию. Но это должно быть 5-10 минут. 30 минут максимум. Не существует двухчасового теста, который точно скажет вам, насколько хорош программист. Вы не сможете сказать, постоянно ли они пишут пригодный для сопровождения код, или они всегда правильно комментируют, или они придумывают нечитаемую мешанину «умных» решений проблем и т. д. За 2 часа единственное, что вы достижения заключается в том, чтобы выяснить, кто откровенно лжет о знании языка / программирования.
За исключением того, что вы должны быть в состоянии обнаружить откровенное мошенничество гораздо быстрее, чем за 2 часа. 5 минут написания FizzBuzz и 2-3 коротких вопроса о специфике языка покажут вам, что они абсолютно бесполезны. И это лучшее, что вы можете сделать на собеседовании.
Позвольте мне сказать вам, что я подумал бы, если бы получил 2-часовой экзамен за привилегию проведения собеседования:
«Либо эти люди думают, что это имеет ценность, что означает, что они понятия не имеют, что они делают, ЛИБО они знают, что это пустая трата времени, но по какой-то причине (вероятно, слепо следуя бюрократии HR) они готовы тратить впустую еще до того, как кандидат будет принят на работу.
В любом случае, я не хочу там работать».
Есть еще одна вещь, которая может оттолкнуть кандидатов : продолжительность процесса собеседования. У вас есть люди, которые проводят телефонные интервью. Затем домашний тест, на завершение которого у них есть неделя. Затем вы проходите тесты. Затем вы устраиваете личное собеседование с руководством. Затем (я полагаю) вы даете пару личных интервью. Затем вы возвращаетесь к парню, которого хотите нанять. Что для этого нужно? 2 недели? Дольше?
За это время я получил уже 3 предложения. Я принял один, и я начинаю на следующей неделе. Думаешь, я пойду делать твой двухчасовой тест?
Позвольте мне начать с того, что найм сотрудников вообще — это патетически неточная наука, и вы получите разные результаты, что бы вы ни пытались. Сказав это, я почувствовал, что должен поделиться своими мыслями по этому поводу.
Я думаю, что упражнения по программированию — это провал, главным образом потому, что вы заставите людей, которые отчаялись и у которых слишком много свободного времени, выполнить их. Если у них есть работа на полную ставку, вам придется спросить, сколько времени/умственной энергии они берут у своего нынешнего работодателя, чтобы работать на кого-то, кто им даже не платит. Вы хотите, чтобы они делали такие вещи с вами?
Кроме того, если они хорошие, они, скорее всего, проходят собеседования со многими работодателями. Угадайте, какие из них будут приоритетными? Те, кто не просит завершить проекты, даже не позвонив по телефону техническому менеджеру.
Существует также проблема плагиата. Конечно, их узнают при личном собеседовании, но к тому времени вы уже потратили впустую время (предположительно) высокооплачиваемых людей в компании, проводивших собеседование с этим человеком.
Моя нынешняя компания сделала это хорошо, и я бы пошел по этому пути на вашем месте. Дайте им небольшую задачу, на выполнение которой уйдет, может быть, 90–120 минут, и попросите их обосновать в комментариях, почему они выбрали именно такой способ решения проблемы. Это то, что можно сделать за одну ночь, и это даст вам представление об их мышлении.
Я могу сказать вам прямо сейчас, что если я получаю проект, который занимает 8+ часов, я говорю им спасибо, но мне это не интересно. У меня хорошая работа и жизнь. Если менеджер видит в этом проблему, это говорит мне, что ему все равно на мой баланс между работой и личной жизнью на работе (особенно если им все равно до того , как я его получу). Ни одной компании, за исключением, может быть, Google, Apple или Facebook, это не сойдет с рук.
По моему опыту, домашние проекты не отсеивают плохих программистов и, скорее всего, заставляют хороших программистов находить работу, где им не нужно прыгать через обруч, чтобы поговорить с менеджером по найму.
Подумайте об этом таким образом. Хороший кодер может легко получить телефонные и личные интервью. Каждый дополнительный обруч, через который им придется пройти, будет означать, что они выберут более легкий путь и пройдут собеседование (и будут наняты) кем-то другим, кто заплатит столько же. Если вы заставляете людей прыгать через обручи, убедитесь, что они с самого начала понимают, что это того стоит.
Плохой разработчик может тянуть столько, сколько захочет. Вы не увидите, что они занимают в 4 раза больше времени; вы просто увидите завершенный тест. Вы также не увидите, как они обращаются к Google или своему приятелю за помощью с if
заявлением.
Моя последняя компания сделала это, и подавляющее большинство людей, которых мы пригласили для личного собеседования, не получили одобрения Fizz (около 65%). Думаю, это произошло из-за того, что мы непреднамеренно отсеяли хороших, занятых людей, которым не нужно было собеседование в другой компании, и в то же время навязывая легкое собеседование плохим кодерам.
Что, я думаю, мы должны были сделать вместо этого
Вместо того, чтобы давать людям домашнее задание, на оценку которого уходит 15-20 минут, нам нужно было провести 15-20-минутное собеседование по Skype, где мы задавали вопросы типа Fizz buzz. Это заняло бы столько же времени, но я, скорее всего, отсеял бы плохих программистов до двухчасового личного собеседования.
К вашему сведению -> Вот очень подробная статья о Fizz-buzz и общих методах проведения собеседований.
if
высказываниях — это те, которые вызывают нападение велоцираптора?filter fb{@($_,"Fizz","Buzz","FizzBuzz")[0+(@(2)[$_-match'[^05]$'])+(@(1)[$_-notmatch'(^([369][0369]?|[258][147]|[147][258]))$'])]}1..100|fb
Противоположный взгляд, от кого-то в окопах по обе стороны этого вопроса. Я подозреваю, что этот ответ привлечет отрицательные голоса, но это очень обоснованное мнение, выработанное за несколько десятилетий в этом бизнесе. Поскольку мне это нравится, я по-прежнему пишу код каждый день, чтобы зарабатывать на жизнь и в качестве хобби в свое «обильное свободное время», но я также принимал окончательное решение о найме пары десятков программистов и помогал проводить собеседования и посоветовали нанять еще довольно большое количество.
Лоуренс прав: найм крайне неточен. Но со временем мы становимся лучше. Короткие задачи по программированию на месте становятся все более существенной частью этого: не только для навыков, но и для отношения.
Заметьте, я сказал «короткий» . Мы даем кандидатам ноутбук с правильно установленной Eclipse (выбранной нами IDE), когда они приходят на собеседование. Правильная настройка означает, что у них есть доступ к исходному коду jdk, но нет интернета, и их просят не пользоваться мобильными телефонами во время теста. У них есть час, чтобы решить от нуля до пяти проблем, начиная с «FizzBuzz» и повышая сложность до чего-то порядка простой многопоточной системы производителя/многократного потребителя.
Никто никогда не решал все пять за час, и я не ожидаю, что кто-нибудь когда-нибудь это сделает (я могу написать решения для пяти менее чем за час, но, конечно, я видел проблемы и решал их все ранее, поэтому я не честный тест).
Между прочим, у нас были якобы опытные программисты , которые не могли правильно понять FizzBuzz. Позвольте мне повторить это еще раз: у нас было несколько кандидатов, которые не смогли правильно заполнить FizzBuzz. Обычно не следуя указаниям, но читая спецификацию, это важная часть работы разработчика.
Мы заставляем их писать код, находясь здесь, в помещении, вместо того, чтобы давать им домашнее задание по нескольким причинам, отчасти из-за риска мошенничества, а отчасти для того, чтобы дать каждому кандидату равные возможности для решения проблем. Мы также чередуем задачи в наборе задач и из него, а затем обсуждаем решения с кандидатами.
Я очень серьезно отношусь к этому вопросу. Я никогда не видел, чтобы кандидат отказывался от должности или выпадал из процесса собеседования из-за нашего теста по программированию. Но на это может повлиять тот факт, что мы сообщаем рекрутерам, которые нас обслуживают, что процесс включает в себя программирование на месте. Таким образом, мы можем просто не увидеть кандидатов, которые думают, что просьба написать код за час — это «неоплачиваемая работа». Если да, то скатертью дорога. Если они думают, что час программирования больше похож на «работу», чем час ответов на простые вопросы, или что их ответы на тестовые задачи могут принести что-то полезное, мне не нужно их отношение.
Однажды у нас действительно был один кандидат, который жаловался на тест, потому что он думал, что он слишком стар, чтобы доказывать себя (это не домыслы — он так сказал). И он хорошо справился с задачами, и у него был весь опыт, который мы хотели. Но он был ужасным сотрудником: он также, по-видимому, считал себя слишком старшим, чтобы следовать указаниям или учиться, и в конце концов нам пришлось его уволить.
Одна из вещей, которую я решил за те годы, что мы занимались этим, заключается в том, что любая компания, которая не проводит тестирование, с меньшей вероятностью примет меня в качестве сотрудника. Как и их ответы на вопросы, например, что они используют для управления исходным кодом и т. д., много ли говорит мне о том, насколько хороша компания в разработке программного обеспечения, тестирует компания.
Итак, что же делать ? Вы должны делать то, что работает для вашей организации, но я советую продолжать тесты, но делать их на месте, в рамках собеседования. Скажите им заранее, что это часть процесса, и сделайте это до того, как они встретятся с высшим руководством (но вы должны сначала встретиться с ними, чтобы успокоить их). И действительно: пропустите собеседование с высшим руководством, если оно провалится. Не беспокойтесь о популярности среди кандидатов или плакатов в Интернете. Цена плохого найма намного хуже, чем цена задержки до тех пор, пока вы не наймете хорошего .
I have just edited my answer to make clear that the jdk sources are available to the candidate
.solve
решать проблемы на основе собственных знаний и навыков, подкрепленных источниками jdk, где это необходимо, чтобы напомнить нам (и мне тоже) о деталях API, в отличие от поиска чужого решения в Google или обращения за помощью к другу. .Даже если мы игнорируем возможность мошенничества и обратный фильтр, который заставляет хороших и честных кандидатов избегать компаний с домашними тестами по кодированию, ценность домашних тестов по кодированию ограничена.
Если речь идет о старшей должности , старший разработчик с навыками работы с людьми сможет менее чем за 10 минут сказать, хорош ли старший разработчик на другом конце телефона или просто придумывает. Мы не будем точно знать, насколько хорошо, но мы будем знать столько же, если не больше, чем говорит нам каждый мыслимый домашний тест на кодирование.
Если речь идет о младшей должности , мы не ожидаем многого с точки зрения технических знаний. Мы ищем энтузиазм, желание учиться и талант — ни один из них не будет замечен в домашнем тесте по программированию. Есть слишком много вещей, на которые юниорам позволено не обращать внимания. Если мы их нанимаем, нам все равно нужно их обучать.
В качестве фильтра просто дайте им 10 минут, чтобы решить вариант FizzBuzz на месте во время первого раунда собеседований или, если вы завалены хорошими резюме и вам нужен еще один фильтр, сделайте это по Skype перед первым раундом реальных собеседований.
После того, как они прошли фильтры, вам нужно больше узнать о способностях ваших кандидатов к кодированию. Я рекомендую потратить от 30 минут до максимум 2 часов либо на парное программирование, либо на проверку кода — реальная работа, а не упражнение. Повторить 1-2 раза с разными партнерами. Преимущество парного программирования и проверки кода заключается в том, что у разработчика уже достаточно знаний, чтобы внести свой вклад.
Не беспокойтесь о том, что тесты будут разными для каждого нанятого сотрудника — цель процесса найма не в том, чтобы найти человека, который наберет лучший результат в паре измеримых и повторяемых тестов. Цель состоит в том, чтобы нанять одного человека, который будет делать работу хорошо.
Вот еще один момент, который я не вижу в существующих ответах (которые, я думаю, хорошо освещают тему в целом). Я бы внимательно и серьезно посмотрел на то, сколько времени на самом деле требуется людям для завершения. У меня было четыре собеседования при приеме на работу, во время которых мне нужно было выполнить упражнение по программированию, каждое из которых выполнялось по-разному (и каждое имело свои преимущества и недостатки). Два из четырех (номера 3 и 4 ниже) заняли намного больше времени, чем они сказали, и оба из них я в конечном итоге отказался от них из-за сложного уровня. Я описал их ниже и ранжировал от лучшего к худшему с моей точки зрения.
Итак, чтобы более точно ответить на ваш вопрос, должны ли вы провести упражнение по программированию? Да, но убедитесь, что он предназначен для проверки того, что вас действительно волнует, и не требует от интервьюируемого тонны посторонней работы. Хотите узнать об их алгоритмическом мышлении? Дайте им задачу алгоритма. Хотите узнать об их стиле кодирования? Задайте им задачу по кодированию. Хотите узнать об их процессе разработки? Обсудите с ними их процесс, пока они решают проблему.
Позвольте мне начать с:
Короче говоря, я имел дело практически со всеми способами, которыми разработчики любят проводить собеседования. Честно говоря, я серьезно сомневаюсь, что подавляющее большинство людей, которые брали у меня интервью, вообще понимали, каковы были потенциальные результаты каждого из этих тестов, и в конечном итоге просто нанимали людей в зависимости от того, «нравились» они им или нет.
Прежде чем вы даже опубликуете список вакансий, вы должны сесть и точно выяснить, кого вы пытаетесь нанять, и «разработчик» не является ответом, по крайней мере, это неправильный ответ. Хорошим ответом на это будет что-то вроде «эксперт по ипотечным доменам».
Найти кого-то, кто может написать немного кода или поискать в Google, как применить конкретный шаблон, тривиально по сравнению с поиском кого-то, кто был в бизнесе, которым вы занимаетесь, и может использовать эти знания. Другими словами, если бы я нанимал компанию, занимающуюся ипотечной документацией, я бы предпочел кого-то, кто мог бы рассказать о разнице между 15-летним фиксированным кредитом и кредитом ARM, а не того, кто мог бы написать алгоритм пузырьковой сортировки за 2 минуты. Причина в том, что «нормальные» деловые люди выдвигают всевозможные странные требования, а экспертам в предметной области легче добраться до сути того, что нужно, в то время как кто-то, кто ничего не знает, с радостью добавит бесполезные вещи или сделает приложение действительно плохим.
Возвращаясь к вопросам, задавайте только разрешенные/недопустимые вопросы .
Критично ли то, что человек может объяснить вам разницу между виртуальным и абстрактным методом? Может быть, обычно нет. Держу пари, что значительная часть разработчиков едва ли знает, когда использовать эти ключевые слова, но они не ваши суперзвезды, они рядовые пользователи, которые не могут кодировать без визуальных дизайнеров.
Важно ли определить, когда запрос открыт для инъекции sql? Для позиции Sr - абсолютно; для младшей позиции нет. Это то, что легко обучается и обрабатывается с помощью проверки кода. Следовательно, причина, по которой вы хотите, чтобы sr. знать его вдоль и поперек - чтобы они могли тренировать юниоров.
Критично ли им знать точное максимальное значение типа Int32
данных? Обычно нет - для этого уровня тривиальных знаний и нужен Google; но, возможно, вам требуется кодирование на устройствах с ограниченной памятью - в этом случае: абсолютно.
Я беру интервью и нанимаю разработчиков. Я не отправляю тесты домой — слишком легко помочь другу. Я не использую сайты онлайн-тестирования — учитывая, что подсчет очков должен быть автоматизирован, это тривиально для игры. Я не прошу кандидатов записывать ответ на fizzbuzz — почти все видели этот тест и должны знать ответ наизусть; все остальные вышли на поле в прошлом году и в любом случае являются младшими. Я также не задаю тривиальных вопросов — возможность процитировать ответ обычно просто означает, что вы уже слышали этот вопрос раньше.
Что я делаю, чтобы брать интервью у людей:
Я прошу их описать предыдущий проект или два. Все, о чем я забочусь на данный момент, это сделать их удобными и заставить их говорить. Это может быть или нет, потому что, если я не могу понять, что они говорят, я не могу с ними работать.
Я задаю им несколько конкретных вопросов по технологии, которую мне нужно, чтобы они использовали. Если это SQL-сервер, я спрошу об обновлении при соединении. Если это HTML, я передам им 10-строчный html-файл с парой классов CSS и спрошу, что получится на выходе. Это тривиальные вопросы к людям с опытом в этих областях, и они быстро отсеивают претендентов.
Если я ищу старшего разработчика, я буду задавать вопросы о знании предметной области. Не крайние случаи, а основные принципы. Если мне нужно, чтобы вы возглавили проект по бухгалтерскому учету, вам лучше иметь представление об основных принципах бухгалтерского учета.
Если я ищу младшего разработчика, я спрошу о домашних проектах. все, что я хочу знать, это тип используемой технологии. Это должно подсказать вам, что они действительно хотят сделать. Другими словами, разработчик C# вряд ли будет заниматься любимыми проектами на php. Честно говоря, я не ожидаю слишком многого от младшего разработчика, кроме как обучаемости. Если они активно работают над любимым проектом, я могу их обучить. Если они из тех, кто нуждается в людях, чтобы сказать им, что делать, есть гораздо более крупные компании, в которых эти ребята могут работать.
Я не придумываю эти вопросы на лету, возможные ответы рассматриваются заранее и соответствуют шаблону «да/нет». Если вопрос не подходит, то он не актуален. Я также спрашиваю каждого кандидата об одном и том же, если я не уверен на 100%, что не нанимаю их, и в этот момент я прекращаю собеседование.
Если по какой-то причине вы все еще настаиваете на том, чтобы отправить домой тест, убедитесь, что навыки, необходимые для успешного завершения этого теста в разумные сроки, действительно важны для вас.
У меня была одна компания, которая дала мне домашний тест, который включал в себя написание собственного поставщика криптографических услуг. Я прошел тест, потому что он был довольно интересным; они наняли меня. Никогда в свое время я не делал ничего, даже отдаленно связанного с безопасностью, криптографией или даже математикой, кроме добавления нескольких чисел. Интересно, сколько людей они угнали с этим тестом?
С точки зрения человека, ищущего работу, я обычно избегаю мест, кодирование которых занимает более 1 часа. Однажды я пошел в это место, которое потребовало почти 3-дневного проекта java-кодирования. Я сделал все это, и парень был даже впечатлен, но они сказали мне, что наняли кого-то другого после второго этапа собеседования. Поэтому после этого, если бы я пришел в компанию, я бы проигнорировал/пропустил бы любой проект, на выполнение которого требуется больше пары часов. Мое время так же ценно, как и их, и я предпочитаю не тратить его на вещи, которые никуда меня не приведут.
С учетом сказанного, если ваше упражнение по кодированию слишком длинное, возможно, люди не захотят тратить на него время. Я бы попытался сократить его так, чтобы оно занимало не более часа, но в то же время демонстрировало понимание кодирования и, возможно, устанавливая крайний срок, например, «Пожалуйста, завершите завтра до COB» или что-то в этом роде. Они по-прежнему могут «копировать и вставлять» что-то в Интернете, но усложняют это, будучи конкретными, а не тем, что вы читаете в Интернете.
Раньше я твердо верил в тесты кодирования и кодирование на доске, но я начал понимать, что они в значительной степени бесполезны, потому что
Тест на доске или краткий тест по программированию дают вам некоторое представление о человеке, но на самом деле не так много. Если только вы не планируете, что кто-то будет тратить свое время на написание кода на доске или в стиле FizzBuzz.
Вам нужен кто-то, кто:
* Обратите внимание, что большинство разработчиков решают свои проблемы, зная, какие термины искать в Google.
Последнее , что вы хотите нанять, это кого-то, кто не подходит для вашей команды, потому что он будет тянуть ее вниз.
Если у вас есть кто-то, кто технически компетентен в этом разговоре, будет проще всего сказать, будет ли этот человек худшим. Пример: к нам пришел парень и взял интервью — он сказал, что по шкале от 1 до 10 его навыки Java были примерно на 7-8. Я не думаю, что он даже знал, что Java была скомпилирована в файл jar, который позже был скомпилирован в машинный язык с помощью JVM. Я бы поставил себе, может быть, 2 или 3, и я знаю это.
На самом деле наш технический директор задал ему тот же вопрос в интервью накануне, и наш технический директор позвонил ему и объяснил, что он никак не может быть 7-8.
Наш технический директор также спросил его о его любимом проекте, связанном с ручными сканерами. Но он ничего не мог объяснить о том, как они работали, или о том, что они использовали опрос, чтобы предотвратить ожидание занятости. Он не мог объяснить ни одной технической вещи.
Того парня не взяли на работу.
Выясните, какие атрибуты вы ищете, а затем выясните, как их тестировать .
Хорошо, это нормально, но если она не собирается кодировать в бункере, лучше всего будет нанять ее в качестве подрядчика для небольшого, четко определенного проекта. Возможно, вы добавляете возможность загружать некоторые файлы с FTP, а затем выгружать их в свою базу данных. Что-то простое, не требующее особых знаний предметной области.
Пусть ваши кандидаты работают с одним или двумя существующими сотрудниками и платят им за их время. Вы увидите, как именно они работают и насколько хорошо они работают с командой. Хорошо ли они общаются? Легко ли они разочаровываются? Они настойчивы?
Есть вещи , которые вы можете сделать, чтобы нанять лучших сотрудников... но соревнование по программированию, вероятно, не входит в их число.
Как отмечали другие, некоторых разработчиков может оттолкнуть 1-2-часовое упражнение по программированию, чтобы подать заявку на работу. Что может сработать лучше, так это сеанс белой доски, когда кандидат решает проблему на белой доске во время собеседования. Это дает вам возможность пройти личное собеседование, а также убедиться, что у них есть технические навыки.
Эти проблемы не должны быть чрезвычайно сложными или предназначены для того, чтобы сбить с толку разработчика. Классический пример — FizzBuzz . Это позволяет вам увидеть, как они думают, а также узнать, что они хотя бы умеют программировать и им не нужно гуглить, как сделать цикл.
НЕ ИЗБАВЛЯЙТЕСЬ ОТ ТЕСТА КОДИРОВАНИЯ!!!!
Если вы хотите быть программистом, вы должны писать код, который что-то делает. Отвечать на простые вопросы не так уж и важно. Беседа о прошлом опыте — это хорошо, но это никоим образом не заменит умение программировать.
Делайте все возможное, чтобы привлечь людей, которые захотят пройти тест и получить эту работу. Сделайте его короче или заплатите им. Принесите их на выходных, чтобы у всех было время понаблюдать за этим человеком в действии.
Это действительно зависит от наличия людей, которые могут интерпретировать результаты тестов/наблюдений. Вы можете нанять третью сторону для проведения этого скрининга, если вы не знаете, как это сделать. Просто получить правильный ответ — это только полдела. Разработчикам нужны навыки поиска в Google, но это еще не все. Если один программист может сделать тест быстрее, это плюс.
В зависимости от вашего проекта вы можете предпочесть беглое владение языком, чтобы разработчик мог сразу начать работать эффективно. С другой стороны, вы можете пострадать в долгосрочной перспективе, если выберете менее квалифицированного программиста, который застрянет с ключевой функцией вашего приложения или создаст настолько плохую структуру, что ее трудно изменить и поддерживать. Возможно, вам было бы лучше с хорошим программистом, который готов адаптироваться и выучить нужный язык. Есть много разработчиков, которые абсолютно убегают от определенных стеков, фреймворков, языков, инструментов и операционных систем.
Разработчики — критически важные позиции, которые очень дороги для заполнения. Я понимаю ваше беспокойство по поводу того, что вы прогнали слишком много хороших, но вам нужен только один. Не скупитесь.
На мой взгляд, проблема, которую вы имеете здесь, не обязательно связана с тестом по программированию. Сначала у вас есть техническое собеседование по телефону, а затем тест на работу на дому перед личным собеседованием. Похоже, вы держите своих кандидатов на расстоянии и оставляете это на последнюю минуту перед встречей с ними. В какой момент вы ожидаете, что кандидаты решат, что они хотят работать на вас?
Я предполагаю, что ваше объявление о приеме на работу похоже на большинство, и поэтому основное внимание уделяется местоположению, зарплате и (пожеланию) списку навыков. Кандидаты на самом деле не знают, над чем они будут работать, что-то об окружающей среде или людях, с которыми им придется взаимодействовать. Вы еще не продали им работу, а здесь вы просите их дважды подтвердить свои технические возможности, прежде чем они зададут хотя бы один вопрос о работе.
Я предлагаю вам попробовать изменить формат технического собеседования по телефону, чтобы оно представляло собой 30-45-минутную беседу о работе, включая множество возможностей для вопросов от кандидатов, а затем 15 минут технических вопросов в качестве экрана, чтобы у вас все еще была возможность выбрать. лучших претендентов, не делая это слишком обременительным.
Я бы также подумал о том, чтобы перенести задачу по программированию на место перед собеседованием. Кандидатам это покажется более достижимым, дайте им стимул не отставать от процесса, и вы получите преимущество, наблюдая за реальным временем, затраченным на задачу (я думаю, вы можете быть удивлены).
Мне не нравятся домашние тесты в рамках собеседований по многим причинам, которые люди уже упоминали — удлиняется процесс найма, обесценивается время соискателя, все равно могут не перезвонить и т. д.
Моя главная проблема заключается в том, что это не соответствует тому, как на самом деле работает команда, и делает процесс собеседования односторонним. Кандидат хочет, подходит ли ему это место, включая культуру, то, как команда подходит и решает проблемы. В первую очередь вы также ищете подходящих, в том числе то, как они работают и обладают ли они нужным набором навыков. Домашний тест не дает соискателю возможности оценить мягкие качества рабочего места, а работодатели не узнают, как соискатель подошел к проблеме.
Лучшее решение может состоять в том, чтобы дать кандидату более открытую проблему, которую можно решить любым творческим способом. Вы даже можете ограничить его языком X. Вместо того, чтобы отправить его по электронной почте, пригласите их вернуться, чтобы представить его себе и высшему руководству. Это дает им автономию и стимул работать хорошо, потому что обещает еще одно интервью и показывает, что вам небезразлично, что они думают.
Если вам необходимо использовать тест для проверки того, какие кандидаты добираются до собеседования с высшим руководством, я бы включил этот тест в интервью, чтобы вы могли вместе обсудить ход их мыслей.
Вы хотите нанять программистов , которые не умеют программировать ?
Рискну предположить, что вы этого не сделаете.
Наем программистов, которые на самом деле не могут решать проблемы и писать код, — хороший способ разорить технологическую компанию. И вы не сможете эффективно отсеять программистов, которые на самом деле не умеют программировать (а таких немало ), если ваш процесс найма не включает какой-либо тест по программированию.
Готовы ли вы снизить свои стандарты, потому что все пытаются нанять программистов?
Может быть, вы, но я не думаю, что вы должны быть. Как было отмечено в комментариях и ответах, есть кандидаты, которые не собираются выполнять упражнения по программированию в рамках процесса собеседования, потому что им это просто не нужно, чтобы получить работу .
Но действительно ли это те люди, которых вы хотите нанять? Те, кто идут по пути наименьшего сопротивления, делают то, что им наиболее выгодно в краткосрочной перспективе, и на самом деле не настолько заботятся о вашей компании, чтобы выполнить простое упражнение по программированию? Это не кажется положительными качествами, и они не вселяют уверенности в том, что они смогут удержать этих кандидатов в долгосрочной перспективе (что также важно для технологической компании, поскольку кривая обучения, как правило, крутая, а стоимость обучения довольно высока). замена существующего персонала очень высока).
Так что пусть в этих других компаниях есть программисты, которых можно даже не беспокоить. Вы не хотите, чтобы нанять их в любом случае. В отличие от них, у вас есть план. Тот, который не основан на заблуждении «программист есть программист». Ваше внимание должно быть сосредоточено на качестве и устойчивости, а не на количестве трупов.
Является ли отпугивание кандидатов проблемой?
Как правило, нет, если их пугают по уважительной причине. Вы не хотите нанимать людей, которые не в курсе. И некоторые из людей, которые говорят, что их «нельзя беспокоить» из-за высокого спроса, на самом деле могут использовать это как предлог, чтобы скрыть «не очень хорошо разбирающийся в программировании, поэтому им потребуется целая неделя, чтобы выполнить 1-часовое упражнение». ситуация.
Хорошо отпугивать этих кандидатов. Вы хотите нанять способных, мотивированных кандидатов. Пока вы не отпугиваете и их, все в порядке.
Вы должны попробовать и оценить каждого кандидата, которого вы не отпугнете. И это может быть трудно сделать, если вы не даете своим техническим кандидатам какие-либо технические упражнения для оценки.
Как я могу улучшить наш процесс найма?
Проверьте содержание вашего упражнения по программированию. Является ли это разумным и подходящим для контекста интервью?
Вам не нужно что-то, на что уйдут дни (или даже часы). То, что вам нужно, это что-то простое, чтобы отсеять людей, которые просто не умеют программировать , в идеале с достаточным пространством для нюансов, чтобы люди, которые действительно хорошо программируют, могли выделиться. Помните о том, чего вы пытаетесь достичь (отсеивая неквалифицированных и несерьезных кандидатов), и убедитесь, что ваш контент соответствует этой цели. Не переусердствуйте.
Если у вас уже есть технический персонал, вы можете использовать его для проверки работоспособности (и/или помощи в разработке) вашего упражнения.
А также подумайте, как вы выполняете упражнение. Если вы просто дадите им некоторую документацию и скажете: «Вот, сделайте это в течение следующей недели и пришлите мне по электронной почте», это, вероятно, будет минимально эффективным.
Было бы лучше, если бы вы могли запустить упражнение через веб-портал, на котором кандидаты могут зарегистрироваться и начать упражнение, и как только они начнут, таймер начнет обратный отсчет с 1 часа. Затем они либо представляют что-то в течение этого часа, либо нет. Это менее открыто, лучше удерживает внимание кандидата и обеспечивает четкие крайние сроки / временные рамки, так что 1) вам не придется ждать всю неделю результата, который никогда не будет получен, и 2) неквалифицированные кандидаты не выбросить неделю своего времени, пытаясь выполнить ваше упражнение по программированию. У них есть 1 час, они либо решают проблему, либо нет, и вы сразу знаете результат.
А еще лучше было бы пригласить их на собеседование на месте. Представьте их члену вашей команды разработчиков. Закройте их в комнате вместе с рабочей станцией. Попросите вашего разработчика начать с некоторых общих/мягких вопросов для собеседования, а затем они могут программировать в паре с кандидатом, чтобы решить упражнение по программированию. Это скажет вам не только о том, умеет ли кандидат программировать, но и о том, насколько хорошо он работает с вашей командой. Ваш разработчик также должен иметь возможность собрать много дополнительной информации, которую вы просто не получите, просматривая кучу кода, написанного кандидатом, а затем отправленного вам по электронной почте.
Нижняя линия
Нет, вы не хотите избавляться от своих упражнений по программированию. Но вы можете просмотреть его на предмет соответствующего содержания, убедиться, что его решение не займет слишком много времени, а также посмотреть, как вы вписываете его в общий процесс собеседования.
Самостоятельное домашнее упражнение, вероятно, не лучший подход. Но решение не в том, чтобы полностью отказаться от упражнения. Во всяком случае, если вы не согласны нанимать дерьмовых программистов.
Лучше отпугнуть много плохих кандидатов и горстку хороших, чем открыть шлюзы и нанять несколько плохих.
В качестве прямого ответа на ответ Бобо (который является принятым ответом, потому что парень написал его и сам принял, что, честно говоря, мне кажется немного жалким):
Вы исходите из совершенно неправильной предпосылки. Я не хочу работать на тебя. Откуда вы взяли, что кто -то хочет работать на вас ? Вы всего лишь одна из многих компаний, предлагающих работу. Я не хочу работать на тебя. Я хочу оценить вашу компанию, и если вы превзойдете всех остальных, тогда я хочу работать на вас.
Там с десяток компаний, где я могу работать, ты просто где-то в очереди. Сначала я смотрю, какие есть компании, отправляю им свое резюме, они могут прочитать его и быть впечатлены соответствующим образом или нет, затем у вас обычно происходит быстрый телефонный разговор, где они показывают мне, что у них есть интересная работа, и я показываю, что у меня есть навыки , и любой тест по кодированию может прийти в самом конце.
Ваш домашний тест ставит вас в самый конец очереди. Чтобы компенсировать это, вам придется опубликовать диапазон зарплат, который на 10 000 фунтов стерлингов выше, чем у других. Поиск работы в любом случае занимает много времени; тот, кто делает это в десять раз дольше, находится в конце списка. Если у меня будет выбор между отправкой резюме и телефонным собеседованием в десяти компаниях, а также выполнением домашнего задания за вас, угадайте, что я сделаю.
Так что происходит, вы находите кандидатов, которые хотят работать на вас, потому что они не получат работу в другом месте .
Одна вещь, кажется, никто не упомянул; даже если тест не ваша проблема, вам следует искать другие способы привлечения талантов.
Если вы ищете хороших людей на основе их существующих опубликованных работ, вам не нужно запускать для них тест .
Если к вам просто направляют людей через вербовщиков и фильтрацию, вы уязвимы к тому факту, что ваши потребности и потребности вербовщиков не полностью совпадают. Они хотят поместить кого-то с вами. Вам нужен инженер высшего уровня. Если они могут найти инженера высшего уровня, это замечательно, потому что вы вернетесь к ним, но если они не смогут (а у инженеров высшего уровня, как правило, есть дела, которые оставляют мало времени для собеседования), они довольствуются просто размещение умеренного инженера в хорошем костюме. Потеря для них — это своего рода долгосрочная репутация, но она незначительна по сравнению с отсутствием своих целей. Если в вашем случае это доказуемо не так, держитесь за этого рекрутера и никогда не отпускайте его (*),
Что вы хотите делать, так это находить доказуемо интересных кандидатов. Поищите в StackOverflow и GitHub лучших инженеров (я слышал , что в StackOverflow есть инструмент, который помогает в этом ), найдите технически интересные компании, которые производили хорошее программное обеспечение, но облажались с финансами или монетизацией и только что уволили 10 высококлассных инженеров. Проведите время, работая в университетах, помогая с проектами последнего года обучения. Определите хороших потенциальных кандидатов и подружитесь с ними, желательно лично или удаленно; даже если у них есть предложения, хорошие инженеры общаются с хорошими инженерами. Кроме того, они могут рассказать вам, как они относятся к процессу найма.
Это звучит как много работы? Это должно . Одна из причин, по которой найм кажется таким «трудным», заключается в том, что вы пытаетесь сделать это максимально эффективно. Чем больше времени, умственных способностей и ресурсов вы отводите на это, тем легче это получается. Не лучше ли потратить эти ресурсы на доставку продукта — это вечный вопрос руководства. Но если вы тратите много времени на «фильтрацию дерьмовых программистов», это сжигание денег. По крайней мере, шаги, описанные выше, имеют неотъемлемую ценность, выходящую за рамки процесса найма.
(*): Черт, найми их .
Я думаю, что вы немного неправильно сформулировали свой вопрос, но то, как вы его сформулировали, отражает распространенное заблуждение о найме программистов. Кандидатов «отпугивает» задание по программированию, или они фильтруют вашу компанию из собственных соображений из-за задания?
Анекдот, подтверждающий мою точку зрения: не так давно во время поиска работы я увидел вакансию в компании, которая показалась мне средней. То, как они описали свой процесс программирования, звучало довольно хорошо, но было очень мало деталей, поэтому я был настроен скептически. Может быть, они были хорошим местом для работы, а может быть, и нет. Но я подумал, что посмотрю, как добраться до экрана телефона, чтобы разобраться в деталях и посмотреть, так ли они хороши, как кажутся.
Я нажал на объявление о вакансии, и меня тут же попросили написать сопроводительное письмо. Фу. Я думаю, что каждый кандидат ненавидит сопроводительные письма. Я не знал эту компанию и не пользовался их продукцией, так что я мог сказать о них? Я погуглил их, прочитал их веб-сайты и предложения продуктов, выяснил, где я, скорее всего, впишусь в их организационную структуру, если меня наймут, и придумал несколько абзацев, «продающих» себя.
Затем я предоставил свое резюме и доступ к своему LinkedIn, но сразу же после этого меня попросили заполнить соответствующий опыт работы с датами и описаниями. Эта информация есть и в моем LinkedIn, и в моем резюме, было нелепо предоставлять одну и ту же информацию 3 раза. Я закрыл вкладку браузера. Через 5 минут я обращался в другую компанию, которая предлагала действительно классные преимущества, которых не было в первой. На самом деле я мог подать заявку в другую компанию с лучшими преимуществами быстрее, чем я смог бы прыгнуть через обручи, которые первая компания хотела от меня.
Вы должны быть уверены, что ваши кандидаты заинтересованы именно в вашей компании, прежде чем предлагать им какие-либо обручи, через которые они могут прыгнуть, иначе они не прыгнут. Вы делаете это?
Примеры качественных преимуществ, которые я обычно вижу, предлагают технологические компании:
Этот список не является исчерпывающим, но если ваша компания не предлагает одну или несколько вещей, подобных пунктам из этого списка, любое препятствие в вашем процессе найма может заставить кандидата искать того, кто это делает.
Итак, допустим, что по какой-то причине вы не предлагаете или не можете предлагать стимулы, подобные вышеперечисленным, для ваших кандидатов, чтобы убедить их тратить деньги на написание кода для вас бесплатно. Тогда что вы можете сделать? У меня есть две альтернативы, которые большинство кандидатов предпочтут рутинным задачам программирования:
Альтернатива № 1. Платите им почасовую ставку за выполнение вашей задачи по программированию, как если бы они были подрядчиком. Это побуждает их относиться к этому серьезно как по профессиональным причинам, так и потому, что... им платят. Это стоит вам денег, как и любая форма рекрутинга. Если вы действительно хороши, вы даже можете найти для них способ диагностировать и исправить реальную ошибку в вашем коде, и в этом случае вы получаете что-то полезное за свои деньги.
Альтернатива № 2. Они, вероятно, уже написали бесплатный код, который они покажут вам, если вы просто спросите. У большинства программистов есть код на Github, Bitbucket, сайтах вопросов и ответов, таких как Stack Overflow, или они могут предоставить вам некоторый код, который они еще не опубликовали.
Зачем заставлять их писать код, который им безразличен, если вместо этого вы могли бы позволить им разделить с вами свой увлеченный проект? Это гарантированно будет менее скучным, чем чтение еще одного решения той же общей проблемы в сотый раз. А поскольку код уже написан, это экономит время как вам, так и вашему кандидату. Кроме того, вы увидите, какой код им нравится писать, что дает представление об их личности и о том, насколько хорошо они вписываются в культуру вашей компании.
Не принимая во внимание все аргументы за или против конкретных тестов, все сводится к компромиссу: большее количество фильтров отпугнет некоторых хороших кандидатов, меньшее количество фильтров пропустит плохих кандидатов, которых вам, возможно, придется заменить вскоре после приема на работу.
Все сводится к тому, чтобы смотреть на вашу деловую ситуацию, а не на общие практики.
Есть ли у вас в настоящее время проблема, связанная с нехваткой квалифицированных кандидатов и неспособностью нанимать сотрудников так быстро, как это необходимо для достижения ваших бизнес-целей? Вам нужно отказаться от этой первоначальной задачи программирования.
Есть ли у вас в настоящее время проблема, когда вы не удовлетворены качеством ваших недавних наймов? Затем вам нужно реализовать больше фильтров, подобных этому.
У вас есть обе эти проблемы, и обе одинаково болезненны? Поздравляем, вы нашли правильный баланс для этого компромисса.
Я действительно думаю, что это может помочь установить, кто действительно знает языки, указанные в их резюме.
Если это действительно ваша цель, я бы рассмотрел другой подход. Как указывалось в других ответах, ДА, у вас всегда должен быть вопрос о кодировании, но вопросы кодирования редко касаются деталей языка. Некоторые вопросы, которые я видел, полезны для тестирования:
Инженеры, которые видели кое-что, знают, как ответить на эти вопросы довольно легко и всего за несколько минут.
ИМХО, вероятность того, что новый выпускник колледжа сможет написать сложный программный код на начальном уровне, составляет почти 0%. Если ваш тест по кодированию занимает одну неделю, вы должны четко указать в своем требовании, что вы ищете программистов с опытом работы не менее 2 лет, потому что я думаю, что для выполнения работы с кодом требуется большой опыт. неделя для завершения. И я думаю, что если вы ищете новых выпускников, то разработайте свой тест соответствующим образом, и вы можете найти много идей в Интернете, или вы можете попросить старших программистов, работающих на вас, разработать подходящий тест для новых выпускников.
Думал, что отвечу на этот вопрос, прошел год с тех пор, как он был опубликован, и мы застряли на нем.
РЕЗУЛЬТАТЫ
Положительные стороны подхода
1) Домашний тест отсеивает демотивированных кандидатов и заменяет их кандидатами, которые действительно хотят работать на вас. Уже одно это делает его стоящим занятием, поскольку мотивированные люди = продуктивные сотрудники. Если они не удосуживаются выполнить одночасовое задание, то это многое говорит об их отношении к получению работы.
2) Я согласен с другими, что домашний тест не должен длиться дольше часа - мой очень простой. Я получил следующие результаты от добавления его в процесс найма:
а) Некоторые кандидаты не заполняют его. Не стоит нанимать.
б) Некоторые кандидаты пытаются выполнить задание, но плохо его выполняют. Не стоит нанимать.
в) Некоторые кандидаты мошенничают, и в этот момент стоит задать уточняющие вопросы об их назначении. Мы сделали это с недавним кандидатом, который тогда не удосужился ответить на наше электронное письмо о задании. Не стоит нанимать.
г) Некоторые кандидаты, услышав техническое задание, вдруг отзывают свою заявку, к которой раньше проявляли БОЛЬШОЙ интерес. Вероятно, увернулся от пули.
д) Некоторые кандидаты справляются очень хорошо, комментируют свой код и в одном или двух случаях предоставляют документацию. Стоит нанять.
Минусы подхода
1) Отсеивание заявок от кандидатов, которых отложили из-за задачи взять домой, удлиняет поиск подходящего кандидата. НО, с другой стороны, положительно для компании, так как снижает вероятность плохого найма, что опасно.
2) Не всегда можно сказать, обманул ли кто-то, но именно поэтому это часто подкрепляется техническим интервью по телефону.
Результат этого подхода
Один из наших сотрудников, которого я нанял, используя этот подход, оказался звездным сотрудником. Он до сих пор работает у нас спустя год. Он надежен и технически талантлив.
Незнакомая мышь или необычная раскладка клавиатуры (особенно Mac по сравнению с ПК) или другая IDE могут резко снизить производительность без какой-либо разницы в компетенции. Кроме того, полное приложение часто требует большого количества шаблонного кода, который у разработчика может не хватить времени для ввода или даже для запоминания. Запуск нового приложения полностью с нуля на самом деле является очень редкой задачей; большая часть работы сосредоточена на расширении или улучшении существующего кода.
Поэтому предлагаю давать на собеседовании только очень короткие и более тщательно подготовленные задания. Лучше всего попросить написать функцию, которая должна принимать заданные параметры и возвращать объясненный результат, и я бы посоветовал сделать это на бумаге, вообще избегая компьютера.
Я бы отправил их на онлайн-викторину, где можно отфильтровать людей, которые понятия не имеют. По крайней мере, вы бы почувствовали, знают ли они, о чем говорят.
В начале моей карьеры хедхантеры говорили мне: «Вы противостоите людям, которые читают коробку и помещают заявку в свое резюме». Я предполагаю, что это все еще может случиться с молодыми и наивными, но как только вас разгромят в нескольких интервью, вы поймете, что это плохой совет...
Недавно я получил домашний тест. Это было полноценное приложение, которому нужно было подключиться к серверу сокетов, который должен был имитировать медленную подачу. Клиент имел возможность динамически обновляться, иметь возможность отменить подачу, а также писать и читать XML.
Я все равно хочу изучить сокеты, так как думаю об их использовании для покерного сервера, который я пишу.
Я хотел изучить XMLreader и XMLwriter.
Сначала думал забыть. Но потом я увидел в этом шанс доказать, на что я способен. У меня нет степени CS, поэтому я скучаю по некоторым теоретическим материалам. Они спросили, каковы 3 столпа ООП, и хотели сказать, кого это волнует.
Мое сообщение: люди, которые хотят получить работу, должны пройти тест.
Рон Бейер
Кошачий столб
неопределенный
Джейн С
пользователь41761
арот
FreeAsInBeer
Магу
icc97
Агент_L
бобо2000
Draco18s больше не доверяет SE
Нобилис
нжзк2
бобо2000
Draco18s больше не доверяет SE
бобо2000
Draco18s больше не доверяет SE
бобо2000
Draco18s больше не доверяет SE
бобо2000
Draco18s больше не доверяет SE
ДжеймсРайан
бобо2000
Draco18s больше не доверяет SE
бобо2000
ДжеймсРайан
ДжеймсРайан
Эмори
Чарльз Даффи
Чарльз Даффи
йетимонер
бобо2000
ДжеймсРайан
бобо2000
ДжеймсРайан
бобо2000
Д.А.
бобо2000
Д.А.
бобо2000
Д.А.
бобо2000
Д.А.
бобо2000
Д.А.
Облако
бобо2000
бобо2000
Облако
бобо2000
Облако
Майкл Шоу
СуперУберДупер
бобо2000
СуперУберДупер
Раду Мурзеа
бобо2000
пользователь14065
Йоханнесберг
бобо2000
бобо2000
Демончерный
Демончерный
бобо2000
Демончерный
бобо2000
ЭпикКип