Software development as a cooperative game

http://alistair.cockburn.us/Cooperative+game+manifesto+for+software+development

This quote got me thinking today, because if it really is a cooperative game and teams are how we structure people working to solve problems, shouldn’t we look towards other team activities for inspiration?

When you work as a team, it is important to have diversity and a mixed set of skills. Especially in software development cross-functional teams is something that can be a good thing. Now, I have worked on many such teams and I’ve interacted with even more. One thing that comes to mind is that many teams miss some of the key success criteria for teams in sports: trust and the focus on making others better.

Making others better

The last point is something which was a corner stone of Norwegian soccer coach legend Nils Arne Eggen. His philosophy on how to make a team of mediocer players perform better than teams with way better players was to have a focus on making sure everyone wanted to make their team mates better. Playing a pass that puts your team mate into trouble is not good. It prevents you from making a mistake, but putting the other guy in trouble is bad for the team.

In geek-culture we always strive for the next thing. Wether it is a new tool, methodology or technology. Regardless of what has been don previously, we always want to opt for something else the next time we do something. This of course is fun and everyone wants to be working with “the next thing”. It’ll allow you for a small period of time, until someone else has “the next thing”, to keep your head up high and look at all the grunts who work with “what we used to do”. Our continued strive for the next thing is of course a good thing, however it can also be harmfull. Especially in a collaborative game setting, where you want to make others better. Pushing ahead with “the next thing” leaving everyone else behind is not making your team mates better. What would be better is to push for “the next thing” while making sure everyone else can cath up with you. Naturally, this approach doesn’t come with as much personal glory or will make you look better then everyone else. However it will make everyone you collaborate with better. I believe that we can strive towards focusing more on making those arround us better. I also believe that this way of thinking is good for business. What good is one amazing team, when you have six others who are just lagging behind?

Of course, I realize that my opinions are a result of my upbringing in socialist Norway and that this way of thinking is perhaps very weird for some of you.

Trust

Trust is another thing that so many teams, especially in Norway (having worked mostly in Norway I can’t really tell if it is better or worse elsewhere), lack. You can see this lack of trust manifest itself in numerous ways. Micro-management is the legendary sign of a lack of trust in team members. A lesser known one is a team where every decission must be made when everyone agreees. This “democracy” is really just a front for a total lack of trust in each other. When a team consists of memeber who don’t trust each others abilities the democratic way of making decissions ensures that there is a sense of control (which of course is true, because in such team nothing really happens).

Cross-functional teams paired with a “flat hierarchy” is of course the worst kind of team where trust is just not in play at all. Using the “flat hierarchy” as an exscuse for micro-management is a classic. The director of what-ever-the-fuck needs to make decisssions on color. Or manager of God-known-what needs to be in place for user testing. All discuised as managers “contributing” and being “hands-on”, when it really is just good old fashioned micro-management applied because of a total lack of trust in the teams abilities to make good good work.

In closing..

What was the executive summary of this rant-post? It is that we are terrible at team work and most software development teams lack what great teams of other disciplines have. We need to broaden our horizon and look outside our fucked up industry to see how we should collaborate on achieving greatness