My article on why rewriting applications from scratch is almost always a bad idea got a few responses on medium. One of which got me thinking more deeply about how valuable are the lessons learned during the initial development of the application.
Adam is right. The lessons from v1 are immensely valuable and should bear significant weight on deciding what to do next and, more importantly, how to do it better.
What I was trying to emphasise is that a lot of times, people take rewrites too lightly and push the “we already know everything there is to know” argument, which feels solid because you look at the codebase and see a hundred ways you could improve it.
But more often than not, what you see is the surface. The older the app is, the more likely it is that there are a zillion hidden features you will have to discover and rediscover during the rewrite – which will considerably slow down your progress.
The article sadly ignored it, but I do not disregard the value of the lessons learned during V1 development. On the contrary. Throwing the whole codebase away because it has grown too big, old, and hard to understand is giving up on all those painful and hard-earned lessons.
Those who cannot remember the past are condemned to repeat it.George Santayana
Ignoring history by throwing the current codebase away, hoping the next one will be better puts you in a position where not only you can make new mistakes that weren’t in the original version, but can also repeat some of the past.