📝
Seven tactics for resolving technical disagreements
Engineering is a team effort. Engineers learn from one another, challenge and improve upon each other's decisions, and depend on one another for code reviews. But what do you do when you and a coworker have a technical disagreement, and you just can’t seem to get anywhere?
I like to work with individuals who demonstrate maturity, and the ability to navigate disagreements and resolve them productively signifies maturity to me. Here are some tactics that I like to use to resolve technical disagreements.
- strive for objectivity
- Try to uncouple your ego from the discussion so you don't feel threatened by other people's ideas.
- Shift the dynamic of the conversation from “me vs. you” to “us vs. a problem”.
- Try to articulate and agree on your goals.
- Draw up lists of pros and cons for each solution you're considering
- take time to prepare your case
- Discussions are not productive if your grasp of an idea is still fuzzy.
- Everyone involved should take some time to think through their points of view
- be able to clearly explain their line of reasoning.
- understand the other person's ideas and Points
- Make a good-faith effort to see their point of view.
- Remember, your teammate has the same good intentions that you have.
- Get curious. Ask as many questions as you need to ask until you understand the other person’s proposal well enough to communicate it back to them.
- This will let you address each point directly or sometimes come around to the other person's perspective.
- identify and acknowledge your assumptions
- uncertainties, and gut feelings. “I guess what I’m worried about is…” and “I’m not sure I understand why/what/how…” are good ways to begin this line of thought
- This will open the door for collaboration and let your team help you address your concerns
- say you can convince me if
- list what things the other person needs to prove to make you change your mind
- This exercise will help you both be objective, and will also force you to think through and understand what really matters to you
- step away for cool-off period
- If discussion gets heated then emotion is probably interfering with your ability to think and communicate clearly
- Agree to take a break for a few hours or a day and then try again later.
- If you feel embarrassed about getting emotional, it can help to acknowledge what happened
- Sorry I got a little worked up back there! You can tell I'm passionate about this, but I don't want to let emotion affect our decisions."
- Most people can relate.
- just build it
- If discussion doesn’t seem to be getting anywhere, try proving your idea with code.
- build a prototype, run performance tests, write pseudocode, or ultimately just implement one of your ideas as an experiment
- perform a team assessment to decide if it’s a success or failure based on agreed-upon criteria
- You can always rewrite it later if it turns out to have been the wrong decision.
- And wouldn't it be great if the other person's idea turns out to be successful?