Математика переписування легасі: як проєкти втрачають час і гроші
Бо ніщо так не символізує продуктивність, як подвоєння бюджету та стояння на місці.
2025-09-15
Примітка: це фрагмент іншої статті про переписування легасі-систем. Тут ми лише прикидаємо, скільки може коштувати переписування. Жодних рекомендацій — вони є в основному матеріалі. Тут лише цифри.
Вступ
Я зараз буду безсоромно брехати й жонглювати цифрами, удавати, що команда складається тільки з розробників, і водночас ігнорувати менеджмент, тестування та всі інші речі поза розробкою. Будемо максимально спрощувати.
Але загальні результати будуть приблизно такими, як тут написано.
Не тіште себе ілюзіями: навіть якщо ми уточнимо математичну модель проблеми, дива не станеться. Місяцем довше чи місяцем швидше — несуттєво.
Ми просто зазирнемо в кролячу нору й подивимось, наскільки вона глибока — як це колись зробила Аліса.
Початкові дані
Зробімо картинку красивою, а цифри — рівними.
- У нас є проєкт. Це справжній легасі-звір — такий самий, який ми всі так любимо ненавидіти — і ми хочемо переписати його в щось новеньке й блискуче.
- Вік проєкту: 10 років.
- Увесь цей час над ним працювали 4 людини, витрачаючи близько 600 годин на місяць.
- Загальні накопичені трудовитрати: 72 000 людино-годин.
- І поки ми переписуємо, проєкт не завмирає — він продовжує зростати: +600 годин щомісяця.
Чи зростає кодова база?
Хтось може заперечити: «А може ці +600 годин щомісяця йдуть лише на багфікси й саппорт? Тоді їх можна ігнорувати».
Може й так. Насправді ми не знаємо, куди йдуть ці години. Це може бути чистий багфікс і підтримка, просто щоб тримати проєкт на плаву. Або ж це можуть бути 600 годин нового функціоналу щомісяця.
Іронія в тому, що це знання нас не врятує. Навіть якби ми знали, команда, яка переписує, все одно не змогла б чітко відокремити багфікси від нових фіч. Їм у будь-якому випадку доведеться пройти через усі ці 600 годин щомісячних змін — принаймні проаналізувати й вирішити, що з ними робити.
👉 Тож приймемо як допущення: проєкт зростає на +600 годин щомісяця.
Життя — біль.
Хто буде переписувати?
Ми визначили обсяг задачі, тепер давайте вирішимо, хто її буде переписувати.
Очевидний, але хибний варіант: «Нехай поточні розробники переписують».
Ні. Ви не можете просто відволікти тих 4 розробників від їхньої роботи. Саме вони рухають продукт уперед, і якщо переключити їх на переписування — це чистий opportunity cost. Тобто бізнес втратить усе, що вони могли б зробити за цей час: підтримку, багфікси й нові фічі.
Інакше кажучи, продукт завмре, поки компанія продовжує платити зарплати за роботу, яка не приносить прямої цінності.
❌ Неприйнятно — ці 4 мають залишитися на своїх поточних завданнях.
👉 Для переписування доведеться залучити нових розробників. Принаймні стільки ж — ще 4 розробники, виділені виключно під переписування.
Швидкість переписування
Так, переписування завжди швидше, ніж розробка «з нуля».
Але наскільки швидше?
- ×2 (правдоподібно),
- ×4 (сумнівно),
- ×6 (дуже сумнівно 🦄),
- ×8 (чиста фантазія 🦄).
І зверніть увагу: ці дві останні «команди мрії» переписували б за місяць у складі 4 людей такий обсяг коду, який у розробці займав 3600–4800 людино-годин. Це вже чиста магія 🦄.
Сценарії та терміни
Команда з 4 людей (нова, для переписування)
| Прискорення | Тривалість переписування | Зростання бюджету |
|---|---|---|
| ×2 | ~10 років | ×2 |
| ×4 | ~3+ роки | ×2 |
| ×6 | ~2 роки | ×2 |
| ×8 | ~1.5 року | ×2 |
Навіть у наших уявних dream🦄 сценаріях (×6 і ×8) терміни все одно залишаються неприйнятними.
А що буде, якщо команда для переписування складатиметься з 8 людей?
Команда з 8 людей (нова, для переписування)
| Прискорення | Тривалість переписування | Зростання бюджету |
|---|---|---|
| ×2 | ~5 років | ×3 |
| ×4 | ~1.5 року | ×3 |
| ×6 | ~1 рік | ×3 |
| ×8 | ~7 місяців | ×3 |
Пам’ятайте, що ці дві останні команди (×6 і ×8 з 8 розробниками) — це вже чиста магія 🦄.
Тим часом бюджет порівняно з поточними витратами на розробку вже зріс утричі.
Висновок
Я промовчу, які саме слова використав би власник, фінансовий директор та інші люди, які справді вміють рахувати гроші.
P.S. У більш точній моделі ситуація не просто гірша, ніж показано у цих розрахунках — вона помітно гірша.