I'm currently working on a very large project that involves re-writing a bunch of apps that are part of a suite of applications and this suite is being used at multiple sites. These applications were written in the early 90s I assume, probably version 4.5? But this thing is full of hard coded references to many of the other databases and hardly any of the code is reusable in any way. Also, there are little pieces of code that reach out to these various databases from the various databases. So you may change something in one app and break god knows what in another app. Also, coding practices within these apps are very poor. For example, a variable is set to the value of another variable that got it's value from another variable which got it's value from a field in another database and so on. To say the least, this whole thing has been nothing but a mess, a rather big mess at that.
But the team I'm on developed a brand new version of one of the applications because that would be faster and more cost efficient than fixing all the hard coding. The old app had some of the design elements that are based on the data within the app, so if the data changes the design has to change. But this new app we developed had a more modern user interface, more features and if data changed the design didn't have to change. Nothing was hard coded and it is very configurable to operate the way the customer wants it to operate. We deployed this app and it has been being used for a few months now, which of course has a few months worth of new data in it.
Fast forward to today, the customer now wants to roll back to the app that we didn't remove the hard coding from, change the design elements to match the new data and change the hard coding to still be hard coded but work for the current site. This decision is based on the behaviour of one button and one feature. These are things that can be changed rather easily. I've never experienced a customer wanting to go back to a design that's impossible to maintain, performs poorly and by today's UI standards is butt ugly. They're going to end up paying twice as much as it would cost to just fix the few issues they have with the new version, not to mention the fact that they already paid for the new app which is now being trashed. Also by doing this, the other apps that interact with the new app will now be broken and have to be fixed, it's a rather nuclear reaction that results from this decision.
But what I really don't understand is, from a business point of view, why a decision like this would be made? I assume they've already paid a couple of hundred thousand dollars on this project (salary for a team of 4 developers, 2 project managers, among others for the past 8 months) and are getting ready to dump even more money into it by making the decision to go back. I'm just dumbfounded as to the reasoning behind this. We probably could have re-written the entire suite with this much man power and time for much less money. I may be wrong for posting this rant, but I'm hoping someone can provide me some of the reasoning that I'm obviously missing.
On another note, I'm currently working on a new Open Source project in my spare time, as code starts to come out for it I will post more about it. But for now, I'm going to keep it under wraps at least until I have a workable demo to highlight the initial idea. So, stay tuned for a useful (I hope) freebie in the near (again, I hope) future.