It is quite easy to justify doing nothing to improve how your organization develops software. Whether it takes the shape of “we don’t have the budget”, or “we can’t afford the time, we’re just too busy right now”, the point is the same. It can be paraphrased as “We have decided, consciously or not, that our current painful approach is preferred to spending the money or time to do something about it.”
Management dashboards are all the rage these days, and the analogy to what we use to navigate our cars across the city is an apt one. In a car, a few dials and numeric indicators give us the information we need to arrive safely, and within the constraints of the law. The speedometer and fuel gauge are usually the most prominent elements, but even data staring you in the face can be insufficient, so automakers provide us with more.
We get idiot lights.
Sitting somewhere right beside the fuel gauge is a light that comes on when you are low on fuel. It’s one thing to see the gauge tending towards empty, it is an entirely different matter to be told “find a gas station now!” The “you idiot” is implied at the end of the message.
I have a nasty habit of running my tank fairly low, and often use the idiot light as the sign that the inevitable can be put off no longer. Indeed, I’ve been caught several times ignoring even this message for too long, with the obvious consequences.
With all my yammering on about preparedness, warning signs, and even metrics, why have I allowed myself to run out of gas, and continue to run ‘till the idiot light comes on?
It’s the same reason as for software development. I always seem to be in a hurry, and I get this absurd satisfaction out of stopping at the pumps as rarely as I can get away with (even though I know that it costs me no more time to fill up more frequently, and can potentially save me money if I time the pricing trends). The time and money cost of stopping for gas is pretty clear, especially compared with the hope that I can make at least one more trip on the fumes left in the tank, or defer that cost one more day. There is always that hope that fuel prices will plummet.
I have learned, though, after being burned, to pay heed to those idiot lights. I change my objectives and behaviour until my tank is full again. Finding a gas station becomes a high priority.
Let’s step back and see why idiot lights can be so compelling.
If things are generally going well, idiot lights only come on once in a while. The gauges on your car dashboard, like the trends that appear via any metrics program you have in place, are always there. Idiot lights are simple indicators, rather than trends that can take some time to discern. Their boolean nature is clear: if a light is on, you would be wise to take action. If the light is off, you can continue along in your semi-comatose state, lulled to sleep by all the metrics as they constantly whisk by.
So what are the idiot lights of software development? There are plenty, they are often tightly intertwined, and they are far too commonly ignored.
If you are failing to meet customer expectations, something needs to be done to understand their needs and better manage those expectations.
If you are working in a chaotic environment or doing a lot of things that aren’t expected, it’s time to step back and identify what really needs to be done on this project.
If you are missing delivery dates, especially if this missed delivery catches you by complete surprise, you need to get better insight into real project progress.
I would guess that you can easily add a bunch of your own. Chronic underestimation, massive scope creep, a never ending stream of defects.
Some companies could easily read by the glow of all the idiot lights.
These are all indications that things are broken, but we ignore the warning signs even though we know what is in store. There’s no need to dive into a comprehensive metrics program to tell you that you need to do something. Besides, there will almost certainly be pushback that you couldn’t afford to collect the metrics you would need anyway).
It is just like with that fuel light in the car. When these lights come on, if there is no change in objectives or behaviour, there can be no change in expected results. Are there any idiot lights burning brightly on your projects these days? How much gas is left in that tank of yours, anyways? – JB