
Making tough technical decisions as a team is a core part of building, well, anything. Ideally, having lots of eyes on a problem should lead to better ideas. But what happens when your team can’t agree on which idea is best?
We’ve all suffered through these bouts of analysis paralysis. The team goes around and around debating the merits of various options. Eventually people will become exhausted and give up or the team leader may even call for a vote.
This process is broken. Winning-via-attrition and voting are terrible ways to make collaborative decisions for a team that has to work together long-term. There has to be a better way.
It turns out there is, and it’s a practice used by the Internet Engineering Task Force (IETF)—the community of engineers who literally build the internet. They have a credo articulated by MIT computer scientist Dave Clark way back in 1992:
“We reject: kings, presidents and voting. We believe in: rough consensus and running code.”
Unfortunately, except for the original paper from the IETF , there’s strangely not a lot about the concept of rough consensus on the internet. And that original paper includes lots inside baseball only relevant to the IETF. So I want to extract and distill the idea of “rough consensus.” It’s a powerful concept that can transform how a team makes decisions.
Stop Seeking Unanimous Agreement, Start Looking for Disagreement
The first mistake we make is thinking consensus means everyone has to agree. As a leader, you ask, “Is everyone okay with option A?” and you’re met with a barrage of opinions and preferences. You try option B, and get the same thing. You’re searching for universal agreement, which is a mirage.
Engineering always involves a set of tradeoffs. It is almost certain that any time engineering choices need to be made, there will be options that appeal to some people, but are not appealing to some others.
Rough consensus flips the script. The goal isn’t for everyone to be happy, it’s for everyone to be “sufficiently satisfied with the chosen solution, such that they no longer have specific objections to it.” I’d even go further and say not just “specific objections” but showstopping, deal-breaking objections.
In other words, the key question is not, “Do you like this idea?” The key question is, ”Can you live with this?” This simple change is profound. It separates personal preferences from actual, serious problems. I might prefer option B, but if option A is acceptable and won’t lead to major problems, I can “live with it.” My preference isn’t a show-stopper.
Rough consensus shifts focus from finding the “best” solution in everyone’s mind to finding a solution the entire team agrees will work and which they can (perhaps begrudgingly) support.
All Issues Must Be Addressed (But Not Necessarily Accommodated)
So what happens when someone says, “No, I can’t live with this”?
This is where the magic of rough consensus truly shines. Unlike voting or winning-by-attrition, you can’t just ignore someone’s concern. In a rough consensus model, the group is obligated to stop and listen. The objector must explain why they can’t live with the proposal. What is the specific, substantive issue?
The group must then “truly consider” the objection. There are two potential outcomes:
- The group is convinced: The objector raises a valid point the rest of the team missed. The proposal is changed to accommodate the objection. The final solution is now stronger because the objector’s view was heard.
- The objector is convinced: The group discusses the issue and explains the trade-offs. They might say, “We understand your concern about complexity, but we believe the interoperability benefits of this approach outweigh that risk.” The objection has been heard and answered, and the objector decides they can live with it even if they aren’t 100% happy.
This is the “rough” part. The group can decide that an objection has been fully addressed and that the current proposal is still the right path forward, even if the person who raised the issue remains unsatisfied. This prevents a single person from having absolute veto power. The leader has to make a judgment call, but that call isn’t based on numbers; it’s based on whether the issue was given a fair hearing.
In order for the leader to make a judgement call, they need to be sufficiently technical to understand the tradeoffs being discussed and have sufficient political capital to sway the group and prevent further infighting. They may choose to pause a discussion to consult with other experts or re-review material. But ultimately the success of achieving true rough consensus will be determined by how strong a leader the team has.
In order for objectors to truly feel “heard”, I recommend maintaining a “parking lot” of non-show-stopping issues that won’t prevent a decision from being made but will be items to investigate later. This way a team can agree that something can be “lived with” but still leave the door open to finding a way to address the problem at a later date. Ensure these don’t get lost and instead make it onto the backlog for a later date.
A Better Way Forward
This process might seem slower than a simple vote, but it leads to better outcomes. It avoids the “tyranny of the majority” by ensuring minority opinions are heard and evaluated on their merits. It strengthens the final decision by incorporating more viewpoints. And most importantly, it builds a more cohesive team because no one feels like their concerns were simply dismissed by the rest of the group. The process itself builds trust.
So next time your team is stuck, try this:
- Frame the discussion around objections, not preferences. Ask, “Can everyone live with this?”
- Listen to the “no’s.” If someone objects, give them the floor to explain their reasoning.
- Discuss the objection as a team. Is it a valid technical concern or a matter of taste? Are the trade-offs worth it?
- Declare consensus only when objections have been addressed. Remember, “addressed” doesn’t always mean “accommodated.”
- Don’t forget the parking lot for non-show-stopping issues.
Give it a shot yourself and let me know how it works out for you!