На співбесіді мене попросили написати «костиль»
Знову п’ятниця, тож час невигаданих історій!
Нещодавно в мене була технічна співбесіда в компанію Argus (аналітика даних, цін на світові енергоносії, все як я люблю)
Першим питанням було як завжди — розкажіть кейси з практики, якими ви пишаєтесь.
Кажу, взагалі я пишаюсь всіма своїми розробками, та не встиг навести конкретний приклад, як почув хамовате — «Дааа? Та що ви кажетеее!»...
Ось та цьому токсичному коменті вже треба було закінчувати розмову, але було цікаво які челенжи вони підготували для мене.
То ж ми перейшли до основної задачі.
Ведучій інтерв’ю відкрив гугл-боард і почав малювати «архітектуру».
Оце — мікросервіс, який слухає 2 типи івентів «OrderCreated» (складає json в базу) і «SendInfoToPartner» з айдішкою ордера — дістає ордер з бази і дьоргає якусь зовнішню апішку.
Проблема — івент «SendInfoToPartner» приходить раніше, ніж ордер було збережено в базу. Як ви вирішете це?
Одразу відкинувши варіанти з повторними опитуваннями бази на наявність ордера, я запропонував 2 варіанти:
1. Якщо це база по типу AWS DynamoDb, вона може бути джерелом івентів для лямбда функції, коли в неї додається новий запис. Хендлер SendInfoToPartner винести в ламбду. (коментар від інтерв’юера — о, а що DynamoDb так вміє?)
2. Створити якийсь окремий стрім типу Redis Pub/Sub, через який SendInfoToPartner буде отримувати повідомлення від OrderCreated, що ордер записаний в базу.
Жоден з цих варіантів не влаштував інтерв’юера і він з гордістю почав малювати як вони вирішили цю проблему — quick and dirty fix:
В базі даних вони створили додаткову колонку/поле (не знаю що в них там), з ознакою того, що хендлер «SendInfoToPartner» туди приходив і не знайшов ордер — 1. Коли хендлер «OrderCreated» приходить писати ордер в цю табличку, він дивиться на це поле, і якщо там стоїть 1, то хендлер «OrderCreated» напряму викликає хендлер «SendInfoToPartner».
Я дивлюсь на це рішення і в голові лише одніа думка — а з якою метою ти виніс цей шматок г..на на співбесіду? Ти загадив таблицю нерелевантними даними своєї інфраструктури. Цей «мікросервіс» взагалі не повинен існувати в цьому вигляді. Що ти хотів побачити і що хотів цим показати?
В своїй практиці я проводив десятки співбесід. Саме круте, це коли кандидат виходить вдячний зі списком того, що йому треба підтягнути, і взагалі кайфонув від спілкування з крутими професіоналами.
Що отримав я з цієї співбесіди? Розбір якогось корявого «костиля», цінність якго нуль, а ще токсичне спілкування.
Пишіть, що думаєте про це, а також свої варіанти рішення, цікаво)
Найкращі коментарі пропустити