If an argument can not be solved in 5 mins, it can not be solved forever unless you bring some data. Uncle Bob mentioned this in his book <Clean Coder> in 2011.
However, after 10 years, most people are still used to use only “pros and cons” in technical discussions. Different roles (developers, BAs, QAs, product owners) bring their “pros and cons” from their own perspective with their own language. They list everything they can think of whatever it matters in the discussion or not. The more people are involved, the longer list is. It ends up with a table like below:
|options with pros and cons|
How much does the table help you to choose one of the options?
Problems of “pros and cons”
- Subjective: pros and cons listed by different people are from their own perspective, mostly they are not comparable
- Ambiguous: the same point sometimes can be a pro in some context and a con in others
- Lack of visualisation: the option with more pros or cons doesn’t mean better or worse
- Not friendly to readers: readers have to read everything to understand each option
- Time-consuming: the writer needs to type a lot of words
As we know, everything has pros and cons, so just listing them without a structure that allows people to compare options easily wouldn’t help to reach an agreement. It normally ends up with the tyranny of the majority or blind belief in authority.
Structure your “pros and cons”
The intention of “pros and cons” is to ask people to listen and understand others’ opinions. Get everyone to align on the following things during a decision-making process/discussion:
- the aspects (make it objective as much as you can) matter to this decision
- priority of the aspects
- data or agreed rate on each aspect for each option
All of them can normally be extracted from the original “pros and cons”. The final structure looks like this:
The table visualises things we care about and the trade-offs of each option. The discussions should focus on getting agreed on each cell in the table instead of listing more “pros and cons”. Once the content of the table gets agreed on by the participates, an aligned decision is normally reached.
Technical discussions are one of the biggest waste in software development nowadays. So stop wasting time arguing “pros and cons” with your colleges. Start visualising them with others so that you can improve your efficiency in your decision-making process.