Accomplishing large-scale refactorings
In my experience, successfully performing large-scale refactorings is one of the hardest challenges in all of software engineering.
I define large-scale refactoring as something on the scale of replacing an application or a major architectural layer of an application. Moving an application from one database technology to another, replacing a REST API with a gRPC API, upgrading from Web Forms to Blazor, or replacing your entire service layer are all examples of this.
Why large refactorings are difficult
These projects are challenging because they typically take longer than a single sprint to accomplish and must meet feature parity with software that has been developed over the years.
Additionally, software engineering projects are notoriously hard to accurately estimate, which is one of the reasons developers prefer agile software development over more traditional project management methodologies such as waterfall. Delays in software...