У FAVBET Tech був період, коли технічний борг одного з модулів системи почав серйозно впливати на процеси. А саме на швидкість виходу на ринок і те, скільки коштує контроль якості продукту. У відповідь на це в компанії провели внутрішній системний аудит, проаналізували ситуацію за правилом Парето й розробили комплексну стратегію погашення боргу.
Зараз процес управління техборгом у компанії максимально чіткий: на нього виділяється до 20% часу кожного спринта. У результаті графік погашення технічного боргу нагадує графік акцій на NASDAQ – із січня крива йде вниз.
Як на це впливає не тільки виділений час, але й культура ownership і ШІ-інструменти, у партнерському матеріалі розповідає CTO FAVBET Tech Андрій Черниш.
Ми є продуктовою компанією, яка націлена на постійне зростання, тому метрика time-to-market (TTM) для нас критично важлива, а темп можна назвати шаленим. Ми постійно випускаємо нові ігри, розширюємо функціональність, робимо інтеграції, промо, UX-експерименти та A/B-тести. Але хочемо не тільки залучати нових клієнтів (acquisition), а й утримувати чинних (retention). Тож якість продукту і його надійність не мають страждати.
Утім, через TTM ми можемо йти на компроміси. Це не «милиці», а свідомий вибір піти на певну несистемність у рішеннях, яка не відповідає нашим внутрішнім стандартам. Ці компроміси перетворюються на свідомий технічний борг.
Кожен свідомий борг ми документуємо: знаємо, чому зараз приймаємо компромісне рішення і коли зробимо нове.
Коли треба десь «зрізати кут», зробити workaround або швидко щось випустити, ми можемо на це піти, якщо:
Також у кожного боргу є вартість обслуговування. Тож ми можемо взяти борг, якщо вартість його обслуговування в майбутньому нас влаштовує. Рішення, чи погоджуємось ми на свідомий технічний борг, приймаємо колективно: дискутуємо з розробниками, менеджерами і продакт-оунерами.
Також може з’являтися борг несвідомий, хоча я б скоріше назвав його зоною зростання. Технології постійно рухаються вперед, і під час рев’ю ми помічаємо, що щось можна переробити: краще, ефективніше, інакше.
Таке рев’ю ми маємо на всіх етапах і всіх рівнях. Відловлюємо болючі точки та заносимо їх у беклог. Також аналізуємо та перевіряємо роботу ще на етапі планування: що саме розробник планує робити – які нові API, інтеграції, схеми для бази даних. Ми перевіряємо такі речі, перш ніж починаємо писати код.
Але завжди існує людський фактор, тому іноді технічний борг може «просочитися» навіть крізь наші процеси.
Тож головний висновок такий: уникнути технічного боргу неможливо, але варто його контролювати. З мого погляду, ми робимо це досить успішно. Графік роботи з нашим технічним боргом зараз дуже схожий на графік акцій на NASDAQ: із січня все йде вниз. Бувають піки, але тенденція йде на зниження.
Далі розкажу, як саме ми це робимо.
У нас був період, коли технічний борг одного з модулів системи почав серйозно впливати на TTM і те, у скільки обходиться контроль якості продукту. У відповідь на це в компанії провели внутрішній системний аудит. Ми й так бачили вразливе місце, але, щоб атакувати проблему комплексно, провели аудит усіх дотичних частин системи.
Потім ми зробили комплексне оцінювання технічного боргу цільового модуля. У цьому нам допомогло правило Парето (принцип 80/20). Ми поставили найвищий пріоритет тим завданням, які дозволили б у найкоротший період отримати максимальні поліпшення за потрібними нам метриками: TTM, якість, надійність.
Подібне оцінювання тепер відбувається в кожній команді та в кожному сервісі на регулярній основі. Команди виділили 20% часу в кожному спринті для того, щоб працювати виключно над усуненням технічного боргу.
Наразі ми контролюємо свій борг, не допускаємо його різкого зростання, постійно працюємо над його зменшенням. Але прагматично: погашаємо в першу чергу той борг, що має прямий вплив на важливі бізнес-метрики та нефункціональний стан системи.
До процесу управління технічним боргом входять такі ключові етапи:
Революційні зміни – це не частина культури FAVBET Tech. Ми не практикуємо швидкі, необдумані рішення, коли все переписується з нуля. Замість різких революцій ми постійно еволюціонуємо. Це помітно як за нашими сервісами, так і за культурними підходами в командах.
Яскравим прикладом такого еволюційного підходу є робота з надто великими модулями системи. Коли один з наших сервісів став надто громіздким через накопичені компроміси й узяв на себе забагато контексту й комунікацій, ми не стали його повністю відкидати й переписувати з нуля. Натомість застосували strangler pattern – підхід, що нагадує ліану, яка поступово обвиває дерево.
Спершу створили проксі-рівень, через який ішли всі запити на наш умовний моноліт. А потім ітеративно розбили його на менші частини. У кожній ітерації при цьому зробили наступні кроки:
Такий підхід не вимагає зупинки всієї системи. Старий сервіс продовжує розвиватись, а його зміни враховуються при побудові нових модулів. Ми системно переоцінюємо те, що зробили раніше, розділяємо функціональність на логічні сервіси та додаємо новий функціонал туди, де він має бути за архітектурою.
Найкраще свій код знає сам девелопер. Тому ми будуємо культуру ownership. Тобто розробники мають не просто писати код у вакуумі, а розуміти, де та за яких умов він працюватиме, для кого він пишеться. Відповідно, розробники бачать місця, які можна було б змінити, і логують їх. Працює принцип Іf it hurts, log it. Далі ці логування перевіряють менеджери й архітектори.
Але оскільки це мануальна робота, тут може бути людський фактор – хтось щось не помітить. Тому це тільки один з методів.
Кожен код ми перевіряємо на відповідність стилю, вразливості, ефективність. Є купа інструментів, які допомагають зробити це автоматизовано, у тому числі ШІ. Ми найчастіше використовуємо:
Розглядаємо впровадження AI-асистенту для розробників Cursor, а також інструмент для AI-based code review qodo.ai (ex-Codium).
Безпека для нас – один із ключових пріоритетів. Ми розглядаємо поганий код не лише як повільний чи неефективний, а насамперед як той, що може створити вразливості і спричинити проблеми в системі. Тому регулярно та ретельно перевіряємо систему на наявність ризиків. Для цього використовуємо продукти лідера ринку у сфері безпеки, що допомагає нам ефективно контролювати й підтримувати високий рівень захищеності.
Ми постійно працюємо над автоматизацією тестування нашого коду на декількох рівнях і контролюємо цей рівень відповідними quality gates. Це допомагає певним чином боротись із застарілим кодом, бо рівень покриття у quality gates постійно зростає невеликими кроками. Це змушує команди працювати й з тим кодом, який уже давно ніхто не чіпав.
Проблеми у продакшен, які мають прямий вплив на користувачів – очевидний сигнал попрацювати над кодом.
У компанії за системний стан відповідають архітектори. Вони дивляться на систему з helicopter view – оцінюють її загальну взаємодію, цілісність і відсутність каскадних залежностей, які можуть призвести до масових збоїв. Якщо одна частина системи не витримує навантаження і тягне за собою інші, то це системна проблема. Щоб виявити її, використовують хаос-тестування – випадково вимикають частини системи, щоб зрозуміти, де можуть виникнути критичні збої, та усувають ці вразливі місця до появи проблем у продакшені.
Ключовим аспектом нашого підходу є комунікація з бізнесом. Ми будуємо її так, щоб бізнес максимально швидко отримував фідбек. Це так званий feedback loop: бізнес приходить з ідеєю → ми її опрацьовуємо → даємо фідбек → бізнес використовує цей фідбек для запуску наступного циклу.
У нас нема потреби «продавати» бізнесу завдання з погашення технічного боргу. Це тому, що наша комунікація зі стейкхолдерами максимально прозора. Ми вказуємо на ризики, які беремо на себе у випадку перекосу в бік TTM і виникнення техборгу, наголошуючи на вартісних змінах у майбутньому і плануємо такі зміни одразу. По суті, ми з бізнесом partners in crime.
Щоб це працювало ефективно, рекомендую наступні підходи:
Навіть найдосконаліші процеси управління технічним боргом не працюватимуть без правильної культури та відповідальних людей. Одним з найбільших викликів для нас є пошук і розвиток фахівців із продуктовим мисленням і культурою ownership.
Знайти професіоналів, які по-справжньому відчувають відповідальність за свою роботу, непросто. Попри численні layoffs у галузі та велику кількість доступних фахівців на ринку знайти тих, хто дійсно підходить нашій культурі і здатний мислити продуктово, залишається складним завданням.
Щоб розв’язати цю проблему, ми діємо в кількох напрямах:
Ось кілька правил, які я хотів би виділити при роботі з техборгом:
Python продовжує стрімко зростати в рейтингу популярності мов програмування TIOBE, досягнувши в травні 2025 року…
Бенчмаркінг часу злому паролів на графічних процесорах, який компанія Hive Systems проводить вже 5-й рік…
Компанія Huawei Technologies представила ноутбук, який працює під управлінням нової операційної системи HarmonyOS Next (HarmonyOS…
Співробітникам Microsoft заборонено використовувати DeepSeek через проблеми безпеки даних та побоювання китайської пропаганди. Про це…
OpenAI вдосконалює свою функцію Deep Research, додавши до неї можливість аналізу коду в репозиторіях GitHub…
За перші чотири місяці 2025 року в Україні зареєстрували 81 928 нових ФОП, з них…