“We don’t want to pay for X”
It is surprising how many IT customers (some of which are actually expected to know a lot about software development) decline to pay for good development practices. Be it preventive QA, TDD, test automation or whatever, many customers assume those are additional costs to them (i.e. by not doing them, they would get their software faster and cheaper – and then they demand up-front planning!).
What if you went to a surgery and only wanted to pay for the room and the surgeon. Afer all, it’s the surgeon who makes the cut and fixes you. How would that go? What else is happening in a surgery theater? There are other medical professionals ensuring that whatever the surgeon needs is available (or is quickly retrieved). Some monitor patient’s vital signs and some control the anesthesia. What about the cleaning staff who take care that the hospital is clean? Sure, it’s entirely possible to make surgeries unnecessarily expensive, but there is certain level which has to be maintained (or else the patient pays the difference). I don’t even know, really, and I haven’t been watching those TV series to be better educated. And I don’t have to; I expect them to know what they are doing.
On the other hand, why do we software developers so often ask customer permission for those things? I don’t ask the staff at a restaurant on how they create my food (and instruct them on not using certain types of knives or grill/oven/whatever they choose to use). I stick strictly to my needs and desires (“and the steak – well done, please”), and trust them to know what they are doing. And if the outcome, or it’s cost-effectiveness compared to other restaurants, isn’t to my liking, I probably choose to use some other restaurant next time.
We have to keep in mind that most of our customers don’t have the capability of making an educated decision. They want outcomes that work (they do, even if it really doesn’t sound like that often – and they do complain if the outcomes don’t work), so maybe we should leave them at that. Let them define what they want, we define the how.
Only when they act responsibly, we allow them peek inside. Then again, if they see working outcomes effectively delivered, they are not that interested in what goes inside. After all, it’s the outcomes that make the difference.
Do you instruct the chef in a restaurant?
PS. Funny enough, when it comes to restaurants, there is a kind of expectation that more expensive is better. And often there is a correlation, though I feel that the value/cost ratio comes down. And we choose the place based on the quality (or value ratio) we want. With software, seems that customers want the cheapest. And then complain when it doesn’t taste good.