November 27, 2007

...Learn TDD with Codemanship

Quality Cultures Are Often Products Of Developer Disobedience

The best kind of change tends to happen bottom-up.

I'm talking about the kind of fundamental change that can only happen when everyone involved embraces and internalises new ways and new ideas wholeheartedly. That means willingly, enthusiastically, and - above all - genuinely.

I've seen software companies "embrace" a "quality culture", with senior managers running around talking about quality with the same religious fervour that George W. Bush and Tony Blair talk about "freedom and democracy".

But, judged by their actions, the same managers quite obviously don't believe in the quality culture. When the choice is deadline or quality (a false choice, by the way - you can have both), deadline always wins.
Just like, when faced with the choice to uphold their values, or to appease a dictatorship like Saudi Arabia or Pakistan, the champions of "freedom and democracy" side with the despots every time.

Geniune quality cultures are rare - very rare - and they always, always start at the grass roots. Let me be absolutely clear about this: if you're waiting for permission from your boss to make quality the priority, then you've got a long wait coming. They may say it, but when the deadline looms and the customer is stamping their feet, you'll quickly realise that they don't mean it. Even the ones who think they do, very probably don't. Not when the chips are down, it seems - just like Tony Blair probably genuinely believes he's championing democracy, even when his actions tell the exact opposite story.

Quality cultures,are the products of people doing what seems right to them there and then, without direction from above. By sticking to our guns on quality, and by collaborating and co-operating with our peers, high levels of quality are readily achievable. After all, we write the code, don't we?

Over centuries of social conditioning, we have come to view traits like obedience as virtuous. Obedience, of course, is far from virtuous. How many people through the ages have been slaughtered or oppressed by "good people" who were "just following orders"?

And there's still a majority out there who believe that a "professional" is someone who does as he's told. So when the project manager tells them to forget about testing or to skip the design wlakthroughs, and just "get it out the door", they genuinely feel that the right thing to do is to do what the project manager tells them to do.

I totally disagree. A professional is not someone who just does as he's told. A professional is someone who - based on their best knowledge at the time - does what they think is right for their clients, for their peers, for their profession, and for the wider public. It is not in the customer's interest to deliver shoddy, unmaintainable software. It's not in the team's interest. It's not in the profession's interest. And it's not in the interest of the public at large, especially when they rely on that software in any way (e.g., for reading their email, or for making a payment, or for booking a seat on a train).

So, in situations where your project manager is not giving appropriate priority to quality, I recommend a kind of civil disobedience. Refuse to cut corners. Stand your ground. Manage upwards and make quality a priority despite their uninformed interference.

Of course, if you're the only one, that could make life a little harder. You need to be united with your peers on this. If you're the only one on your team who cares, then might I suggest you're possibly on the wrong team?

Once you start delivering better quality software, without incurring highers costs or creating noticeable schedule slips - which should be the outcome if you're doing a good job of things - your managers will realise that it's better to leave these decisions to the people best equipped to make them. That's you.

And that's how a quality culture really gets started.
Posted 4 days, 16 hours ago on November 27, 2007