Анна
Понеділок у нас в офісі починається не з кави, а із червоних кружечків у командному чаті.
Я ще навіть не встигаю нормально повісити куртку, як телефон вибухає повідомленнями з тегом #analytics-urgent.
Фінансовий звіт показує квартальний виторг на дванадцять відсотків вищий, ніж продуктовий. І це – величезна сума, яку неможливо списати на похибку. Це – чиясь помилка, яка може коштувати компанії дуже дорого, особливо напередодні зустрічі керівництва з інвесторами.
І хоча це – головний біль тімліда, ми всі можемо стати заручниками цієї помилки й залишитися без річної премії. А я покладаю на неї великі надії.
Кидаю тужливий погляд у бік кухні, де перед початком робочого дня традиційно юрмляться колеги, обмінюючись новинами. Пропускаю кавовий ритуал і відразу сідаю за комп’ютер. Масштаб проблеми зрозумілий. Але неясно, на чиєму боці помилка й наскільки реально її швидко виправити.
Де саме розходяться дані? Відколи? Чому це досі ніде не проявилося? Дурдом…
За п’ятнадцять хвилин у переговорці збирається вся наша маленька секта аналітиків і представники суміжних відділів. Нікому не хочеться брати на себе відповідальність. Складається враження, що мета мітингу – не пошук і усунення помилки, а банальне перетягування ковдри й жеребкування за призначенням винних.
Мартін – наш тімлід – у дискусії, точніше, балагані участі не бере. Він сидить мовчки, тримає обличчя рівним, вдивляючись в екран свого ноутбука, але пальці барабанять по столу, видаючи нервозність.
Зузана з фінансового відділу періодично хмикає і закочує очі у відповідь на особливо емоційні репліки колег, і теж у суперечку не вступає. У неї в голові лише одна вісь: гроші або прийшли, або ні. Це жодним чином не гарантує відсутність помилки на їхньому боці, але вони до останнього заперечуватимуть свою провину, навіть якщо вона очевидна.
Ден теж тут і як зазвичай мовчить. Чи то характер у нього спокійний, чи то не ризикує кидатися в словесну перепалку через акцент. А було б цікаво подивитися на нього в ролі бійцівського пса.
Він зосереджений на ноутбуці – активно клацає мишею, щось друкує. Не здивуюся, якщо саме він зараз ткне нас у джерело помилки.
– Добре, – Мартін починає чеською, потім кидає короткий погляд на Дена, зітхає і переходить на англійську. – Усі висловилися? Ми завтра маємо звітувати перед інвесторами. Перейдемо до справ без філософії та зайвої пари. Зузано, Петре: що саме ви вважаєте?
Фінансистка вкотре закочує очі:
– Наш звіт будується на даних із білінгової системи. Ми рахуємо те, що реально прийшло на рахунок. Це факт – як двічі по два, тут не може бути помилки, їй просто нізвідки взятися. Гроші або є, або їх немає!
Тепер настає черга Петра закочувати очі:
– А наш звіт будується на подіях купівлі всередині платформи. Ми рахуємо транзакції. Це теж факт. Я все перевірив – помилку виключено.
– У такому разі звіти не можуть розходитися на дванадцять відсотків, – резюмує Мартін.
Вони знову лаються, бо є незаперечний факт: числа критично не сходяться, й із цим треба терміново щось робити.
– Можуть, якщо факти рахуються по-різному, – спокійно включається в дискусію Ден.
Усі замовкають – не вірять, що проблема має просте розв’язання, і він легко розгадав цю загадку. Мартін повертається до нього:
– Дене, ти щось знайшов?
Той підключає свій ноутбук до великого екрана, клацає мишкою, друкує кілька команд – і показує нам таблицю.
– Я взяв список реальних оплат із білінгу й перевірив, скільки з них узагалі потрапило в наш «продуктовий» звіт. Виявилося, що частина оплат просто зникає дорогою: гроші приходять, а в нашій таблиці з транзакціями їх немає. Причому зникають вони не хаотично – майже всі втрати в одному місці, і почалося це три тижні тому.
– Три тижні? – задумливо перепитує Петр. – Це коли ми прискорювали складання звітів, щоб дашборди перестали падати вранці? Ти впевнений?
Я пам’ятаю ту зміну. Вона наче була цілком логічною: система почала додавати у звіт тільки «нові» записи за часом події.
– Проблема в тому, що одна із систем надсилає дані із запізненням. Іноді на добу, іноді на дві. Виходить так: оплата прийшла сьогодні, але в продуктових даних стоїть «час купівлі – позавчора». А звіт тепер бере тільки сьогоднішні записи. Отже, такі оплати не потрапляють до нього взагалі й губляться.
Зузана реагує першою:
– Тобто гроші нікуди не поділися, просто наш продуктовий звіт їх не бачить? – я на неї не дивлюся, але за інтонаціями відчуваю, як вона видихає, бо втрата грошей – це нічний жах фінансиста. Ден киває. – А я вам казала! – вона вигукує переможно. – У нас усе – як в аптеці.
Почалося…
Але як Ден це виявив? Адже все здавалося бездоганним. Я особисто перевіряла це перед мітингом.
Він спокійно пояснює Петру, що потрібно зробити, щоб відновити втрачені дані й надалі уникнути подібних казусів.
Я наздоганяю Дена в коридорі.
– Як ти це швидко так знайшов? – не можу не висловити захоплення. – Звідки знав, де шукати помилку? Я дивилася – усе наче було ідеально…