Recently I have had discussions with different companies about situations where a software system failed to meet requirements, in some cases with serious consequences. When talking about how to stop the issue from reoccurring it is striking how hard it is to get to the real root of a problem when analyzing business processes. Invariably we get to the physical root cause and then often put in place expensive and time consuming Band-Aids. An example – an error made in a specification caused an integration failure. The solution proposed was adding more reviewers to the document, even though the process was clearly already weighed down in paperwork and handoffs, and that the failure was actually in the writing of the specification, not its review.

I asked – “If you come home and the floor is wet, what do you do?”

Answer – “Work out where the water is coming from”.

“Then what?” “Plug the leak and clean up the mess!”

So why is it that in our work when the floor is wet, we don’t find the leak and plug it, we just buy buckets and pay people to empty them outside and bring them back in every day so the floor stays dry…