Working on one of the projects in Sweden I had a colleague, let’s call him Sven. He worked as IT consultant, and at the same time he used to run his own company together with his brother. Their main business was developing controllers for elevators. They designed electronic circuits, developed software for the controllers as well as administration software. Then, they sent all the design schema to a factory to produce one single sample – the price for this was about 2,000 EUR. That sample then was sent to The Big Company that was their largest customer. The Big Company used the controllers for all its elevators.
Once during our conversation Sven mentioned that The Big Company make pretty stupid mistakes time to time – when The Big Company designed a controller’s body, they put holes for circuit’s input and output on the wrong places. So that you could fit the circuit into the body, but you couldn’t connect it the power and any other electrical networks in elevator.
In case of such mistake, Sven simply re-designed the circuits so that all input and output fit the holes in the body, and then sent the changed schema to a factory paying 2,000 EUR again from their own pocket. I wondered why they paid for somebody else’s mistake, but Sven said pretty non-logical thing: ”it is easier for us to pay 2,000 EUR then for The Big Company to pay 20 times as much for re-designing and re-production of all controllers’ bodies”.
Sven’s logic was pretty strange – until recently.
We have a large customer that uses our software for healthcare e-claims. The software output is xml files. The structure of xml file is regulated by the Health Authority, but each xml file has a few references to the namespaces and schema files in xml header. Any xml parser would not care in what order these references are presented – second goes after first, or backwards.
The client has its own parser that expects all the references in a certain predefined order. If order is different, the parser crashes. The client knows about this issue, but it is a large company running very large information system, so it takes them months to make any changes. This error in the parser might take a couple of months to be fixed.
From another hand, to change a sequence of all the references in our software is a matter of a few hours with all the tests. Let’s even say it would take a day for one person. Sure, our software generates correct files according to W3C and Health Authority standards, and it sounds non-logical to make changes in the working code. But it is much easier for us to make this change rather than keep complaining that this issue is not ours, but customer’s.
Also, the whole process on a customer side might be slowed down significantly without the fix – and here you have very little chances to explain somebody that your software is still good. Surrounded by many troubles, it won’t perform as expected, and it won’t add any value to our customer. And this is something we wish least of all.