Тестове завдання — загальний фільтр чи стоп-критерій?

Привіт, спільното!

Нещодавно мав свій перший досвід виконувати тестове завдання на позицію Senior Test Automation Engineer у одну із компаній. Мене ріджектнули по суті по тій причині, що, можливо, ми не порозумілись. Про це згодом.
Виникло також логічне запитання, які є best practices до виконання завдання. Чи тестове завдання — це скоріше фільтр і здебільшого запрошують на співбесіди, де ти маєш пояснити свої рішення, чи це строгий стоп-критерій?

Додам трошки деталей.
Був забагований АПІ-контролер, документація до нього та вимогою було написати Test Automation Framework.

Stack:

Java 11, testNG

Assignment:

Write a framework for app testing
Write one positive and one negative autotest for each controller
Find possible bugs. Critical ones are covered with autotests.

Additional:

  • Add Allure
  • Make a test run in 3 threads
  • Add logging
  • Add framework configuration (app url, thread count, etc.)

Отож, я завів баг репорти, накидав автотести, описав також свої наступні кроки по вдосконаленню фреймворка, та які наступні автотести я буду дописувати. Від себе також додав Github actions, де все працює, щоночі ран автотестів, генерується Allure report, все ок.

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

Коментарі були наступними:

«It is recommended to use filters for logging, as this provides more flexible and centralized handling of logging logic»

В умові просто було зазначено прикрутити логер, я прикрутив log4j2.xml без фільтрів. В умові не було вказано і впринципі це не проблема додати, якщо потрібно. Але для тестового я «не заморочувався».

«Path parameters should be passed as a Map, populated using factory methods — this improves code readability and scalability»

Ідентично до попереднього коментаря. Я більше діяв по принципу «You aren’t gonna need it». Там всього кілька ендпоінтів, тому подумав, що це доречно робити, коли кількість ендпоінтів та тестів буде рости.

«The absence of functional tests poses a potential risk: contract tests will not reveal issues related to the expansion of business logic»

Вимога написати по 1 позитивному та 1 негативному тесті. Ендпоінти написані спеціально з багами, причому критичними, де пароль повертається у такому вигляді як зберігаєш, де метод GET на create, метод POST на get. Я завів баги і покрив автотестами. Додав інформацію, що функціонал потестував вручну, автоматизуємо наступним кроком, коли пофіксять ендпоінти. Проте отримав даний коментар, що навіть з моїм поясненням, що я не забув за функціональні автотести, все одно не підійшло.

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

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

  • Чи потрібно писати одразу максимально ідеальний код, коли робиш тестове завдання на сіньйорну позицію?
  • Чи мав я уточнити дрібні деталі по кожній вимозі завчасно, щоб потім не казати, що ми не порозумілись?
  • Чи не було помилкою компанії, що вона відмовила пофіксити їхні коментарі до ПР, якщо кандидат зацікавлений і основне все зробив добре?
  • Чи має бажання хтось із наймаючих сторін підказати чи поділитись найкращими практиками, що очікують від тестового завдання на сьогоднішній день в 2025 році?

Можливо хтось також мав досвід виконання тестових завдань в останні роки в Україні та і в інших країнах, поділіться будь ласка досвідом))

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn

Найкращі коментарі пропустити

Тестові — це ще та лотерея.

З прикладів за останній рік:

У мене була відмова після тестового, бо «зробила тільки те, що було описано у вимогах. Ми хотіли, щоб запитала в нас чи ми хочемо ще якісь додаткові фічі прикрутити».
А наступна в іншій компанії — бо зробила додаткові фічі, окрім описаних, до них доколупались, що вони неідеально зроблені.

Було дві різні відмови при обговоренні тестового:
1) Бо почала описувати зроблене з логіки, а вони хотіли щоб я спочатку описала tech stack.
2) Бо почала з опису tech stack, а вони хотіли, щоб я почала з опису логіки.

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

Бо я зробила тестове і мене не змогли підловити на тому, що я не сама його зробила (я зробила його самостійно).

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

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

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

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

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

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

Просто не зупиняйтесь. Продовжуйте розвиватися.
Кожне «ні» наближає вас до правильного «так».

Це показник стану ринку. Якщо у тебе 150 людей — робиш воронку найму вищою, щоб обрати найбільш професійного/готового на все кандидата. Якщо у тебе їх 3 — має сенс зменшити висоту ( зменшити кількість етапів). Тому якщо на ринку багато кандидатів — будуть пропонувати додаткові активності і питати біографію собаки засновника. Як знову почнеться плач рекрутерів про токсичних девелоперів, що берегів не бачать — можна починати то все ігнорувати

Останнього разу написав два тестових, вперше в житті, але вже на фінальному етапі після 3-4-5 попередніх інтервʼю. По жодному так і не отримав фідбек.

Врешті влаштувався там де тестових і не було, а інтервʼю були плюс мінус швидкі.
Думаю на цьому поставлю крапку і надалі виконувати дармову роботу не буду, бо ефективність цього процесу з тестовими просто відʼємна

Дозволені теги: 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-8 робочих годин, так як менше нічого не покаже, а більше це вже перебор (я б сам робив завдання не більше чим 8 годинне).

Це може бути реальне завдання з проекту, але яке вже повністю зроблене і бажано мною. Щоб розуміти труднощі та кількість часу яке потрібно витрати на завдання.

Іноді це може бути дві три сторінки тексту.

Дуже хочеться побачити приклад відгуку та завдання (зрозуміло, що розв’язок буде показати складніше). Тут мета не довести, а скоріше цікавість, що такого можна написати на 2-3 сторінки в завданні, де роботи на 4-8 годин.
З досвіду викладання 2 сторінки (з урахуванням рекомендацій) — це повністю провалений семестровий проект джуном/трейні. Людина з досвідом просто не допустить половини тих помилок.

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

Тут знову ж в форматі форуму ми не домовимось, бо з мого досвіду тих хто «вміє говорити але не робити» можна відсіяти в рамках 1.5 годинної співбесіди наступними методами:
— кодінг задача (це 5-20 хв, а не 4-8 годин), тут не треба літкод хард;
— питаннями в глибину топіка;
— питаннями з серії «а що саме ви робили в рамках отого крутого проекту» (оце працює найкраще).

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

Ще раз, навіть дві сторінки не означають що завдання повністю провалене -)

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

питаннями з серії «а що саме ви робили в рамках отого крутого проекту» (оце працює найкраще).

Це доречі дуже погано працює, те що лодина може описувати може бути не правдою, чи навіть не лютим гівнокодом, але ж ми цього ніколи не взнаємо, все тільки зі слів людини -)

Це доречі дуже погано працює, те що лодина може описувати може бути не правдою,

Ну камон, якщо інтерв’юер розбирається в темі, то воно видно коли кандидат не має саме практичного досвіду або цей досвід поверхневий, просто розкручуєте тему. Типу ок ви кажете, що робили умовний шардінг на такій-то СУБД, як обирали ключ, що робили коли нода випадала і тд.

Ще раз, навіть дві сторінки не означають що завдання повністю провалене -)

Тобто не означає? Ви написали 2 сторінки зауважень. Сторінка — це беремо 40 строк (30-50 залежно як рахувати), нехай розгорнутий коментар — 3 строки. Це 13 зауважень, 2 сторінки — 26 зауважень, при тому вважаємо, що таких про які варто сказати.
Відкрив ЛС. Дуже цікаво подивитись фідбек і завдання (меншою мірою). Те що ви пишете у мене якось не складається в голові.

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

Собственно кодировать это самая простая и далеко не самая востребованная компетенция современного программиста.
Реальные компетенции — это уметь прочитать чужой код, уметь работать с дебаггером, а желательно еще и с профайлером, понять, где подкрутить файровол, если клиент не коннектится с сервером, не падать в обморок от командной строки.
И тестовое задание об этом ничего не скажет.

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

Останнього разу написав два тестових, вперше в житті, але вже на фінальному етапі після 3-4-5 попередніх інтервʼю. По жодному так і не отримав фідбек.

Врешті влаштувався там де тестових і не було, а інтервʼю були плюс мінус швидкі.
Думаю на цьому поставлю крапку і надалі виконувати дармову роботу не буду, бо ефективність цього процесу з тестовими просто відʼємна

Це показник стану ринку. Якщо у тебе 150 людей — робиш воронку найму вищою, щоб обрати найбільш професійного/готового на все кандидата. Якщо у тебе їх 3 — має сенс зменшити висоту ( зменшити кількість етапів). Тому якщо на ринку багато кандидатів — будуть пропонувати додаткові активності і питати біографію собаки засновника. Як знову почнеться плач рекрутерів про токсичних девелоперів, що берегів не бачать — можна починати то все ігнорувати

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

Якщо у тебе 150 людей — робиш воронку найму вищою, щоб обрати найбільш професійного/готового на все кандидата.

Але тут проблема:
Тестове перевірив технічний спеціаліст. Це вже середина воронки. Тобто __фактично__ висота не збільшена, просто один з етапів (технічна співбесіда) став мутнішим.

Аж ніяк, це ВЕЛЕТЕНСЬКЕ скорочення воронки, бо по-перше, серед 150 кандидатів тільки половина погодиться на тестове і ще менше його дороблять до кінця, а технічний спеціаліст перегляне максимум 5-10 рішень, і з них вже обере кандидатів на співбесіду, після якої 99% що відбудеться найм. Тобто маємо кратне зменшення воронки

щоб обрати найбільш професійного/готового на все кандидата

Чтобы нанять того, кто настолько в отчаянии, что даже тестовые делает.

На жаль, навіть сініор фейсбуківців та гуглерів скорочують, тому все може бути.

чому має бути нажаль, якщо то так — то простий індикатор відповідних процесів

«На жаль» тому що ні рівень кваліфікації ні лояльність компанії ні добре зроблена робота не є гарантією від звільнення і стабільності загалом.

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

«На жаль» тому що ні рівень кваліфікації ні лояльність компанії ні добре зроблена робота не є гарантією від звільнення і стабільності загалом.

І в довгостроковій перспективі збільшує «цинічність» працівників. Якщо лояльність не збільшує джобсекуріті, то чому б не піти з проекту на +500 коли тобі зручно, а не компанії?

«нажалі» в можливому здуванні бульбашки(-ок) шукати то таке


p.s.

кваліфікація / зроблена робота ... не є гарантією від звільнення і стабільності загалом

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

З того що бачив що зараз описують відносно більш-менш secure jobs — нп в штатах до недавнього часу то була робота в структурах government, але і відповідно доходи зовсім не ті як в приват секторі, тобто відповідний tradeoff як завжди був.

але в держ секторі вджобувати так не треба як в приваті...

всі можливі ’але’ і є частиною tradeoffs

Если человек синьйор в гугле или фейсбуке, то он и без тестового найдёт работу, зачем ему тратить свое время?

Якщо у тебе 150 людей — робиш воронку найму вищою

Це якщо 150. В нас було біля 300 відгуків на вакансію за 2 тижні.
Проінтерв’ювати усіх в короткі строки — це проводити співбесіди 2 місяця по 8 годин без перерви.
Тестове завдання відсіює десь 3/4 хто його виконувати не бажає або не здатен.

Я про це і кажу. Я міг ігнорувати рекрутерів в 21, якщо я б шукав роботу в 25 я б і літкод робив, і домашнє, і чаю б рекрутеру налив. На ринку пахне безнадією, аі ентузіазм ще не згас, а фактор трампа зменшує бажання людей вкладатися в high risk high return області типу айті.

якщо я б шукав роботу в 25 я б і літкод робив, і домашнє, і чаю б рекрутеру налив.

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

В 24, робив тестове, був готовий до літкоду (відносно, 300 задач), обирали з 54 кандидатів. Зараз я в цю лотерею ще важче виграти.
Define адекватна контора, тому що амазон питав літкод, а контори меншого масштабу де хотілося працювати питали тестове.

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

Адекватна — та де не буде редфлагів (наприклад потогонки, звільнення, складність кар’єрного росту і тд). Але ви пропускаєте важливий момент:
У адекватної контори кількість співбесід з 30 резюме буде десь така ж як з 150 чи 300. Просто рекрутер відбирає ті ж 30 резюме і з них вже відбирають тих кого запрошувати на співбесіду. Тестове — це просто спосіб знати з себе відповідальність за вибір перших 30.

Амазон дає літкод завжди, але це стиль співбесіди. Тестове раніше амазон давав, щоб збити потік на хайрінг івентах і тд активності при наймі в «країнах 3 світу», на основних ринках в норм команди люди без тестового йшли.

Мій поїнт в тому, що за персональним досвідом в 24 довелося стрибнули через більше обручів ніж зазвичай. А в 25 ситуація ще гірша. Ті контори про які ви кажете, схоже, поки призупинили найм. Звісно це все суб’єктивщина і не репрезентативна виборча з однієї людини.

Мій поїнт в тому, що за персональним досвідом в 24 довелося стрибнули через більше обручів ніж зазвичай.

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

Просто рекрутер відбирає ті ж 30 резюме і з них вже відбирають тих кого запрошувати на співбесіду.

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

— бути готовим до довгого пошуку;

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

З тимож успіхом можна просто обирати рандомні 30 резюме.

От і я про це. Тут проблема, що тестове — це обрати рандомні після того як кращі вже відвалились самі :)

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

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

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

Nope, адекватні компанії підкручують процес найму під стан ринку.

Угу, підкручують. Винайшли АТС :)
Проблема в тому, що тестове — не найкраще «підкручування», а ці компанії його чомусь обирають.

это на вакансию джуна, да? На серьезные позиции такого количества нету

імхо, домашне ТЗ це марна трата часу,
я б краще сфокусувався на якості звичайних інтервʼю:
— проаналізувати попередні провалені співбесіди, можливо в голос проговорити проблемні моменти
— потренити онлайн кодінг
— пошук вакансій

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

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

Тестові — це ще та лотерея.

З прикладів за останній рік:

У мене була відмова після тестового, бо «зробила тільки те, що було описано у вимогах. Ми хотіли, щоб запитала в нас чи ми хочемо ще якісь додаткові фічі прикрутити».
А наступна в іншій компанії — бо зробила додаткові фічі, окрім описаних, до них доколупались, що вони неідеально зроблені.

Було дві різні відмови при обговоренні тестового:
1) Бо почала описувати зроблене з логіки, а вони хотіли щоб я спочатку описала tech stack.
2) Бо почала з опису tech stack, а вони хотіли, щоб я почала з опису логіки.

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

Бо я зробила тестове і мене не змогли підловити на тому, що я не сама його зробила (я зробила його самостійно).

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

майже згоден, крім — це залежить від компанії, не треба для якогось трешака кидатись бісером

IMHO вам вислали формальну відписку. Ви тут нідочого тут явно якісь політичні причини, наприклад моніторять ринок — для чогось, або формально треба більше одного кандидати тоді як шеф попросив розглянути його друга по йозі (реально було таке на минулій роботі в сами розгар кризи в 2009 році, коли купу народу скоротили і дуже сильно треба було QA — а нав’язали ще одного програміста. Хоча хлопець був в принципі хороший хоч і по знайомству) і таке інше.

імхо, всі відписки і є формальні. вар’юється тільки кількість правди в них.

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

А якщо є альтернативи і якийсь укр аутсорс «Бест Софтвє Солюшнс Про» просить тестове — звісно, що ні)

Нажаль, зараз такі часи, де кожна помийка може почати давати тестове

Що стосується дев співбесід — то онлайн кодінг, але з досвіду знаю що хороші тостери часто сипляться на онлайн кодінг у, тому краще давати тест
А набирати людей без того щоб бачити їх код «бо я сіньор, я бізнес задачі вирішую» то крута тема для окремого топіку

Типовий тест для тостера:
1. Якість коду — він має бути легким для читання, якщо потрібно коментувати код то щось пішло не так
2. Дотримання ООП, тобто тести мають бути з асертами, а додаткова логіка розкидана по класам. Часто асерти сунуть в методи типу рід json data file, так не робіть
3. Норм репорт, тобто коли тести пасс/фейл має бути видно що саме пройшло/зламалось
4. Positive/Negative сценарії, типу правильний payload працює, неправильний повертає правильну помилку. Часто не тестують помилки, якщо це public API то error codes не менш важливий ніж фунціонал
5. Баг репорт — має бути failed test, і вже з нього репорт. Мануал тест бо фейлиться це фатальне нерозуміння TDD

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

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

В кращі часи були компанії, куди можна було стрибнути на х2 зп для синьорів. Вони могли собі дозволити і тестові, і 5 етапів співбесід, тому що їх засипали резюме, і люди які не проходили через 3 місяці знову подавались.
Зараз ситуація інша — купа резюме на деякі напрямки типу Java і QA, тому компаніі можуть собі дозволити перебирати кандидатів.

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

делать тестовые невыгодно.

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

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

ну а если вы думаете (вам кажется) что вот сделаете вы тестовое и вам точно дадут жирный оффер :))) - то могу поздравить с тем что вас так легко поманить конфеткой и развести на «трать своё время бесплатно потому что компания видите ли так хочет».

Лет 10 назад я уже об этом здесь писал, сейчас апну, потому что идея прошла проверку временем.
Итак, идеальное тестовое (описано для С/Linux, но легко мэпится на любую специализацию).
Дано: опесорсная софтина, cli-клиент, для управления сервисом с большим и сложным деревом команд (что-то вроде Docker, iproute2 или systemctl)
Задача: Допилить еще одну команду, а в том месте, где данные передаются в сокет, вывести их в stderr. Сделать PR.

Всей возни там на час с небольшим, но закрываются следующие вопросы:
1. Умение быстро понять датафлоу, от парсера командной строки до сериализатора перед сокетом.
2. Умение подстроится под существующий код-стайл.
3. Поскольку за отдельные команды отвечают отдельные файлы, придется добавить пару строк в билд-систему.
4. Команды предполагают автодополнение, поэтому придется добавить пару строчек и в скрипты и проследить, чтобы они отработали.
5. Умение работать с git на уровне выше push/pull.

Преимущества:
1. Отсутсвие привязки к инфраструктуре — фреймворкам, базам данных, версиям компиляторов. Проекта прибитого к IDE, упаси Б-же. Только git и стандартный комплект инструментов для выбранного языка.
2. Продакшен-левел проект, а не кривое ТЗ написанное местным гением.
3. Предефайнед код-стайл и заданная тщательность логирования/обработки ошибок.
4. Максимальная приближенность к реальной повседневной работе.
5. Оуткам в виде двух десятков строк в десятке файлов делает ревью максимально быстрым и прозрачным.

«Всей возни там на час с небольшим» — сумніваюсь дуже. хіба що пункти 2, 3, та 4 викинути.

«Всей возни там на час с небольшим» — сумніваюсь дуже. хіба що пункти 2, 3, та 4 викинути.

Нет, если понимаешь, что делаешь.
2. Вообще не понимаю в чем проблема.
3. Добавляешь файл в make/Cmake/список импорта.
4. Добавляешь команду и опции в список автодополнения.

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

я просто не C/Linux, для мене от це неочевидні речі

Не суть. Идея в том, чтобы не писать с нуля, а внести небольшой фикс в существующий качественный код.

небольшой фикс в существующий качественный код.

Ідея крута, але вона обламується о час необхідний конторі для підготовки такого завдання. Тут ще важливо розуміти, що тестовим якраз хочуть зекономити час контори.
Тому вона вироджується у «схожий варіант» (а по факту абсолютно несхожий на вашу ідею) — дани низькоякісний код і попросити його відрефакторити. І щоб ще погіршити можуть просити «відрефакторити за правилами чистого коду».

До речі, чи є у вас зараз цей заготовлений проект? Якщо є, чи пробували ви просити ШІ вирішити таку задачу? (Просто цікаво як він справиться)

До речі, чи є у вас зараз цей заготовлений проект?

Десять лет назад дело было.
Но для своей сферы я пример привел.
Как это сделать для энтерпрайза — я бы сам спросил.

що тестовим якраз хочуть зекономити час контори.

Це мʼясокомбінати хочуть, це frontdoor того що буде далі

Я собсно так на це й дивлюся бо це ознака мʼясокомбінату, тому я шлю таке нафіг — я не хо працювати на мʼясокомбінаті в якості мʼяса

Та в принципі цікавий прикольний підхід

Проектів можна підібрати кілька під настрій в принципі й складність

Якщо це ще зразу на інтервʼю то можна просто дивитись що людина робить, мені нра. Спробую таке

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

Ну може спрацювати але це не відтворюється, таски зникають жеж

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

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

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

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

Иногда попадаются реально интересные тестовые. Или же у тебя есть время и с удовольствием его тратишь на «странное» — в 90% случаев тестовое имеет смутные рамки и можно отрываться как хочешь.

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

В целом относительно рынка, если начинаются какие-то 12 этапов и прочие радости на синьйора или тимлида, то эта вакансия нихрена не на синьора или тимлида. Точнее рассказывать и подписывать могут как угодно, но по факту ищут еще одного гребца уровня мидл+ максимум. А если это «тимлид» то нужен инициативный гребец, который будет следить за соседними гребцами.

тестовые на синьйора это бред

ну да, это опытный мидл должен уметь делать, синиор уже мыслит дальше тупых крудов, слоу квери и тд, и думает про архитектуру проекта

На останніх етапах — фільтр, я не проти посидіти з кимось годинку. Дає уяву з ким ти працюватимеш обом сторонам

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

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

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

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

Так. «максимально» — це слово-паразит, але писати треба щоб показати свої найкращі сторони.

Чи мав я уточнити дрібні деталі по кожній вимозі завчасно, щоб потім не казати, що ми не порозумілись?

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

Чи не було помилкою компанії, що вона відмовила пофіксити їхні коментарі до ПР, якщо кандидат зацікавлений і основне все зробив добре?

Чи це помилка для них — це лише якщо вони гіпотетично (ГІПОТЕТИЧНО!) втратили вас як найкращого кандидата. Якщо кандидат зацікавлений, та немає інших, хто зробив це завдання в Х разів краще, то чому б й не продовжити спілкування.

Чи має бажання хтось із наймаючих сторін підказати чи поділитись найкращими практиками, що очікують від тестового завдання на сьогоднішній день в 2025 році?

Ось приклад тестового, що ми давали на роль бекенд-розробника: first.institute/...​software-engineers-league ось тут публічно розбирали та я казав на що ми звертали увагу: www.youtube.com/live/rW6rflk0s8Y

Але це все субʼєктивно.

Дякую за те, що поділились своїм баченням!

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

вони з вами NDA підписували про невикористання та нерозповсюдження вашої роботи?

Таки так, кілька вечорів посидів над завданням. Гадаю, що у них вже робочий проект і мало б бути все робоче і без мене)
ні, ми не підписували ніяких NDA.

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

Так. Тестове це як презентація твоїх скіллів. Клієнт може реджекнути кандидата через не ідеальний чи поганий код.

А самі вони теж пишуть ідеальний код?

Для тестового :)

Як для тестового — це виглядає якось доволі масивно. «Написати Test Automation Framework» — це схоже на повноцінний проєкт.

Ви зробили все ретельно, показали свій досвід та ґрунтовний підхід. Мені здається, що та компанія нечесно вчинила.

«Написати Test Automation Framework» — це схоже на повноцінний проєкт.

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

це різні речі, що не дуже перетинаються

Ось це взагалі непогано описує принцип того, яке відношення мають реальні проєкти до більшості тестових та live coding завдань. :-)

P.S.:
Якщо це не задум такий, щоб хтось в «тестовому» режимі зробив реальний проєкт.

вони би ще захотіли щоб їм хтось «фейсбук» з нуля написав :)

“Path parameters should be passed as a Map, populated using factory methods — this improves code readability and scalability”

Це, звісно, непогана практика, але якщо це не було вказано у ТЗ, то комент не дуже валідний

Стаття стара, російською, але ситуація з тестовими не змінилась dou.ua/...​signment-for-job-seekers
Тестове — це сигнал про те, що ви не дуже то і потрібні роботодавцю.

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

«It is recommended to use filters for logging, as this provides more flexible and centralized handling of logging logic»

Ким і для чого це рекомендовано? По тесту топіка схоже, що ви зрозуміли про що це. Можете пояснити чому воно вже так аж потрібно?

«Path parameters should be passed as a Map, populated using factory methods — this improves code readability and scalability»

Це якась особливість фреймворку, який ви використовували?
Зазвичай фреймворки мають вбудовані білдер-методи для реквестів, і вони кращі за мапу.

Ким і для чого це рекомендовано? По тесту топіка схоже, що ви зрозуміли про що це. Можете пояснити чому воно вже так аж потрібно?

Якщо чесно, то не зрозумів. Попросили просто прикрутити логер — прикрутив. Що саме логувати і як фільтрувати і що на їхню думку «рекомендовано» — це для мене теж стало питанням — чи це я мав уточнювати завчасно чи вгадати, що вони хочуть бачити)

Прочитав Вашу статтю за посиланням, дуже цікавий опис і думка, дякую!

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

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

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

Просто не зупиняйтесь. Продовжуйте розвиватися.
Кожне «ні» наближає вас до правильного «так».

Дякую! Ну тут переглянули і написали фідбек, все ок. Більше загальне питання про те, що очікує наймаюча сторона від виконаного завдання чи це варто самому перед виконанням детально все уточнювати?)

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

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