If you've ever watched a wildlife documentary about lions you may be aware of a common trait called Infanticide. Basically, it's when a male lion hunts down and kills offspring that aren't genetically related from an acquired pride. While a common trait in the wild, similar behavior can be observed in the world of software development. Too many people aren't interested in history or legacy and want to create their own dynasty — from scratch.
Developers love to create their own dynasty. They love writing their own code and generally don't like working with other people's code. Who can blame them? Starting fresh with a new code-base without all the legacy complications and using modern development techniques and fads is a lot more fun to work on. Some even like the personal satisfaction of doing a better job than the last guy, an ego trip if you will.
While the intentions are well placed and the adventure may be tempting its not always the right solution. Just because a system is new won't necessarily make it better, faster, or cheaper to run.
Estimating whether you should keep extending or maintaining an existing application or platform versus starting from scratch is always a tough decision and unique to every business. There's inherit benefits and cons to each path and no two businesses are usually the same. There are, however, some simple questions you should ask the key stakeholders and decision makers in your project to help make the decision:
- What's wrong with the current solution(s)? "It's old" isn't the answer you should be looking for.
- Are your customers unhappy with the current solution? If so, what exactly are they unhappy about?
- How will the new solution create new sales, renewed contracts, lower productivity, lower license costs, lower maintenance, and generally benefit the company?
- Can you innovate the current solution without starting again?
- If there is a consultant involved who does he/she partner with and do they get kickbacks? Be way of consultants who are only interested in pedaling wares of certain software companies.
- How much do your developers know about a new proposed platform, programming language, application, and so on? Can existing knowledge be easily transferred?
- How much will the new solution cost vs existing system?