Тестове завдання чи лайв-кодинг: що обираєте ви?

Привіт, спільното. Минулого тижня ми випустили статтю про тестові завдання для Java-розробників. Деякі з компаній також згадали про лайв-кодинг під час співбесід.

Тож ми вирішили запитати вас: а чому ви, як кандидати, надаєте перевагу — тестовим завданням чи лайв-кодингу? Наскільки формат кодування наживо більш ефективний порівняно з практичним завданням, яке кандидат може виконати у власному темпі? Яка з цих практик більш об’єктивно відображає навички розробника?

Діліться думками в коментарях.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Лайвкодинг, бо звичайно займає меньше часу ніж тестове + можна поспілкуватися з інтервьюєром
Якщо тестове займає більше 4-х годин то робити його не буду

Тестове звісно, я люблю щось новеньке складне і цікаве поробити,
а лайв кодинг це стрес.

Це тільки в тому випадку якщо тестове хороше.

А ну швидко намалюйте мені репродукцію «Мона Ліза» у пеінті, а я подивлюся і подумаю чи замовляти вам портрет свого песика.

Кстати насчёт советов педалить литкод.
Буквально каждый день что-то фундаментально меняется. То подвозят дженерики в Go, то корутины в C++, то async в Python. Старый текстовый HTTP вытесняется новым бинарным. Линукс становится риалтаймовым. Микросеовисы ломают старые архитектуры.
Только успевай просмотреть все это хотя бы по верхам, на 300-страничную книжку времени объективно нет.
И предлагается бросить это все и тренироваться разворачивать связанные списки на скорость?

Цього року проходив декілька співбесід на Сініор-лід-архітект вакансії, скрізь був лайвкондинг, а в одній продуктовій відомій українській конторі тестове завдання + лайвкодинг.

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

Лайвкодинг може бути корисним і показувати скіли, але ці скіли мають бути в кандидата. Що маю на увазі: Знання алгоритмів та структур даних, розуміння, що таке алгоритмічна складність, просторова складність, цикломатична складність і т.д. Не проходить і місяця аби я не порекомендував тут комусь завітати на leetcode.com/explore попроходити їх міні-курси по кодингу і повирішувати задачки.
З досить великою ймовірністю, людина яка буде це вміти, буде писати кращий/читабельніший/чистіший код, до того ж швидше, ніж людина яка з цим не знайома і буде щоразу вигадувати велосипед або вивчить щось одне і буде юзате це як «срібну кулю» у всі ситуаціях де це доцільно і де ні.

Окремий скілл який я рекомендую перевіряти на співбесіді це онлайн-рев’ю коду.
Але надавайте адекватні приклади, а не шматок бидлокод лайна із 10 помилками на рядків коду і питати, що виведе ця функція, це бидл-стайл, не робіть так.

В деяких випадках, онлайн-рев’ю коду може навіть замінити лайв кодинг і тестове, якщо серед вимог проекту нема задач по швидкісному «педалінгу».
Лайв кодинг може дати розуміння стресостійкості (якщо вона потрібна, а якщо ні?)
Тестове дає можливість покомунікувати, розгледіти кандидата краще, але якщо контора не виділила на це час\ресурс, то навіщо? Зазвичай, в Джирі на одне інтерв’ю дають списати годину-дві.

Сініор-лід-архітект

лайвкодинг для сінйор-лід-архітекта?

Саме так.
Лайвкодин + невелика задача на систем дизайн.
Тріпати язиком про лоадбалансери з кубернетісами багато хто вміє, а ти покажи чи можеш ти елементарно злити два сортованих масива разом в третій сортований масив.

З моїх спостережень, майже на всі архітекторські позиції почали брати людей лише із технічним бекграундом + на деякі менеджерські, які передбачають тісну роботу із технічною командою також. Звісно на таку менеджерську роботу вже не питатимуть код, але технічні питання також будуть.

сінйор-лід-архітект який зливає масиви?)))

Прикинь, архітектор повинен вміти, окрім всього іншого, зробити POC, а також приймати участь в процесі створення продукту, рев’ювати код, менторити, консультувати, давати рекомендації.
Для цього всього треба вміти писати код і знати базовий Computer Science, хоча б на рівні розуміння чим хеш-таблиця відрізняється від бінарного дерева і коли доцільне одне, а коли інше.

Не факт, що людина буде робити все вищеописане на проекті, але вірогідність цього досить висока, особливо в аутсорсі, де сьогодні один проект, завтра інший, а післязавтра пресейл і треба прототип.

потужненько
а заправляти каво машину не треба йому у вас? чи, таки, треба?))

Сініор-лід-архітект
Тріпати язиком про лоадбалансери з кубернетісами багато хто вміє, а ти покажи чи можеш ти елементарно злити два сортованих масива разом в третій сортований масив.

А зібрати 450 кг в триборстві та зробити сальто ви теж просите?
Яку інформацію про кандидата ви отримали з задачі про злиття масивів? Ви як архітектор коли такий код останній раз писали?

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

Ще треба вміти бачити ситуації, коли «зіграти за їх правилами» (тут ви дуже співзвучні з одним блогером-м...ком) призведе до більших втрат ніж не зіграти

Яку інформацію про кандидата ви отримали з задачі про злиття масивів?

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

Ще треба вміти бачити ситуації, коли

Якщо треба робота — треба грати, якщо робота не горить, то можна ходити вибирати і ставити свої умови.

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

Конкретно цей приклад демонструє, що конкретно тій компанії не треба був архітектор принаймні в той конкретний момент або ще гірше вони не розуміють чим займається архітектор.
Але ви, ось в цьому коментарі dou.ua/...​rums/topic/51080/#2902358 (те що я процитував), нормалізуєте цю помилкову практику.

Якщо треба робота — треба грати, якщо робота не горить, то можна ходити вибирати і ставити свої умови

І це теж. Але навіть коли робота потрібна навіть на рівні як он Денису (2+ роки пошуків) не факт, що варто йти в контору де бардак в головах. В принципі, можна зробити хід конем та піти на девелоперську позицію, якщо вже все одно писати літкод задачі :)

Денис Полторак для мене приклад здорового зрілого інженера, до такого рівня і я колись хочу дорости %)
За ці два роки я йому в приват декілька разів кидав вакансії, але він їх відхиляв)

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

Як на мене, тех. бекграунд в архітектора має бути. І найпростіше це перевірити через просту задачку на два масиви або аналогічну.

Поясніть яким чином здатність людини розв’язати Easy задачу з літкоду:
1) Демонструє у людини наявність технічного бекграунду?
2) Відсутність такого бекграунду у разі якщо людина це не може зробити?

Особисто я, якби наймав когось, задовольнився б навіть псевдокодом, якщо людина вже забула синтаксис,

Так навіть на псефдокоді, там складність в тому щоб не проіпати вказівники/індекси, якщо робити за лінійний час. Це не на знання алгоритмів чи структур даних, а на уважність. А якщо вам буде достатньо злити в 1 маси та відсортувати, то це нас повертає до питання 1.

але розуміти як працюють речі з якими будеш працювати ти — треба.

Треба. Як ця задача розкриває ... та блін хоч щось? Тут реально не треба навіть базових знань по КС. Це навіть не спитати рівні ОСІ чи як працює ДНС, або індекси в РСКБД

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

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

Я не можу це ні заперечити ні підтвердити, так як той офер я відхилив %))
Але наскільки зрозумів з їх розповідей, вони шукали людину, яка може сама створити прототип-концепт, а потім, після погодження, вже віддати цей прототип разом із дизайном девелоперській команді.

искали мидла

Це ж мрія, робити мідлову роботу за архітекторські гроші))

Звучит заманчиво, конечно, мідлова робота за архітекторські гроші — мрія! 😄 Але тут є нюанс: коли очікування до ролі занадто розмиті, є ризик опинитися в ситуації, де ти ніби й усе робиш, але водночас ні за що конкретне не відповідаєш.

У короткостроковій перспективі це може здаватися зручно, але на практиці така позиція часто закінчується тим, що ти залишаєшся у стані «все і ніщо». Це може зашкодити розвитку: ні як розробник не поглибиш скіли, ні як архітектор не напрацюєш стратегічний досвід.

Додати один масив до іншого, відсортувати результат. Якщо там масиви не по мільону записів або це не потрібно робити тисячи раз в секунду то робити злиття складніше не має сенсу. Коли все інше буде зроблено, то за бажанням можна повернутися до цієї задачи і доколупати її до «inline assembler code».

Обидва. І те, і те дуже цікаво!

Якщо ви питаєте або/або то можу припустити що ви вважаєте що ці два методи перевіряють одне і те саме. Але тоді у мене для вас погані новини...

Я вважаю, що оцінити людину можна тільки на випробовувальному. Десь через місяць-два.
А витрачати час на тестові чи на лайвкодінг — просто марнотратство.

Ну... проблема у тому, що випробувальний термін це потенційно більш високі затрати. Взяли людину, а потім не підійшов — звільняти? Шукати нову? Чи відразу наймати трьох з метою звільнити двох? Тому з одного боку я згоден, а з іншого треба якось оптимізувати процес.

Провів формальну співбесіду, задав загальні питання по проектах в яких приймав участь, по технологіях які використовував. Мені після цього вже, в пронципі, зрозуміло, чи варто іти далі, чи ні. А ганяти по алгоритмах на співбесіді чи заставляти, не дай боже, лайвкодити, або давати тестове — це нічого не дасть. Людина в стресі. А якщо не в стресі, то це вже 100 інтерв’ю і результат теж нерелевантний буде.

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

Людина в стресі.

Наприклад, коли люди стоять біля пісуарів, то деукого струя може не піти, просто сфінктер не спрацює при колективному пісуарингу.
І це відбувається не тому, що людина не вміє пісяти.

В ентепрайзі (та й не тільки) кодинг, прям оце писАння на швидкість, це 30% роботи, а може й менше. Зазвичай, швидко написане треба переписувати. А якщо там багфікс-сапорт, то за увесь день можна написати кілька строк коду.
Є ще чимало викликів та активностей: дизайн фічі й кода, здатність працювати в складному продукті, колупання-дебаг-рев’ю, діалог зі складним клієнтом, в складній команді, при цьому не виджобуватись, все терпіти і не здаватися, ітд ітп.

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

Взагалі ні те, ні інше.

Але, враховуючи реалії та свої цілі, особливо коли цікавить тільки конкретна позиція, я краще спеціально підготуюсь до обох варіантів.

Лайв кодінг, очевидно. Як мінімум тому що це займає менше часу

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

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

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

Тестове якщо воно близьке до реальноï роботи. Коли наймав людей, то давав простеньке тестове тiльки якщо не був впевнений пiсля технiчноï спiвбесiди.
Лайв-кодiнг — no, god, no! Я в цiлому дуже нервую пiд час спiвбесiд, а коли просять кодити, то взагалi втрачаю контроль i не пам’ятаю простi речi. Хз як з цим боротися.

близьке до реальноï роботи

Був такий випадок. Я відмовився одразу бо мені така робота не подобалася б. Заощадив собі і людям купу часу. Виглядає як win-win.

таких примерно 50% людей. Я тоже к ним отношусь.
Это надо просто принять и не париться. Значит эта компания не для тебя

А в чому проблема потренуватися і навчитися швидко кодувати і навіть під тиском, якщо це потрібно?

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

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

Для меня например кодить под чужим взглядом не проблема.
Проблема в другом — добрая половина эффективности это привычное рабочее окружение, вплоть до расположения окон и цветовой темы.
Лично у меня вобще особый случай — я привык к vim и все настройки заточены под него.
Поэтому правильный лайвкодинг это решение задачи на уровне алгоритма/псевдокода, а не сдача на права с сиденьем и зеркалами настроенными на чужой рост.

Я на співбесідах завжди застосовую лайвкодинг. і якраз

решение задачи на уровне алгоритма/псевдокода

і є ціллю. Перевіряти знання синтаксису і швидкість друку точно не доречно.

Ну а зачем тогда кодить? Можно все на пальцах объяснить или на доске нарисовать.

А в чому різниця, показувати на пальцях чи на дошці і кодити (хай і псевдокодом)?

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

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

Згоден, є й такі люди. Але якщо код написано, то можна задавати питання pro/contra вже по ньому — це й кандидату, й інтервюеру простіше (навіть якщо один або інший туплять). З приводу GPT — то поки інтервю не адаптувались до цього

Лайв-кодинг — всі ссуться, а ти себе одразу красунчиком показуєш

Взагалі нічого сташного в лайвкодингу не бачу.

Не люблю ні лайв кодінг ні тестові , але після одно разу повністю завалив задачі по лайфкодінгу аналогічні зустрів на наступному інтерв’ю в іншу компанію. Пройшов та отримав офер. Но це як лотерея. Головне робити роботу над помилками та рухатись далі

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

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

Не стидаюсь визнати, що відношусь до кодингу, як повар до картоплі.

Знав пару «програмістів», які з гордістю казали, що код пишуть тільки на роботі, і взагалі в них нема комп’ютера вдома. Коли бульбашка надувається, навіть такі кадри залітають в айті.

в офис пригласить написать код на рабочем компе компании, не?

Знаю пару автослесарей, так у них дома нет не что подъемника, но даже смотровой ямы. Самозванцы наверное.

Тільки тестове якщо воно грамотне і ревалентне та дозволить розкрити мої знання
Лайв кодинг взагалі не розумію. Не погодився б навіть якщо б був би по ту сторону барикад. Слідвувати дві години робочого часу за тим як хтось кодить, задавати питання перериваючи кандидата. Серьйозно? Це саме той експірієнс який потрібен від кандидата щоб працювати в умовах коли дядя стоїть над тобою і слідкує що ти робиш?

Лайвкодинг, якщо можна гуглити і задачі наближені до реальних.
Тестове, якщо воно розраховано не більше чим на 2 години.

Тестове завдання.

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

Лайв кодінг.
Тестові завдання вважаю нерелевантними і недоцільними на більшості посад.

За виключенням випадків, коли треба перевірити здатність кандидата вирішити нестандартну проблему

Дуже важко зібратися, коли на тебе дивляться. Тут і так увесь на нервах, пульс чутно в ушах. А тобі требо писати код, та ще і красивий, гарнесенький. В мене 2 рази був
лайв-кодинг. Самий перший раз завалила, бо потрібно писати було в блокноті, а не у середовищі програмування і було важко перелаштуватися, другий раз пройшла, але потратила набагато більше часу, ніж у нормальній ситуаціх я б потратила. Тож тестове завдання більш конфортіше для мене.

Зі своїм параноїдальним характером і страхом, коли за мною слідять, я надаю перевагу тестовому завданню, бо тоді я справді можу показати себе.

А уяви як футболістам, коли за ними 80К слідять )

Тому ми і обрали роботу, де треба ховатися за екраном.

Але їм і платять відповідно :-) та і вони взагалі з самого початку своєї діяльності «грають на публіку».

Лайф кодінг — прикольно, якщо завдання більш менш повʼязано з реальними робочими задачами. Якщо це булшіт з Літкоду, то таке ж дно, як і тестові завдання

Підписатись на коментарі