Недавно я начал работать над проектом, в котором очень старое монолитное приложение переносится в архитектуру на основе микросервисов.
Устаревшая кодовая база очень грязная («спагетти-код»), и часто, по-видимому, простая функция (например, названная «multiplyValueByTen») позже показывает себя как «тысячи строк кода проверки, включающего 10 таблиц в 3 различных схемах».
Теперь мой босс (справедливо) просит меня оценить, сколько времени потребуется, чтобы написать функцию X в новой архитектуре. Но у меня возникают трудности с реалистичной оценкой; часто я сильно недооцениваю задачу по причинам, которые я изложил выше, и смущаюсь, потому что я не могу закончить вовремя.
Может показаться, что разумная вещь действительно входит в код, запоминает каждую ветку и вызывает другие функции, а затем оценивает временные затраты. Но на самом деле есть небольшая разница между документированием старого кода и записью новой версии.
Как мне подходить к такому сценарию?
Хотя я прекрасно понимаю, как работает рефакторинг устаревшего кода, мой вопрос не о том, «как сделать рефакторинг / переписать?» но о том, чтобы дать реалистичный ответ на вопрос "сколько времени потребуется, чтобы реорганизовать / переписать часть X?"