Hacker News new | ask | show | jobs
by BlackFly 3546 days ago
As a general problem, when you want to give your vendor the boot, you go to their competitors and say you want a system that does all the things the old system does plus these additional requirements that the old vendor couldn't give you. Since you probably paid for additional features year over year for the system you do have, the price tag to replace it all at once is rather steep and the timelines will be incredibly long.

As such, the project will have a rather long list of problems. The functional specification of the system to be built will have a large number of gaps because the people writing the functional specification aren't the people using all of the parts of the system (no one person will be using all the functionalities). There will be a number of unforeseen problems causing delays, if the vendor does not have proper risk management in place the delays will compound and the entire project will become delayed. Due to frustrations, the customer will relax the priority of some of the nice-to-haves from the functional specifications and focus on the critical requirements.

Even if the new feature makes it into the end product, since it wasn't a key requirement of the system in the first place (otherwise the first vendor would have provided it from the beginning) it will most likely not be used often and may not even be piloted. Future upgrades to the system will degrade the functionality in unpredictable ways and no one will notice. When someone does notice, it is easier to revert to the old manual way of solving the problem than getting the functionality fixed or learning how to use it.

This is why some people are scared of replacing multi-million dollar software. That is why banks still have a lot of systems written in COBOL, risk averse people aren't willing to hope that everything might go right.