The Internet is so full of good advice, great frameworks, bulletproof methods, brilliant mental models - how is it possible that so many companies (/organizations/teams) still struggle with basic things? Continuous improvement, 4DX (Four Disciplines of Execution), Goldratt’s Theory of Constraints - just these few tools should be more than enough to tackle 1-by-1 the vast majority of every org’s daily problems.
Why isn’t that happening?
The diagnosis is simple: either these methods are total bullshit (nah, they are not), or we’re too dumb to use them (well, many of us aren’t), or we lack the basic discipline to adapt them consistently (frankly, that may be the case as well …), or (at last but not least) … not every challenge has a solution. And it’s that final thought I’d like to dedicate this blog post to.
We’re so used to the most straightforward approach towards problems (1. identify; 2. isolate; 3. solve; 4. verify; 5. repeat) that we find it hard to believe this loop … sometimes doesn’t work at all. But why so?
Barry Johnson, in his famous book - ”Polarity Management: Identifying and Managing Unsolvable Problems” (published in the 70s, if I remember correctly) - claims that some challenges are actually unavoidable, ongoing TENSIONS between two opposing but interdependent values.
He calls that category of problems “polarities”.
A typical problem has a clear endpoint. And once you fix it, it’s gone (you can move to the next one). But the polarity doesn't have any endpoint - it’s an ongoing cycle. And as the two sides (poles) are interdependent, it’s not possible to have one without the other over time.
Here are some of the most popular examples of polarities in software engineering:
- Cost vs Quality
- Short-term vs Long-term
- Structure vs Flexibility
- Individual vs Team
- Candor vs Niceness
If you treat polarity as a problem (”We’re too slow! The solution is decentralization!”), your perspective is limited to just half of the equation. Even if you temporarily benefit from some positive early effects of decentralization, if you don’t pay attention to its negative side effects (fragmentation, duplication of effort, inconsistent standards), you’ll end up with an unmanageable mess.
What usually follows is the full swing to the other extreme (” No one controls that! We need to centralize!”), until things go too far (”Too much bureaucracy, bottlenecks, the decisions are too slow!”) - the majority of organizations perfectly know how this cycle of madness works (… from the first-hand experience).
How does one manage a polarity, then? Well, it’s all about achieving and maintaining (continuously - yes, it’s an infinity loop!) a balance. Fully aware of the drawbacks of both extremes. If you lean too much on one side, you eventually trigger the negative effects associated with that (which will force you to swing to the other side …). Johnson is more specific than that and advises the reader to:
- Identify the poles.
- Identify early warning signs associated with certain types of imbalance (e.g., too much focus on a given pole). You can even visually represent it as a map with quadrants (axes: poles and upsides-downsides continuity) and warning signs positioned in 2D space.
- Set up a mechanism to detect those early warnings (or measure the quantified probability/strength of expected negative effects).
- Set up a governance mechanism & allocate time/capacity for potential self-corrections.
Interestingly, according to many, with all the stacked-up layers of complexity, our industry is moving from (already painful) VUCA (volatility, uncertainty, complexity, ambiguity) to an even more dreadful BANI (brittleness, anxiety, non-linearity, incomprehensibility) paradigm. In a non-linear world, “fixing” a problem often breaks something else (that was not trivial to predict), making Polarity Management nearly a default approach to tackling challenges.
