Récemment, j'ai commencé à travailler sur un projet dans lequel une très ancienne application monolithique est en train de migrer vers une architecture à base de microservices.
La base de code héritée est très confuse ('code spaghetti') et constitue souvent une fonction apparemment simple (appelée par exemple "multiplyValueByTen") qui se révèle plus tard comme "des milliers de lignes de code de validation impliquant 10 tables sur 3 schémas différents".
Maintenant, mon patron me demande (à juste titre) de dire combien de temps faudrait-il pour écrire la fonctionnalité X dans la nouvelle architecture. Mais j'ai du mal à faire une estimation réaliste; souvent, je sous-estime énormément la tâche pour des raisons que j'ai énumérées ci-dessus et m'embarrasse parce que je ne peux pas terminer à temps.
Ce qui est sensé peut sembler entrer vraiment dans le code, noter chaque branche et appeler d'autres fonctions, puis estimer le coût en temps. Mais il existe une différence minime entre la documentation de l'ancien code et l'écriture de la nouvelle version.
Comment devrais-je aborder un tel scénario?
Bien que je comprenne parfaitement le fonctionnement de la refactorisation de code classique, ma question ne concerne pas "comment faire une refactorisation / réécriture?" mais pour donner une réponse réaliste à "combien de temps faudrait-il pour refactoriser / réécrire la partie X?"