Friday, February 11, 2011

(Avoiding) Consensus

I work with a lot of teams and a lot of different types of teams. One of those teams is what I call the "consensus driven team". This is a team with laudable goals: they want the entire team to feel ownership and to buy-in to what is being done. (Joining hands and singing of Kumbaya is optional.)

It sounds awesome. After all, someone who understands what the team is building and feels personally invested in that product is going to take care to work cleanly, is going to help out fellow team members, and is going to frankly work really hard toward the goal, which he completely understands.

But beware.

These teams can easily go to an extreme, and then production simply stops. The team goes completely adrift, and spends a whole lot of time talking and considering without actually doing anything. Why?

Because consensus doesn't scale.

Now, consensus can be a wonderful thing for all the reasons I outlined above, but it has to be used judiciously. Not all decisions can be made by consensus, and the more people involved in the process, the longer it will take to get consensus. Getting two people to agree on something (where to go for lunch, for example), is a lot faster than getting ten people to agree on that same thing.

Please, use consensus making as much as possible when it's appropriate. But don't try to use it for everything; you'll never actually make any progress.

Consensus is a great technique if:

the team is small (under about 5 people)

the decision is important to the whole team (a major architecture decision, for example)

the decision has ramifications across several areas of expertise and could use input from different viewpoints

Avoid using consensus to make decisions if:

the team is large (anything over about 8 and consensus is exponentially harder)

the decision is small (what to name a variable, for example)

the decision is urgent (consensus almost always takes longer)

the decision doesn't matter to other team members (what IDE you use)

the decision is subject to group think

Consensus sounds great. But like ice cream, consensus isn't the answer to everything. Sometimes we need to eschew consensus and just make a decision already.

This Blog is one of the best top 100 software testing blogs by this article:http://www.testingminded.com/2010/04/top-100-software-testing-blogs.htmlbut for me, it's just the best! continue with good work dude! see you!