Software quality is important to me. I think about it a lot. I think about it when I’m estimating, when I’m coding and sometimes when I’m at home too. Today I was thinking about software quality on a run and an interesting thing occurred to me, that is when we set a target for quality, there’s a corresponding psychological mechanism that steers us sub-consciously toward it. It encourages us to make the decisions now that will move us toward our goal.
This is a good reason to set stretch targets to aim for. Inevitably there will be challenges to interfere with our best plans, however if we have a stretch target in place we can keep focused toward it and make the commitment necessary to push through the difficulties. Conversely if we only strive for a base target, then we are less likely to feel motivated to achieve something worthwhile. Are we setting our sights too low?
The combination of a stretch and a base target have another purpose too. Because while it may come to pass that the base is all we can achieve, this will only be due to constraints outside our control. It is not what we were aiming for. In striving for a stretch target we have some headroom when things don’t go to plan, and can still achieve a respectable outcome.
A lot of these musing were stimulated after reading a wonderful and fascinating article by an engineering leader in Microsoft, written in 1989, about working toward zero-defects (pdf). Zero defects sounds like an unattainable ideal, however it may be a worthy stretch target in my opinion. Big goals and hard targets give people reason to focus, to strive, to exceed their day-to-day and break out of their comfort-zone. Perhaps there is something we can learn from this effort inside Microsoft.