At work starting about 12 years ago, I was tasked with porting an old Android app to Windows phone. Then I ported that to Windows a year or two later. Many years after that, and after making many changes to those apps, I wrote an iOS app from scratch to do all of the same things. Later, I updated the apps to have a bunch of new features.
Today, I discovered a bug in the Windows app that has been around for many years. The interesting thing is that I had designed the more recent iOS app to work so much better that the bug could have never existed in it.
This supports the adage that any piece of software should be written, thrown out, and then written again. Software is just too complex to design it right the first time (unless you’re NASA and do the equivalent of writing it twice by planning head in such detail that the plan may as well have been the first version of the software).
It sucks to have to go work on the Windows version of our app. The code is a copy of 20 year old Android code that was not well written in the first place. I could write a small book about all of the mistakes that were made that could have been simple to avoid.