A lead recently approached me for a quote to rebuild a web application. Instead of providing an estimate immediately, I asked why they needed a rebuild and if we could continue with the current application developed only six years ago. I spoke with their CIO; unfortunately, the answer was No for several reasons. Firstly, their current vendor was charging exorbitant amounts for any changes they wanted to make. Secondly, after consulting with other development agencies, they concluded that the technology was no longer suitable. Lastly, rebuilding would be less hassle than transferring everything from their current vendor.

Unfortunately, this is a common scenario where agencies lock clients in, other agencies take the easy way out, and clients underestimate the effort needed to reconstruct an existing platform. To tackle the first issue, I spoke with their legal team to understand who owns the codebase and if the intellectual property was transferred, licensed, or not arranged. Luckily, most of the IP was transferred except for the proprietary framework created by the vendor, which was licensed to the client. Based on this, we requested a copy of the source code to work with.

After diving into the source code, we found an over-engineered Symfony application with simple Javascript interactions, outdated dependencies, and a simplistic CI/CD pipeline. However, none of the other agencies asked for the source code or tried to free it before making bold statements. This was a codebase we could work with.

I spoke with the lead again to understand what made them believe rebuilding was justifiable. I explained that rebuilding a non-documented application from scratch was risky and that they would need to migrate to the new platform and release with a big bang. They would also need to do a deep analysis to understand what the current platform does, and even then, there would be business logic trapped in the application that would be forgotten for the rebuild. Was it worth all that risk?

I delved further and discovered that the lead had some ideas for improvement. Still, the main blocking item was changing their primary data integration because the upstream provider planned to make breaking API changes. We estimated that one engineer would take less than a month to complete this work. This would change the integration and cover it with automated tests, improve the documentation, and set up a proper CI/CI pipeline.

We saved them from a complete rebuild that would take months of development time, change management towards their user base, and many risks. However, we still need to unleash the database, figure out the infrastructure, update the dependencies, etc.

I am frustrated by actors in our industry giving lousy advice to non-technical people. It's important to note that even 23 years ago, it was known that rebuilding something was almost always a bad idea.