Ostatnio zacząłem pracować nad projektem, w ramach którego migrowana jest bardzo stara aplikacja monolityczna do architektury opartej na mikrousługach.
Podstawowa baza kodu jest bardzo nieuporządkowana („kod spaghetti”) i często pozornie prosta funkcja (np. O nazwie „multiplyValueByTen”) później ujawnia się jako „tysiące linii kodu weryfikacyjnego obejmującego 10 tabel na 3 różnych schematach”.
Teraz mój szef (słusznie) prosi mnie o oszacowanie, ile czasu zajmie napisanie funkcji X w nowej architekturze. Ale mam trudności z przedstawieniem realistycznego oszacowania; często bardzo nie doceniam tego zadania z powodów, które przedstawiłem powyżej i zawstydzam siebie, ponieważ nie mogę ukończyć na czas.
Wydaje się, że rozsądne wydaje się, aby naprawdę zagłębić się w kod, zanotować każdą gałąź i wywołania innych funkcji, a następnie oszacować koszt czasu. Ale tak naprawdę istnieje niewielka różnica między dokumentowaniem starego kodu a faktycznym zapisywaniem nowej wersji.
Jak powinienem podejść do takiego scenariusza?
Chociaż doskonale rozumiem, jak działa refaktoryzacja starszego kodu, moje pytanie nie dotyczy „jak zrobić refaktoryzację / przepisać?” ale o udzieleniu realistycznej odpowiedzi na pytanie „ile czasu zajmie refaktoryzacja / przepisanie części X?”