Невже "Кодування білою дошкою" недоцільно під час інтерв'ю? [зачинено]


30

Це дещо суб'єктивне питання, але я хотів би почути відгуки / думки будь-яких інтерв'юерів / респондентів на цю тему.

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

Остання частина, яку ми просимо респондентів, - це написати на дошці невеликий фрагмент коду (4-5 рядків) і пояснити, як вони проходять його. Дозвольте мені зрозуміти, мета - не виловлювати людей. Ми не шукаємо ідеального синтаксису. Пекло це може бути навіть псевдо-код. але справа в тому, щоб дати їм дуже просту проблему і подивитися, чи може їхній мозок повідомити нам рішення. Під простими проблемами я маю на увазі "Зворотний рядок", "FizzBuzz" тощо.

Зауважте, що ми завжди спочатку просимо явної мови. Ми - .NET C # будинок. ми говорили лише про "псевдокод", коли хтось заблокував / насправді бореться з кодом.

Моє запитання: "Чи недоцільно / нерозумно очікувати, що програміст під час інтерв'ю напише фрагмент коду на дошці?"


13
Цілком розумний ІМХО (і заважав би, щоб у мого колишнього роботодавця були дуже погані роботи, якби це було реалізовано).
Пісквор

3
З точки зору інтерв'юера це зробити дуже гнітюче. Як люди, які претендують на 5-річний досвід програмування, не мають цих основних навичок? а 90% - ні. (ось 90% після негайного відмивання 70% резюме та 70% відмов при телефонному інтерв’ю)
Майкл Шоу

18
We're not looking for perfect syntax.робить це розумним, адже я б сказав, що рекомендується! Це нерозумно критикувати синтаксичні помилки на дошці кодування.
Qwerky

16
також не чекайте ідеального почерку. Писання на дошці - це навик, який у більшості людей немає, і більшість програмістів, на моєму досвіді, мають жорстокий почерк, м'яко кажучи, писати вертикально лише робить це гірше.
липня 1111

3
Відповідно, так. Ефективна, ні. Один слабкий розробник, якого я особисто найняв, зробив блискуче на дошці.
pdr

Відповіді:


47

На мою думку, це дуже доречно. Якщо ви хочете, щоб робота займалася певною майстерністю, то, цілком доречно, слід очікувати демонстрації цієї навички на співбесіді.

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

Якщо як кандидат, що стикається з цією технікою, насамперед розслабтесь. Йдеться про те, щоб оцінити вас як програміста та ваші думки. Йдеться не про ваш ідеальний синтаксис. Якщо ви зробите синтаксичну помилку, я можу зіграти роль компілятора і сказати вам, що код не може скластись у певному рядку, і надішле повідомлення про помилку, і подивіться, як ви реагуєте. Аналогічно, якщо ви додасте; на циклі або у викладі if, який збирається, я зіграю на відладчику і поговоримо вас одним кроком через код. Знову ж таки, це не про помилку, а про те, як би ви впоралися з помилкою, і чи ваші мислені процеси хороші.


1
дякую за відгуки ptolemy цінується. Ви відповідаєте, опишіть, що саме я шукаю, а також як я підійшов би допомогти кандидату через проблеми. Але, як ви також вказали, я вражений кількістю людей, які подають заявки на 5+ років ролей, які не можуть цього зробити.
Еойн Кемпбелл

1
Найбільша небезпека в цьому полягає в тому, що розчарування виникає, і ви пропонуєте роботу тому, хто програв завдання програмування, але добре справився з іншими апсектами інтерв'ю, як технічний тест. Реальність така, що ці кандидати прочитали книгу і мають гарну пам’ять. Ви прибираєте людей читати книги? чи писати програми?
Майкл Шоу

@EoinCampbell, якщо для вас важливі навички спілкування, то це цілком доречно.

1
тож як кандидат ви помилитесь, я потім трохи пізніше (не відразу) доводжу цю помилку до вашої уваги. Ви відчуєте себе під тиском в цій точці. Це ключова частина інтерв'ю: бачите, як ви реагуєте? Чи можете ви впоратися з тиском друку на співбесіді? Якщо ви плавитеся під цим тиском, що ви будете робити, коли ми як команда тиснемо, щоб доставити програмне забезпечення до встановленого терміну?
Майкл Шоу

1
Я використовував кодування на дошці, позитивна частина полягає в тому, що вона знаходить дійсно хороших молодших програмістів. Негативом кодування на дошці є високий показник відмов, але для цих людей не дуже добре починати. Я попросив людей записати на дошці всього лише один рядок коду, але все ще були дуже високі показники відмов. З іншого боку, мені були задані питання дошки як співбесідник, і я завжди вважав питання розумними. Я дуже віддаю перевагу кодуванню на дошці, аби перелічити улюблені алгоритми для конкретних проблем.
Майкл Шопсін

15

Моє запитання "Чи неприйнятно / нерозумно очікувати, що програміст під час інтерв'ю напише фрагмент коду на дошці?"

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


Я навмисно не використовую комп’ютер в інтерв'ю через ефект інтелекту. Недосвідчений кандидат програмує натисканням кнопки. і вибравши щось зі списку. Дошка робить це дуже очевидним ...
Майкл Шоу

5
@Ptolemy: Ви дійсно так думаєте? Для типових вправ на дошці, таких як "запрограмуйте пошук по глибині через дерево", якою користю буде Intellisense?
nikie

2
Дошки / папери не збиваються, і всі знають, як писати на них. Якщо ви дасте мені IDLE для вирішення проблеми, я вважаю, що ви ідіот, і якщо ви дасте мені Eclipse, я збираюся витратити половину свого часу на боротьбу з типовими вкладками за замовчуванням.

6
Інтеллісенс (та інші функції автозаповнення IDE теж я впевнений) може бути вимкнено. Або ви можете надати їм Блокнот (або приємнішу альтернативу, наприклад, Блокнот ++, яка робить підсвічування синтаксису, але не має автозавершення тощо). Звичайно, це може вийти з ладу, але реально: скільки помилок showstopper ви стикалися в Блокноті?
CVn

3
Навіть якщо це просто notepad.exe, з цим набагато простіше працювати, ніж з папером або дошкою. Ви можете вставляти або видаляти лінії, що є величезним болем на фізичних носіях.
CodesInChaos

10

Це не доречно, але знайте, що воно НЕ завжди може виявити справжню думку про здатність програмування чи вирішення проблем людини, з якою ви берете інтерв'ю. І я гадаю, що це саме те, що ти шукаєш.

По-друге, зауважте, що завжди є страх невдачі, постійно забиваючи мозок людини. "Що робити, якщо я викручуюсь?", "Що робити, якщо я помиляюся". Більша частка мозку людини зайнята постійно перевіряючи, як вони відходять - лише деякі можуть утримувати нерви.

Тож у такій ситуації навіть найкращі можуть закінчитися збоями.

Останню частину, яку ми просимо опитаних, - це написати невеликий фрагмент коду (4-5 рядків) на дошці та пояснити, як вони проходять через нього

Все добре. Але знову ж таки, те, що хтось не міг щось правильно пояснити, не означає, що вони це не знають добре. (Пояснення - це мистецтво мови).

Якби я був ти, я би робив це останньою частиною ...

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


6
Якщо частина вашого процесу найму полягає в тому, щоб запропонувати стандартний контракт на строковий термін на 3 місяці, скільки людей дійсно піде у відставку від ролі пермі, щоб прийняти вашу пропозицію?
Майкл Шоу

1
Я мав на увазі останній у тому сенсі, що це останній пункт у моєму списку. Я змішую порядок речей в інтерв'ю залежно від того, як пройшла частина бесіди та де я думаю, що їх сильні та слабкі сторони. Що стосується пропонування їм короткострокового контракту ... це в реальній малій компанії просто нереально. У мене немає часу / ресурсів, щоб переносити 3-місячні рисковики для людей, які, можливо, не спрацюють, і, як зазначив Птолемей, я сумніваюся, що кандидати теж не надто захоплюються.
Еойн Кемпбелл

"Більша частка мозку людини зайнята постійно перевіряючи, як вони відходять, - лише деякі можуть утримувати нерви". Я завжди відчував, що це важливо відзначити, особливо з деякими новими людьми, які входять або виходять з коледжу. Я знаю, що я потрапив у аварію в своїх перших кількох інтерв'ю, переживаючи про це до того, що я переплутав деякі найпростіші питання просто тому, що я так нервував. Зрозуміло, ви не можете багато чого зробити. Все, що я міг зробити, це просто перейти до наступного співбесіди, зрештою став комфортним із процесом.
Глечик

1
@TheJug повністю згоден, і ми будемо багато ніжніші з юніорами та градаціями, щоб переконатися, що вони не переповнені процесом, але у нас були старші (7-8 років досвідчені) диски, які борються з цим.
Еойн Кемпбелл

1
"Наймайте їх для дуже крихітного (але реалістичного) проекту ..." - Ви пропонуєте вам "найняти", наприклад, трьох кандидатів, які подали заявку на посаду, навіть якщо ви плануєте залишити її? Це здається мені дуже несправедливим! Це, мабуть, також не покращило б командний дух.
nikie

8

Недоречно, але пам’ятайте, що деякі люди (а може бути і більша частка натовпу програміста) можуть бути дуже підкреслені в інтерв'ю. Я думаю, що більшість із нас знає хлопця з офісу, який є геніальним кодером і дуже надійною людиною, але він розтопиться в такій ситуації. Його показник не міг оцінюватися в такому тесті, тому не робіть це тестування "не"


7
Я не знаю цього хлопця, бо його не наймали.
кевін клайн

4
@kevincline на шкоду компанії, якщо ви не заробляєте гроші за те, щоб люди тримали нерви.
JayPea

1
@JayPea: як я можу знати, що людина геніальний кодер, якщо я не можу здатися, що їх код? Єдиною альтернативою може бути рекомендація від когось, хто вже працює з персоналом. Усі люблять найматися на довірені рекомендації, але це досить невелика група.
Кевін Клайн

1
@kevincline Прочитайте мою відповідь, я не кажу, що ви не повинні робити кодування на дошці на співбесіді з розробником.
Tamás Szelei

@JayPea Я впевнений, що наявність працівників, які не нервують у ситуаціях високого стресу, є важливим фактором фінансового успіху багатьох компаній.
Кайл Странд

4

Я особисто думаю, що це одна з найкращих речей, які ти можеш зробити. Як ви вже сказали, ви не шукаєте правильного синтаксису чи чогось подібного, найважливіша частина тут - це перевірити, чи може хтось спілкуватися ... Я бачив стільки хороших розробників, які можуть працювати лише самотужки у власному просторі ... На жаль, це Неможливо у величезній кількості випадків, тому що кваліфікований хлопець, який також здатний чітко і лаконічно сказати, що він думає, є більш цінним членом команди, ніж той, хто думає: "Вони цього не зрозуміють" у будь-якому випадку, я просто це зроблю сам і продемонструю пізніше ".

Комунікація, комунікація, комунікація - це щось, що є основою кожного середнього та великого проекту (навіть меншого, коли це потрібно)


ну це більше, ніж спілкування. їм потрібно вміти спілкуватися, звичайно, але вони також повинні вміти розповісти мені про своє вирішення простої проблеми.
Еойн Кемпбелл

4

Я думаю, що це не розумна річ. Ми намагаємось знайти кандидатів, які добре підходять до того завдання, яке ми хочемо їх виконати. Написання коду на дошці - це не одна з них, і я не думаю, що це дійсний фільтр для пошуку хороших кандидатів.

  • Хороший код не пишеться, він переписується. Біла дошка майже непорушна, оскільки важко змінити, як тільки ви її написали. Потрібно якомога простіше змінити свою думку, як тільки ви зрозумієте проблему краще.
  • Перебування на співбесіді є стресовою ситуацією, якою вона є, немає необхідності чинити додатковий тиск на кандидата. Багато комп'ютерних людей не мають гарного почерку. Сучасні ІДЕ надають безліч інструментів, до яких ви звикли. І вміння гуглювати щось потрібне, це також є частиною робочого стилю більшості програмістів. Навіщо забирати всі ці речі і створювати штучне середовище, над яким їм ніколи не доведеться працювати, якщо ви зробите їм пропозицію?
  • Нас також дуже цікавить вміння писати хороші тести, можливо навіть робити TDD. Це неможливо побачити під час кодування на дошці.

Більшість підказок, які ви могли б вийти з сеансу кодування на дошці, ви також могли вийти з сеансу парування. І я вважаю, що парування є набагато кращим інструментом, щоб зрозуміти, як кандидат вирішує проблему та як працює. Він може принести власний комп’ютер і працювати в обстановці, в якій йому / їй комфортно. І набагато простіше застосувати до того завдання, яке ви хочете виконати, коли вони приєднаються. Наприклад, у нас є велика база застарілих кодів, тому ми просимо їх відновлювати деякий витягнутий код для реального проекту. І ми насправді паруємо якомога більше у своїй щоденній роботі, тому це добре вписується.

Хоча сесія на дошці, ймовірно, допомагає відфільтрувати поганих кандидатів, вона, мабуть, також фільтрує багато хороших програмістів.


1
Дошки незмінні? Ви просто витираєте щось і переписуєте це на примху, саме це робить їх корисними, особливо навчаючи. Ви повинні жити в альтернативному Всесвіті.
whatsisname

Можливо, непорушним є неправильне слово (я взяв його з medium.com/dima-korolev/… - хто думає, що це перевага). Тим не менш, порівняно з редактором важко додати те, для чого не залишилося місця.
iGEL

3

Особисто я хотів би вийти на будь-якого інтерв'ю, який просить мене зробити FizzBuzz. Я не знаю, коли це стало новим галузевим стандартом, але це дійсно марно часу. FizzBuzz - це фільтр, який можна використовувати перед інтерв'ю, хоча особисто я думаю, що якби мені довелося вибрати з N кандидатів, з яких достатньо мати якийсь відкритий код або блог, на який я можу подивитися, я б точно вважав за краще це як фільтр .

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

Але так, дошка - це ідеально, хоча, я думаю, вам варто взяти різний набір проблем. Закиньте їм проблему в реальному світі і запропонуйте їм намалювати купу UML-ігор, щоб пояснити загальну стратегію вирішення цієї проблеми. Поставте їм комп’ютер з Інтернетом, щоб вони могли шукати сторонні бібліотеки, які вони могли б використовувати як чорні скриньки у своєму виразному пейзажі.
Протягом декількох хвилин ви дійсно побачите, як вони вирішують проблеми. Насправді ви можете зробити це дуже цікавою справою, вибравши проблеми, про які не обов’язково мати на увазі рішення, і спробувати "вирішити" їх разом, щоб побачити, наскільки вони добре спілкуються і наскільки добре вони можуть включити внесок (проте не не натискати на них занадто сильно - деякі люди можуть просто замерзнути, якщо це зробити). А потім додайте кілька вимог на льоту. Це на зразок розробки програмного забезпечення без впровадження та - головне - без налагодження, тому 15 хвилин - це багато часу.


"вже слід було встановити / визначити, що респондент може програмувати" - як? Або у вас є попереднє інтерв'ю, і в цьому випадку питанням ОП стає, чи доцільне кодування дошки в попередньому інтерв'ю, або ви ефективно приймаєте слово кандидата на це, що є запрошенням катастрофи. Рекрутери та резюме можуть (і справді) брешуть, блоги та репозитори Github можуть бути плагіатом.
Джулія Хейвард

@JuliaHayward: Встановлення основних можливостей кодування кандидата на попередньому інтерв'ю - це інша річ. Насправді не потрібно запрошувати когось на сайт для цього. Ви можете надіслати їм невелику проблему, яку вони можуть вирішити. Можливо, обговоріть це рішення (або код github) особисто. Більш імовірно: навряд чи ви знайдете кандидата, здатного граціозно опанувати тип запропонованої мною проблеми, не в змозі вирішити проблеми типу fizzbuzz. Інтерв'ю слід використовувати для визначення можливості кандидата вирішити складність, характерну для реальних проблем.
back2dos

Можливо, вам не доведеться мати когось на сайті, але принаймні ви повинні бути по телефону з кандидатом, розмовляючи через його вправу кодування, чим би ви не користувалися. Лише роздавання запитання та чекання надсилання поштового файлу все ще має ризики себе представити; як крайній приклад, я робив тест для FooCorp один раз, а потім просто зацікавився Google "тест кодування FooCorp" згодом - і виявив, що хтось опублікував досить хороше рішення.
Джулія Хейвард

@JuliaHayward: Якщо ви ставите перед кожним заявником однакову проблему, то, звичайно, відповідь стає доступною для google. Не дивно, чи не так? Але знову ж таки, моя відповідь залишається: не робіть кодування дошки на рівні fizzbuzz в інтерв'ю. Це просто показує, що ви не турбувались про підготовку гарної та цікавої проблеми. Як ви самі сказали, існують способи встановити базові можливості програмування, перш ніж запросити кандидатів на вашу дошку.
back2dos

3

Дозвольте відповісти на інше питання:

Чи пропонує написання коду на білій дошці яку-небудь реальну перевагу в оцінці здатності програмування порівняно з введенням та виконанням коду на комп'ютері?

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


це лише твоя думка чи ти можеш якось підкріпити це?
гнат

2
@gnat Я просто ставив питання. Остання половина відповіді - це моя думка, так, але це повинно бути досить зрозумілим уживаною мовою. Крім того, саме питання починається з визнання його суб'єктивним і конкретно вимагає думок з цього приводу. Я не думаю, що голосова акція була гарантована.
Кевін К.

@Kevin C. Я думаю, що незалежно від вашого формулювання, ви тут дуже гарно вказуєте. Кодування на дошці відрізняється від комп'ютерного кодування. Це думка? Звичайно, ні, поки дошки не в змозі запустити код.
Леандро Канілья

2

Ні, але кращим підходом ІМО було б використовувати дошку за призначенням і використовувати UML / ескізи / нотатки для якогось вигаданого проекту, а не старий "напишіть мені запит sql, щоб отримати всі записи" або "написати метод, який обертає рядок ".

Одне з найкращих інтерв'ю, яке я проводив, як 20 хвилин, обговорюючи з провідним розробником архітектуру (непрограмне забезпечення) для особняка шаленого вченого (у комплекті з таємним сховищем, променем смерті та собачим розплідником). Він повинен побачити мій підхід до вирішення проблем, і ця проблема була чимось веселим, а не типовим програмним забезпеченням 101 програми, яке вирішували сучасні мови тисячу разів. Між іншим, я також робив подібний фрагмент коду раніше, але відчував себе набагато більше "під тиском", ніж з частиною архітектури.


2

У ці дні в програмах робиться багато програмування. Щоб команди працювали, люди повинні вміти спілкуватися. Значна частина цього вміє спілкуватися перед дошкою (мозковий штурм, наставництво, огляд коду, запропоновані виправлення тощо).

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

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


0

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


0

Я б сказав, що це доречно, але в більшості випадків це не ефективний спосіб з’ясувати, хто добре програмує, а хто ні. Якщо ви хочете виконати роботу (= найняти когось здатного), то інтерв'ю має зосередитися на вимірюванні навичок реального життя. Поки найкраще інтерв'ю, яке я працював так:

  • Вітаємо Вас!
  • Кілька слів про мене, про компанію тощо ... і вона пояснила решту інтерв'ю.
  • Вона подарувала мені ноутбук з програмою, яка пропустила кілька частин, через те не вдалося провести тестування. Пропущені частини коментувались там як тексти, мова йшла про реалізацію базового завдання, наприклад, створення зв’язку між кількома класами та впровадження простої бізнес-логіки.
  • Якщо все пішло добре, одиничні тести стали зеленими.
  • Попрощавшись, і згоду повернутись через кілька днів.
  • Того дня ведуча зустрілася зі мною і запитала про закінчену програму, що я робив і чому.
  • Також цей керівник запитав про мій минулий досвід та кілька інших питань.

Отже, підсумовуючи: якщо ви шукаєте робочу силу за виробничим кодом, перевіряйте їхні навички в реальному середовищі. Якщо вам цікаво їх теоретичні знання, краще запитати їх про ці речі. Якщо ви позбавлені IDE, або ви нервуєте, тому що вам доводиться програмувати на білій дошці на очах когось, я можу зрозуміти, особливо в ІТ людей іноді інтровертовано, і багато хто з нас не може добре впоратися з цими ситуаціями, так що на білому наша ефективність буде виглядати гірше, ніж є насправді.


-1

Я не вважаю це нерозумним, якщо опитуваний не має поганого почерку (або я повинен сказати, що написано на борту) :-). Крім того, єдина різниця у вашому підході - це використання дошки та маркера. У деяких випадках інтерв'юери роблять це, але натомість вони дають папір та ручку. На випадок, коли на співбесіді проходять 3-4 особи, я б сказав, що ваш підхід буде набагато кращим і підходящим.


1
"В основному або всі інтерв'ю роблять це", це досить рідко ІМО.
Кірк Бродхерст

Я думаю, всі так роблять. Вони рідко зустрічаються з ПК або ноутбуком, щоб перевірити, чи вирішуєте ви певну проблему кодування. Але, можливо, в ур місця все по-іншому. Якщо ви хочете, я можу відредагувати цю річ у відповіді ??
Pankaj Upadhyay

бачу, я погоджуюся, що це досить рідко ... Я займав 4 робочі місця за останні 9 років, і мене ніколи не просили писати код на папері / wb. Будь-яке кодування було в IDE. саме тому мені цікаво, чи це недоречно. Я б очікував, що розробник зможе вирвати код "Зворотний рядок" не пізніше ніж за пару хвилин без допомоги IDE / Intellisense.
Еойн Кемпбелл

Я здійснив редагування на основі вашого досвіду. На двох інтерв'ю, в яких я теж був, вони дали мені ручку та папір, щоб написати, як надрукувати серію Фібоначчі та алгоритм злиття. Отже, я думав, що в основному справи йдуть таким чином :-)
Панкай Упадхей

Слід зазначити, що мені ніколи не доводилося писати код на комп’ютері; Мені довелося два рази писати код на папері (обидва, коли я був молодшим), і мені довелося один раз намалювати схему архітектури на дошці . Це близько 20 інтерв'ю ...
Кірк Бродхерст
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.