The big issue with software rewrite is that it delivers value only when it is done.
You invest a lot of time, energy and money, but until it can fully replace the old system it just incurs cost. You could think of it to be similar to the Waterfall method of software development. Moreover while the rewrite is in process there still will be demand for changes to the legacy application so you will have to keep investing in that too. To compound the problem this also means you have a moving target for the rewrite as well.
A gradual improvement of the code-base will make a lot more sense. At first you write tests around the existing behavior of the application and then piece-by-piece you refactor the code or, if you can carve out parts of it into separate applications. The latter would make it much easier to change the programming language as well.
Published on 2021-10-01 by Gabor Szabo