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.
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.