Нещодавно я почав працювати над проектом, де дуже стара монолітний додаток мігрується в архітектуру на базі мікросервісу.
Спадкова база даних коду дуже брудна ('код спагетті') і часто, мабуть, проста функція (наприклад, названа як "multiplyValueByTen") пізніше виявляється як "тисячі рядків коду перевірки, що включає 10 таблиць у трьох різних схемах".
Тепер мій начальник (справедливо) просить мене оцінити, скільки часу знадобиться для написання функції X в новій архітектурі. Але у мене виникають труднощі з реалістичною оцінкою; часто я дуже недооцінюю завдання через причини, про які я говорив вище, і бентежу себе, бо не можу закінчити вчасно.
Розумне може здатися, що він дійсно потрапляє в код, відзначає кожну гілку та дзвінки до інших функцій, а потім оцінює вартість часу. Але є справді незначна різниця між документуванням старого коду і фактичним записом нової версії.
Як слід підходити до такого сценарію?
Хоча я прекрасно розумію, як працює рефакторинг застарілого коду, моє питання не стосується "як зробити рефактор / переписати?" але про надання реалістичної відповіді на те, "скільки часу знадобиться, щоб рефактор / переписати частину X?"