March 24, 2006

...Learn TDD with Codemanship

Just Following Orders

History is littered with tales of unspeakable violence and cruelty carried about by mindless grunts who were "just following orders". It's a commonly used, but arguably entirely invalid defence that we are not responsible for the consequences of our actions if we're carrying out a process prescribed by someone in authority.

Maybe we can lump people into two groups: those who do things because they seem like the right thing to do, and those who do things because that's what they've been told to do. The first group is using their own - possibly flawed - judgement, and they stick their necks on the line every time they make a decision for themselves. This is a group of people that takes responsibility for their actions. The second group of people prefer not to rely on their own judgement, because that brings a greater responsibility.

Right now, the software development community seems to be polarising into these two groups. There are people who use their judgement, make decisions and accept responsibility for the consequences. And there are people who wait to be told what to do, and blame the person who told them when it all goes wrong. In this kind of organisation, people would prefer not to be the ones to tell the other people what to do, either. You get a culture where nobody is prepared to make a decision, for fear of being blamed if it turns out to be the wrong decision.

So, instead of having people stick their necks out to tell other people what to do, they have processes, documents, standards and policies - usually that cannot be directly attributed to any one person or even a specific group of people. They achieve this Nirvana of zero responsibility by making these processes, documents, standards and policies as complicated as possible. And the way in which they are defined is as convaluted as posible, to ensure that nobody at any point gets caught in the glaring headlights of personal accountability.

The glacial speed at which these artifects evolve also ensures that most of these people are never around to see the consequences of key decisions. It also tends to ensure that no important decision can be made in time to address the orginal problem or need that drove it. This acts as a comfortable mechanism for allowing us to sit back and say "oh, well, we're too late anyway" in 99.9% of circumstances.

It is because of this that I genuinely believe that complex, process/standards-oriented approaches to process improvement are actually just a very expensive way of giving up.
Posted 15 years, 5 months ago on March 24, 2006