Является ли «White-Board-Coding» неуместным во время интервью? [закрыто]

30

Это довольно субъективный вопрос, но я бы хотел услышать отзывы / мнения интервьюеров / интервьюируемых по этой теме.

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

Что касается последней части, мы просим респондентов написать небольшой фрагмент кода (4-5 строк) на доске и объяснить, как они его проходят. Позвольте мне прояснить, цель не состоит в том, чтобы поймать людей Мы не ищем идеальный синтаксис. Черт, это может быть даже псевдокод. но дело в том, чтобы дать им очень простую проблему и посмотреть, сможет ли их мозг сообщить нам решение. Под простыми задачами я подразумеваю «Перевернуть строку», «FizzBuzz» и т. Д.

Обратите внимание, что мы всегда сначала запрашиваем явный язык. Мы дом .NET C #. мы говорили только «псевдокод», когда кто-то глушил / действительно боролся с кодом.

У меня такой вопрос: «Неуместно ли / необоснованно ли ожидать, что программист напишет фрагмент кода на доске во время интервью?»

Эойн Кэмпбелл
источник
13
Вполне разумно ИМХО (и предотвратило бы несколько довольно плохих наемных работ у моего бывшего работодателя, если бы только это было реализовано).
Писквор
3
Это действительно удручающая вещь с точки зрения интервьюера. Как могут люди, которые претендуют на 5-летний опыт программирования, не иметь этих базовых навыков? и 90% нет. (то есть 90% после немедленного отсеивания 70% резюме и 70% отказов при телефонном интервью)
Майкл Шоу
18
We're not looking for perfect syntax.делает это разумным, на самом деле я бы сказал, рекомендуется! Это неразумно критиковать синтаксические ошибки на доске кодирования.
Qwerky
16
также не ожидайте идеального почерка. Письмо на доске - это навык, которого большинство людей не имеют, и большинство программистов по моему опыту имеют, мягко говоря, жестокий почерк, а вертикальное написание только усугубляет это.
jwenting
3
Подходит, да. Эффективно, нет. Один слабый разработчик, которого я лично нанял, блестяще выступил на доске.
фунтовые

Ответы:

47

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

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

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

Майкл Шоу
источник
1
спасибо за отзыв птолемей. очень признателен. Вы ответите точно, что я ищу, а также как я буду подходить, чтобы помочь кандидату в решении проблем. Но, как вы также заметили, я поражен тем, что люди, претендующие на 5+ лет, не могут этого сделать.
Эойн Кэмпбелл
1
Самая большая опасность в этом заключается в том, что возникает разочарование, и вы предлагаете работу тому, кто не справился с заданием на программирование, но преуспел в других аспектах собеседования, как технический тест. Реальность такова, что эти кандидаты прочитали книгу и имеют хорошую память. Вы заставляете людей читать книги? или писать программы?
Майкл Шоу
@EoinCampbell, если для вас важны коммуникативные навыки, то это вполне уместно.
1
поэтому, как кандидат, вы ошибаетесь, а потом я немного позже (не сразу) довожу эту ошибку до вашего сведения. Вы будете чувствовать себя под давлением в этот момент. Это ключевая часть интервью, чтобы узнать, как вы реагируете? Можете ли вы справиться с давлением опечатка на собеседовании? Если вы будете таять под этим давлением, что вы будете делать, когда мы, как команда, вынуждены поставить программное обеспечение в срок?
Майкл Шоу
1
Я использовал кодирование доски, положительным моментом является то, что он находит действительно хороших младших программистов. Негатив кодирования доски - высокая частота отказов, но эти люди не очень хороши для начала. Я попросил людей написать всего одну строчку кода на плате, и у меня все еще были очень высокие показатели отказов. С другой стороны, в качестве собеседника мне задавали вопросы по доске, и я всегда находил вопросы разумными. Я предпочитаю кодирование на доске, а не список любимых алгоритмов для конкретных задач.
Михаил Шопсин
15

Мой вопрос: «Разве это неуместно / неразумно ожидать, что программист напишет фрагмент кода на доске во время интервью?»

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

nikie
источник
Я сознательно не использую компьютер в интервью из-за эффекта интеллекта. Неопытный кандидат программы нажатием кнопки. и выбрав что-то из списка. Доска делает это очень очевидным ...
Майкл Шоу
5
@ Птолемей: Вы действительно так думаете? Для какого типичного упражнения на доске, такого как «программировать поиск в глубине по дереву», какой смысл использовать Intellisense?
nikie
2
Доски / документы не разбиваются, и все знают, как на них писать. Если вы дадите мне IDLE для решения проблемы, я предполагаю, что вы идиот, а если вы дадите мне Eclipse, я потрачу половину своего времени на борьбу с сочетаниями клавиш по умолчанию.
6
Intellisense (и я уверен, что функции автозаполнения других IDE тоже можно отключить). Или вы можете дать им Блокнот (или более приятную альтернативу, например Блокнот ++, который выделяет синтаксис, но не имеет автозаполнения и т. П.). Конечно, это может привести к сбою, но реалистично: сколько ошибок с Showtopper вы встретили в Блокноте?
CVn
3
Даже если это просто notepad.exe, с ним гораздо проще работать, чем с бумагой или доской. Вы можете вставлять или удалять строки, что очень тяжело для физических носителей.
CodesInChaos
10

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

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

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

В последней части мы просим респондентов написать небольшой фрагмент кода (4-5 строк) на доске и объяснить, как они его проходят.

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

На твоем месте я бы сделал это Для последней части ...

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

treecoder
источник
6
Если часть вашего процесса набора персонала заключается в предложении стандартного контракта с фиксированным сроком на 3 месяца, сколько человек действительно уйдут с должности перми, чтобы принять ваше предложение?
Майкл Шоу
1
Я имел в виду последнее в том смысле, что это был последний пункт в моем списке. Я смешиваю порядок вещей в интервью в зависимости от того, как прогрессировала часть разговора и где я думаю, что их сильные и слабые стороны. Что касается предложения им краткосрочного контракта ... это просто нереально в реальной компании небольшой компании. У меня нет времени / ресурсов для того, чтобы брать на себя 3-месячный риск для людей, которые могут не сработать, и, как отметил Птолемей, я сомневаюсь, что кандидаты будут слишком заинтересованы.
Эойн Кэмпбелл
«Большая часть мозга человека занята постоянным осмотром того, как они выходят - только немногие могут держать нервы». Я всегда чувствовал, что это важно отметить, особенно с некоторыми новыми людьми, поступающими или заканчивающими колледж. Я знаю, что я потерпел крушение в своих первых нескольких интервью, волнуясь об этом до такой степени, что я перепутал некоторые из самых простых вопросов, просто потому что я так нервничал. Конечно, ты мало что можешь сделать. Все, что я мог сделать, это просто перейти к следующему собеседованию, в конце концов освоившись с процессом.
Кувшин
1
@TheJug полностью согласен, и мы будем намного мягче с Juniors & Grads, чтобы убедиться, что они не перегружены процессом, но у нас были старшие (7-8 лет опыта) разработчики, борющиеся с этим.
Эойн Кэмпбелл
1
«Нанимайте их для очень крошечного (но реалистичного) проекта ...» - предлагаете ли вы «нанять», например, трех кандидатов, претендовавших на должность, даже если вы планируете оставить только одну? Это кажется мне очень несправедливым! Возможно, это не улучшит командный дух.
nikie
8

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

Тамас Селеи
источник
7
Я не знаю этого парня, потому что он не был нанят.
Кевин Клайн
4
@kevincline к ущербу компании, если вы не зарабатываете деньги, заставляя людей держать свои нервы.
JayPea
1
@JayPea: как я узнаю, что человек великолепный программист, если я не могу показаться им кодом? Единственной альтернативой будет рекомендация кого-то из сотрудников. Все любят нанимать по надежным рекомендациям, но это довольно маленькая группа.
Кевин Клайн
1
@kevincline Прочитайте мой ответ, я не говорю, что вы не должны делать кодирование доски на собеседовании с разработчиком.
Тамас Селеи
@JayPea Я уверен, что наличие сотрудников, которые не нервничают в стрессовых ситуациях, является важным фактором финансового успеха многих компаний.
Кайл Стрэнд,
4

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

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

Иван Крояч Карачич
источник
ну, это больше, чем общение. конечно, они должны быть в состоянии общаться, но они также должны быть в состоянии рассказать мне свое решение простой проблемы.
Эойн Кэмпбелл
4

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

  • Хороший код не пишется, он переписывается. Доска в значительной степени неизменна, так как ее трудно изменить после того, как вы ее написали. Должно быть как можно проще изменить свое мнение, как только вы лучше поймете проблему.
  • Нахождение на собеседовании является стрессовой ситуацией, поскольку нет необходимости оказывать дополнительное давление на кандидата. Многие компьютерные люди не имеют хорошего почерка. Современные IDE предоставляют множество инструментов, к которым вы привыкли. И возможность что-то гуглить в ту минуту, когда вам это нужно, также является частью стиля работы большинства программистов. Зачем убирать все эти вещи и создавать искусственную среду, в которой им никогда не придется работать, если вы сделаете им предложение?
  • Мы также очень заинтересованы в способности писать хорошие тесты, может быть, даже делать TDD. Это невозможно увидеть во время кодирования доски.

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

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

Игель
источник
1
Доски неизменны? Вы просто стираете что-то и переписываете это по прихоти, вот что делает их полезными, особенно в обучении. Вы должны жить в альтернативной вселенной.
whatsisname
Может быть, слово «неизменный» - неправильное слово (я взял его у medium.com/dima-korolev/… - кто считает это преимуществом). Тем не менее, по сравнению с редактором трудно добавить то, для чего у вас не осталось места.
iGEL
3

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

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

Но да, доска идеально подходит, хотя я думаю, что вы должны принять другой набор проблем. Предоставьте им реальную проблему и попросите их нарисовать кучу скандалов на языке UML, чтобы объяснить их общую стратегию решения этой проблемы. Дайте им компьютер с Интернетом, чтобы они могли искать сторонние библиотеки, которые они могли бы использовать в качестве «черных ящиков» в своем сквибл-бэке.
Через несколько минут вы действительно увидите, как они решают проблемы. На самом деле вы можете сделать это очень интересной вещью, выбирая проблемы, для которых у вас не обязательно есть решение, и пытаясь «решить» их вместе, чтобы увидеть, насколько хорошо они общаются и насколько хорошо они могут включать вклад (однако не не давите на них слишком сильно - некоторые люди могут просто замерзнуть, если вы это сделаете). А затем добавить несколько требований на лету. Это похоже на разработку программного обеспечения без реализации и, самое главное, без отладки, поэтому 15 минут - это много времени.

back2dos
источник
«уже должно быть установлено / определено, что интервьюируемый может программировать» - как? Либо у вас есть предварительное собеседование, и в этом случае вопрос ОП заключается в том, является ли кодирование доски дословным в предварительном собеседовании, или вы фактически берете на себя слово кандидата, что приводит к катастрофе. Рекрутеры и резюме могут (и делают) лгать, блоги и репозитории github могут быть плагиатом.
Джулия Хейворд,
@JuliaHayward: Установление основных навыков кодирования кандидата на предварительном собеседовании - это совсем другое. Вам на самом деле не нужно приглашать кого-то на сайт, чтобы сделать это. Вы можете отправить им небольшую проблему, которую они могут решить. Возможно, обсудите это решение (или код GitHub) лично. Самое важное: очень маловероятно, что вы найдете кандидата, способного изящно справиться с типом проблемы, которую я предлагаю, но не в состоянии решить проблемы типа fizzbuzz. Интервью следует использовать, чтобы определить, насколько способен кандидат справиться со сложностью, типичной для реальных проблем.
back2dos
Вам может не потребоваться присутствие кого-либо на месте, но, по крайней мере, вы должны разговаривать по телефону с кандидатом, который рассказывает о том, как вы используете кодирование. Простая раздача вопроса и ожидание отправки файла zip по-прежнему сопряжена с риском олицетворения; В качестве крайнего примера я однажды выполнил тест на FooCorp, а затем просто из интереса прогуглил «Тест на кодирование FooCorp» и обнаружил, что кто-то опубликовал довольно хорошее решение.
Джулия Хейворд
@JuliaHayward: если вы предоставите каждому кандидату одну и ту же проблему, то, конечно, ответ станет Google-совместимым. Не удивительно, правда? Но, опять же, мой ответ остается: не делайте кодирование доски на уровне fizzbuzz в интервью. Это просто показывает, что вы не удосужились подготовить хорошую и интересную задачу. Как вы сказали сами, есть способы установить базовые навыки программирования прежде, чем вы пригласите кандидатов на свою доску.
back2dos
3

Позвольте мне ответить на другой вопрос:

Дает ли написание кода на белой доске какое-либо реальное преимущество в оценке возможностей программирования по сравнению с набором кода и выполнением кода на компьютере?

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

Кевин С.
источник
это только ваше мнение или вы можете как-то это подтвердить?
комнат
2
@gnat Я просто задаю вопрос. Вторая половина ответа - моё мнение, да, но это должно быть довольно ясно по используемому языку. Кроме того, сам вопрос начинается с признания его субъективности и, в частности, запрашивает мнения по этому вопросу. Я не думаю, что снижение было оправданным.
Кевин С.
@ Кевин С. Я думаю, что независимо от вашей формулировки, вы делаете очень хорошее замечание. Кодирование на доске отличается от компьютерного кодирования. Это мнение? Конечно, нет, если доски не могут выполнять код.
Леандро Канилья
2

Нет, но IMO лучшим подходом было бы использовать доску по ее прямому назначению и использовать UML / sketchches / notes для какого-то вымышленного проекта, а не старый «напишите мне SQL-запрос для получения всех записей» или «напишите метод, который переворачивает строку ".

Одно из лучших интервью, которое я проводил, было около 20 минут, чтобы обсудить с ведущим разработчиком архитектуру (не программную) для особняка сумасшедшего ученого (в комплекте с секретным укрытием, Death Ray и питомником собак). Он познакомился с моим подходом к решению проблем, и эта проблема была чем-то забавным, а не типичным для rote-программирования, который тысячи раз решали современные языки. Между прочим, я также делал такой код раньше, но чувствовал себя гораздо более «под давлением», чем в части архитектуры.

Уэйн Молина
источник
2

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

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

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

hotpaw2
источник
0

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

Paddy3118
источник
0

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

  • Приветствую, добро пожаловать от HR.
  • Несколько слов обо мне, о компании и т.д ... и она объяснила остальную часть интервью.
  • Она дала мне ноутбук с программой, которая пропустила несколько частей, из-за этого провалила модульные тесты. Недостающие части были прокомментированы там как тексты, речь шла о выполнении основной задачи, такой как создание связи между несколькими классами и введение простой бизнес-логики.
  • Если все прошло хорошо, юнит-тесты стали зелеными.
  • Прощание и согласие вернуться через несколько дней.
  • В тот день лидер встретился со мной и спросил о готовой программе, что я делал и почему.
  • Также этот лидер спросил о моем прошлом опыте и нескольких других вопросах.

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

CsBalazsHungary
источник
-1

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

Панкадж Упадхяй
источник
1
«В основном или все интервьюеры делают это», это довольно редкое ИМО.
Кирк Бродхерст
Я думаю, что все это делают. Они редко бывают с ПК или ноутбуком, чтобы проверить, решаете ли вы конкретную проблему с кодированием. Но, может быть, все по-другому. Если вы хотите, я могу отредактировать эту вещь в ответе?
Панкадж Упадхяй
Видите ли, я бы согласился, что это довольно редко ... За последние 9 лет я занимал 4 вакансии, и меня никогда не просили написать код на бумаге / wb. Любая кодировка была в IDE. вот почему мне интересно, это неуместно. Я ожидаю, что разработчик сможет выкинуть код «Перевернуть строку» максимум за пару минут без помощи IDE / Intellisense.
Эойн Кэмпбелл
Я сделал редактирование на основе вашего опыта. На двух собеседованиях, в которых я был, они дали мне ручку и бумагу, чтобы написать, как напечатать серию Фибоначчи и алгоритм для слияния. Итак, я думал, что в основном все идет так :-)
Pankaj Upadhyay
Следует отметить, что мне никогда не приходилось писать код на компьютере; Я должен был код для записи на бумаге дважды (как , когда я был младший) , и я должен был нарисовать схему архитектуры на доске один раз . Это из примерно 20 интервью ...
Кирк Бродхерст