Sunday, June 12, 2005

Do you believe in Phil Crosby?

So I’ve started using a bug tracking system.

Yet hate bug tracking systems - I believe they are wrong, rather than help fix bugs they help hide them, they create excuses for not fixing bugs. They allow us to say “Its in the system” when really we mean “No way will it get fixed.”

So, why have I started using something I don’t like...

He’s the simple explanation: I’ve now taken over some product management duties and I don’t have the people available to fix the bugs. I need to keep track of the problems that are coming up. I also need to show the company “I’m doing something.” Somehow people are impressed when I say “I’ve started using the bug tracking system.”

It also means people accept there bugs.

What we really want to do is not accept them, have zero-tolerance for such errors.

So, the longer version of why I’m using a bug tracking system...

Its a stock of work to be done, a queue, a buffer between now (the time they are discovered) and the time the work gets done. When they do get done.... well, that is the question.

It does have one attribute that is useful, it allows for prioritisation. So, we can decide which ones need to get done. But then, if we had zero-tolerance there wouldn’t be a need for this. (Or, if there had been more quality built in then we wouldn’t have the need either.)

A keen reader will probably also point out that with prioritisation comes the ability to decide not to do something. Say, we identify 100 bugs, we fix the top 20 and then the people above me decide it is good enough, why use scarce resources to work on such low priority items? If it does the job with these 80 faults why shouldn’t we just save our effort?

I suppose its a bit like building a car, and when it is done you see the faults, you fix some and sell it. Have you saved yourself a lot of work? Have you allowed your workers save time during the construction - thus introducing low priority faults - and later decided which time saving items where worth going back and paying for?

To my mind, if a job is worth doing its worth doing right. If we need to save time and money somewhere we should do it in a conscious management fashion “Don’t develop feature X” - not in a sub-conscious “Joe saved 10 minutes by not tightening the screws” kind of way - doing it this way allows the guys on the production line to decide what is worth saving on.

Really it comes down to “Do you believe Phil Crosby?” - that is, do we believe “Quality if Free” ?