Monday, December 29, 2008

The culture of success

It seems to be accepted as the norm these days that software development projects are a big gamble. You may succeed, but all the planets have to be in perfect alignment to achieve it - and what is meant by success is also open to interpretation.

I find myself in disagreement with the status quo however, the dice can be loaded in favor of a form of success, as long as the right attitude and culture is in place – and that ‘success’ is understood by all to mean the same thing.

There are many different paths that can be chosen during development of a new product. Once a decision is made to walk down a less desirable path, every other step from that point forward, no matter how sure footed, is at a disadvantage because it is still headed toward the bad side of town. The only way to correct this situation is to double back (i.e. throw work away) and take a more appropriate path.

Success can be as hard or as easy as you want it to be, but if you don’t instill and install the right culture, you just won’t get it.

Agile values and principles help like minded individuals to understand the common parts of what make up the right culture, but the agile label itself is under threat from misinformation and misunderstanding. The lowest common denominator that underpins any successful project is working code – and in order to understand what a healthy culture means, you have to understand what it means to be responsible for delivering it. If you have this prior context, agility speaks for itself.

1 comment:

Paul said...

Hi Andrew,

I've been thinking about this post for a while. As ever it is insightful. A few ideas have been bouncing around in my head and i think they are finally beginning to gel.

Alistair Cockburn talks about successful teams, and getting into the "safety zone". His take is that there is no prescriptive formula, just an attitude and a "human-powered" drive to succeed. Steve Yegge talks about Good Agile and Bad Agile. In the past I've differentiated between Good OO and Bad OO.

Thinking it through, everything we do can be either good or bad. Executed well or badly, leading to success or failure.

So there are good teams that are successful and bad teams that fail. Agile, OO etc are merely labels and do not predicate success or failure so in a sense these labels are redundant, it comes down to people. So we are left with good people who succeed and not so good people who fail.

So what is the essence of a good team? I think your title sums it up: " a culture of success". Software development as a discipline is sufficiently mature knowadays for a team hell-bent on success to try different ideas and inspect and adapt until they learn what works for them and what will diliver success.

The real issue is that often other agendas get in the way. Often team success isn't the overriding objective in peoples minds and becuase of this the team do not do everything humanly possible to succeed and in they end fail.

Wat do I mean by "Humanly possible"? I'm not talking about heroics. I'm talking about being smart, using our most valuable asset, our brains to tests and experiment until we learn how to succeed.

So I think I am going to resist using the term "Agile teams" as a by word for "Successful teams" in the future. No, I think I'll just talk about Good teams and Bad teams, and the traits of Successful teams versus the traits of Unsuccessful teams. Everything else is just noise and marketing.