US / coding / interviews
Mar. 16th, 2021 09:23 pmThere is a category of job candidates who can't code. I'm not talking about fancy graph traversals, hashes or recursions, but of a simple requirement: read straighforward instructions and write code that works. How do you test for that? Synthetic problems are often either too convoluted, or too trivial, or rely on some assumption that is never universal: knowing a particular language or software packet or an algorithm, which a given person could have just overlooked in their past, yet the fact of having overlooked that doesn't disqualify them from anything.
Just came up with a fitting interview question for such a case:
Give them the f1040 booklet + an hour or two of time and ask to write a script (they can even chose the language) that would do last year's tax return for a reasonably simple set of cases (say, only basic schedules, no itemized deduction, no crazy depentands... at most a family with small kids)
Grade by feeding the returns of some of current junior programmers (having them slap together a script like that before)
If the bottom line of the produced code matches what the junior got, hire the candidate.
If the resulting tax is higher than the junior's results, don't hire
If the candidate's results are lower than the junior's and the code appears to be correct, fire the junior, hire the candidate...
... at least the junior will save on the last year's taxes
Можна не дякувати.
Just came up with a fitting interview question for such a case:
Give them the f1040 booklet + an hour or two of time and ask to write a script (they can even chose the language) that would do last year's tax return for a reasonably simple set of cases (say, only basic schedules, no itemized deduction, no crazy depentands... at most a family with small kids)
Grade by feeding the returns of some of current junior programmers (having them slap together a script like that before)
If the bottom line of the produced code matches what the junior got, hire the candidate.
If the resulting tax is higher than the junior's results, don't hire
If the candidate's results are lower than the junior's and the code appears to be correct, fire the junior, hire the candidate...
... at least the junior will save on the last year's taxes
Можна не дякувати.
no subject
Date: 2021-03-17 04:29 am (UTC)Not bad, but it will take more than half an hour actually.
no subject
Date: 2021-03-17 04:39 am (UTC)Та хоч три
(b) ..." a reasonably simple set of cases" ...
Тобто, без додаткових форм, itemized deductions. Нехай без Schedules A, C, SE і деривативі, лише пару W2, якісь банківські відсотки і, щоби уже не зовсім просто, найпростіший біржевий рахунок з мінімальними, на кількасот баксів, максимум, capital gains & dividends.
Можна навіть одразу дати інпут, парочку W2 і кіька відповідних 1099 форм в JSON-і, наприклад.
Просто тупо слідувати інструкціям, та й усе.
Хоч в Пітоні, хоч в Екселі :)
no subject
Date: 2021-03-17 04:50 am (UTC)Да не екселе у меня дня два ушло на эту хрень когда-то.
no subject
Date: 2021-03-17 05:00 am (UTC)Але складно в ті роки, коли якийсь бізнес був чи складніші deductions.
А коли треба просто пройтися по інструкціям для пари десятків рядків і додати пару коротеньких worksheets. Коли нерухомості нема а біржевв операції обмежуються тестовим аккаунтом на Скотстрейді на кілька тисяч, бо більше шкода, то нічого особливо складного там нема.
no subject
Date: 2021-03-17 02:40 pm (UTC)Да... я давно забросил; у нас 7 W2, всякие мелочи в смысле расходов по делу; ну и всякие 1099.
no subject
Date: 2021-03-17 09:38 pm (UTC)no subject
Date: 2021-03-17 10:47 pm (UTC)Принаймні в data science дають купу всяких задач, включно з домашками на добрих 20 годин роботи. А тут не домашка на всі вихідні, а дві години на місці. Мені на одній співбесіді дали задачку на три години написати штуку для обчислення потоку в трубі (в літрах за секунду) з хитрого Доплерівського ультразвукового сигналу, у них там свій прилад був. Я за три години якраз вклався, вони навіть сказали, що краще рахував ніж їх продакшн код. Воно, звичайно, цікавіше, ніж податки рахувати, але концептуально те ж саме.
no subject
Date: 2021-03-18 12:36 am (UTC)Я не знаю, кто что даёт.. я знаю, что даю я.
Я даю задачи на дом, потому что каждый думает по своему; за восемь часов вполне можно написать. Собеседование с людьми уже по решению задачи, что даёт возможность каждому интервьюеру спокойно посмотреть, что человек написал. Задача составлена так, чтобы кандидат получил представление о том, как мы пишем код и что ожидать в качестве реальных проектов. Умение программировать там вылезет само собой, у нас процентов восемьдесят на этом этапе и отсеиваются.
Проходят те, кому реально интересно. Я только что повысил одного кадра - он в своё время наваял очень годное решение и прислал его со словами "ладно, надо, наверное, остановиться, но вообще ещё хочется улучшить это, это, это и вот тут". И так с тех пор и работает, отдал ему проект и забыл.
no subject
Date: 2021-03-18 01:30 am (UTC)Ну, десь так, more or less, про це я і пишу. Я спочатку в пості було написав, що це стосується "a subset of positions that are not hard core software development but do require the person to have skill: data engineers, some QA engineers, some PMs, etc" , але потім подумав, що виходить занадто багатослівно, то стер. Видно, треба було залишати :)
no subject
Date: 2021-03-18 01:53 am (UTC)Ну.. таких надо отсеивать задолго до интервью; если на интервью такое надо проверять, то процесс отбора сильно поломан.
no subject
Date: 2021-03-18 05:12 am (UTC)При цьому, холєра, джун все одно отримує в півтора рази більше, ніж вчений в нац. лабораторії після 10 років стажу, тобто, по ідеї, знайти людей (тих самих, з нац. лабораторій) мало би бути просто..., непросто лише розділити потік кандидатів на тих, хто реально щось уміє, і тих, хто банально наудачу гроші шукає, при цьому, щоби самому не тратити забагато часу. Ось, я придумав метод :)
no subject
Date: 2021-03-18 06:41 am (UTC)no subject
Date: 2021-03-18 04:05 pm (UTC)no subject
Date: 2021-03-18 12:39 pm (UTC)Вообще, я, возможно, отреагировал слишком серьёзно.
А что, действительно сейчас такие зарплаты в песочнице? Я года полтора разговаривал с человеком, ему деньги примерно из этого диапазона (ну, чуть выше - около 300 килодолларов) хотелось за dev lead. Неужели с тех пор так поменялось?
Offtopic - как сейчас со всем этим ковидом ездят в Украину - надо ли сидеть в карантине и т.д.? Интересуется женщина, которая у нас убирает дом, вот только что и поинтересовалась. Она из Украины, здесь давно (и легально), хочет туда съездить на месяц.
no subject
Date: 2021-03-18 02:05 pm (UTC)В SF Bay Area - ага. Подозреваю, что это связано как-то с борьбой с иммиграцией, предложение на рынке упало. (Ну и плюс стоимость жизни - медианная халупа 1М+.) Но это чисто теория.
300К TC за хорошего L5 (senior software engineer, человека, над которым не нужно с палкой стоять, но не dev lead, не) - Гугл давал еще в 2016. Опять же, SF Bay Area.
Актуальные цены по рынку я бы смотрел на levels.fyi, фильтруя по 0 years at the company - или непосредственно спрашивал у людей в blind/fishbowl.
Можно по прилету сделать ПЦР-тест и по получении негативных результатов - выйти из карантина (за 1-2 дня). Подводные камни - программа, в которую забиваются результаты теста, дико глючная, имеет смысл заранее поставить и проверить на своем смартфоне.
no subject
Date: 2021-03-18 02:12 pm (UTC)Опять я отстал от жизни, похоже.
no subject
Date: 2021-03-18 04:27 pm (UTC)А це другий фільтр, який мав би бути інакшим, але "складні часи, складні рішення". Чому так, я можу лише гіпотези придумувати.
Цифри, про які пише Проценко, можливо, правда, але для мене звучать фантастично. Я за останні 5 років тричі шукав роботу, спілкувався, крім власне компаній, і з рекрутарами, і з placement спеціалістами -- основний пул навколо отримує в два рази менше, а то і в два з половиною. І це вважається непогано, бо купа дослідних місць, де людина з досвідом, яка купу всього вміє і знає, незалежно, самостійно і творчо працює і т. п., отримує в 3 рази менше. Я вже вирішив, що коли попрацюю на нинішній роботі рік з хвостиком, то візьму Микиту собі за особистого консультанта для пошуку наступної позиції, щоби вибитися в житті поближче до верхнього 1%. Не те, що я скаржуся, але претендувати хоча би на "медіанну халупу" мені би хотілося :)
Offtop: дуже залежить, куди їхати. У нас непередбаченим чином туда сюда рухають карантинний статус, то, поки в околицях Києва, ще можна їхати, а в наших західних палєстинах, кути ще попробуй доберися, гарантій нема ні на що. Чернівці пару разів, взагалі, перекривали, реально, могли не дати в'їхати в місто. (Тобто, народ їздив, але це комбінація рандома і корупції в непередбаченій пропорції.) Мені дуже треба поїхати додому і повезти туди малих, але я досі не можу рішитися. Минулого року все розвалилося в останній момент, але і на краще.
no subject
Date: 2021-03-18 09:05 pm (UTC)>Цифри, про які пише Проценко, можливо, правда, але для мене звучать фантастично.
Меня тоже удивило, no он, вероятно, знает, о чём говорит. Я думаю, тут надбавка за вредность - всё-таки работа в этих больших конторах по бОльшей части есть самоубийство с целью личной наживы. Ну как донецкая угольная шахта в лучшие времена.
>дуже залежить, куди їхати.
Спасибо, я передам. Она откуда-то из восточной Украины (выросла в Сибири, потом семья вернулась, но куда, точно не помню).
no subject
Date: 2021-03-18 10:26 pm (UTC)"в годовом отчете Данилов списал свои недостатки на то, что он не получает от канцелярии молока за вредность. Из канцелярии поступил запрос, какую вредность он имеет в виду. Свою ли собственную, внутреннюю вредность, или же ощущаемую людьми в его присутствии, или же вредность окружающей среды?" (с) Альтист Данилов
Это, на самом деле, территориальные доплаты - в тех же больших конторах в офисах за пределами Долины платят в разы меньше. (Поэтому некоторые товарищи делают следующий финт ушами - устраиваются на работу в Долину, а через полгода изыскивают возможность перевестись в Сиэтл-Денвер-Майами - на четыре года проблема зп закрыта с головой. Плюс на налогах экономия.)
В приличных конторах поменьше (Roku, Airbnb, StichFix etc) - на самом деле, тотал комп сравнимый.
no subject
Date: 2021-03-18 10:40 pm (UTC)В том же Булыжнике (Boulder, CO), на самом деле, и не сказать, что недвижимость намного дешевле - не на ползарплаты.
(мне, кстати, можно по украински отвечать, если вам так удобнее)
no subject
Date: 2021-03-18 10:51 pm (UTC)Що до цін, я на всяк випадок перевірив на realtor.com:
Медіанна ціна за кв. фут в Болдері $485.
В Маунт В'ю - $975.
Медіанна ціна:
в Болдері - 850K
в МВ - 1.7M
Так що не просто в Болдері дорого (тобто там дорого, нема де правди діти). Це в нас ЗАХМАРНО дорого.
no subject
Date: 2021-03-19 12:51 am (UTC)no subject
Date: 2021-03-18 06:44 am (UTC)You would be surprised how many candidates are filtered out by a simple fizzbuzz problem.
BTW, calibrating interview questions against current employees is a great idea, I can attest to that.
no subject
Date: 2021-03-18 04:03 pm (UTC)Я бідкався ще раніше, що навіть просту задачу не можуть розв'язати. Тільки там, на геть простій і короткій задачі, розрахованій на 5 хвилин часу, важче зорієнтуватися, чи то людина просто прогледіла щось, бо не сфокусувалася, чи геть нічо не вімє. З іншого боку, геть просту задачу поганий кандидат може і розв'язати сам... або підгледіти.
Словом, занадто проста задача -- поканий класифікатор, бо на ній буде забагато як false negatives, так і false positives.
Зараз напишу пост, яку задачку ми давали минулого року... ну, так, аби не бути голослівним
no subject
Date: 2021-03-18 04:57 pm (UTC)В мене трошки іншій підхід - задача типа fizzbuzz це дуже гарний класифікатор на ПОЧАТКУ funnel.
Фішка в тому, що на такий задачі неможливо щось не помітити, бо якщо людина не може сфокусуватися, щоб вирішити fizzbuzz - то це вже за межами добра та зла.
False positives можна отримати, так, але ніби то ніхто не каже, що в нас повинен бути тільки один раунд інтерв'ю, ні? Далі буде місце і для більш складних задач.
no subject
Date: 2021-03-18 05:23 pm (UTC)* мінімізувати роботу тих, хто це діло перевіряє (себе), занадто багатоступінчастий funnel не потрібний :)
* але, водночас, дати quantifiable результат, щоби був якийсь спектр, а не так/ні
* і це все в умовах, коли вхідний потік кандидатів неідеальний, причому, там намішано людей, які реально вміють, але можуть налажати, і людей, які просто не вміють
* і це все в умовах, коли всяка задачка, яку ти даєш кандидатам, дуже скоро з'являється на всяких Glassdoor'ах
That said, я не претендую на ідеальне рішення, а шукаю, що би працювало краще, ніж те, що було.
no subject
Date: 2021-03-18 10:41 pm (UTC)- дуже проста задачка на вході, щоб не було false negatives,
- задачка на вміння ЧИТАТИ код - ось вам простий код, в ньому помилка, є таки симптоми, виправляйте,
- допзавдання - як би ви переписали цій код, що в ньому зайве, чого не вистачає?
- поговорити про минули проекти кандидата,
- якщо позиція потребує - то домашнє завдання + поговорити про нього, трохи pair programming, якщо треба + design interviews.
Неідеально, але як мінімум і кандидатам, і інтерв'юерам було цікаво.
Це ж, до речі, важливий момент - бо interview це частина devrel, який підвищує відсоток адекватних (чи навпаки - неадекватних) кандидатів. Бачиш, як людей від інтерв'ю в деяких компаніях відлякує процес і вони просто не йдуть до компанії? (тому, до речі, ми ще й кожному кандидату дарували roku останньої моделі - просто за те, що він чи вона прийшли на інтерв'ю.)
no subject
Date: 2021-03-19 12:16 am (UTC)Прості порогові завдання (перших три в твоєму списку) > трохи балачок > серйозний проект за спеціальністю > більше балачок
Я пишу "балачки" для стислості, не тому, що вони пусті -- вони дуже навіть потрібні
В такому нашому фаннелі (літературна "лійка" тут мені не звучить, а звична мені діалектна "рурка" теж не дуже звучить, плюс, невідомо, чи знайома тобі) все, ніби, добре, але в час Ковіду почали з'являтися помилки ообох родів в розв'язанні задачки з Пітону, тої, яку я в останньому пості поставив, ось я і думаю про інші варіанти.
no subject
Date: 2021-03-19 03:41 am (UTC)no subject
Date: 2021-03-19 04:28 am (UTC)Процес відбору звучить прекрасно, але це ж треба було наперед подумати :)
no subject
Date: 2021-03-19 12:40 pm (UTC)no subject
Date: 2021-03-19 03:13 pm (UTC)no subject
Date: 2021-03-19 05:43 pm (UTC)Я.. могу себе представить.
Я, правда, с возрастом разучился раздражаться по этому поводу.
no subject
Date: 2021-03-19 06:16 pm (UTC)