This is a continuation of The Agile Architect Part 3 — Fail Fast.
Your design discussion started out fine. You were exploring the space, but then it started going downhill. Once again the two hotheads in the room are taking all the airtime arguing with each other. Both are digging their heels in further while not taking any time to listen.
Meanwhile, a third person in the room has stopped participating in the discussion and has gone into mediator mode. Maybe if they’ll just listen to each other this would go well!
Everyone else in the room has gone silent, avoiding eye contact and hoping that this meeting will end.
Have Better Disagreements
Conflict is not a bad thing. Bringing together differing viewpoints and getting more eyes on a problem helps produce superior results.
The challenge is getting through these discussions without it deteriorating into a fight. And here’s the rub:
Most people suck at navigating conflict.
The Art of Negotiation
When most people think of negotiation they think of battling over the price of a car or negotiating their salary. These are usually viewed as zero-sum interactions where one party getting something comes at a loss to the other.
In the book “Getting to Yes” the authors explore another view of negotiation that can help people arrive at mutually beneficial agreements.
Focus on Interests over Position
In software, these usually lie under the surface as the various design qualities we want to arrive at. Do we care about performance? How about memory usage? Maybe the design that is the easiest to understand is the most important. So how do we get past the desire to prove we’re right and start talking about the things that really matter.
Help People Hear Each Other
When someone is arguing a position, this is usually in response to the feeling like they aren’t being heard. When they’re doing this, they’re of course not listening either, and it leads to a downward spiral.
To pull people out of it, try re-framing the discussion. Create a structured meeting that follows a set of steps and hold people to this:
- Clearly define the problem you’re trying to solve: This will help keep the conversation focused. If the discussion veers off track, put it in a parking lot and come back to it.
- Enumerate your options: Get everyone’s solutions on the whiteboard. The goal: Separate people from their ideas. Everything is fair game.
- Objectively evaluate the pros & cons: Go through the solutions and clearly identify the benefits and drawbacks of each. Encourage people to talk about the cons of solutions they suggested.
Once people focus on the pros/cons, the conversation changes dramatically. People becoming more collaborative and focus on finding solutions together.
There will still be disagreement, but now the disagreements are about things that matter.
“This solution may be easier to read, but is it going to have performance issues?” “Yes, but is performance something we really care about here?”
Committed but not Closed
Once you’ve come to an agreement, make it clear that new information may arise, and when it does the decision can be reopened. Now that everyone has a clear understanding of why a certain course of action was taken, they are more likely to raise issues in the future and share differing opinions.
Continue reading the Agile Architect series with Part 5 — Final Thoughts.