Creating Complexity Is Easy
On a recent episode of the Tim Ferriss podcast, Derek Sivers paraphrased Rich Hickey, saying: "It’s easy to make something complex, but it’s hard to make something simple."
That really struck a chord with me.
In so many situations, there’s a rush to move forward, a pressure to deliver “quick wins” and make rapid decisions. Particularly in complex projects, hasty decisions come with hidden costs —consequences that don’t become clear until much later, when the price of those choices is finally understood.
Complexity is easy to create, simplicity is hard.
Simple Decisions. Complex Consequences.
A single decision, no matter how small, can spiral into something far bigger than expected. Take Australia’s rabbit problem.
In 1859, Thomas Austin released just 24 rabbits into the wild, thinking it would be harmless—just a convenient way to enjoy some hunting. But with no natural predators, the rabbit population exploded, reaching plague proportions and causing devastating environmental damage.
The same thing happened with cane toads. Brought in to control pests, they themselves became a pest, creating another ecological disaster.
The Illusion of ‘Easy’
The idea of easy decisions creating big consequences holds particularly true in software development. A team under pressure to deliver a new feature might cut corners – writing messy, unoptimised code and skipping crucial testing – with the intention of "fixing it later".
However, “later” never comes. Instead, the bad code leads to bugs, security vulnerabilities, and performance issues. Future developers struggle to maintain or update it, slowing progress, increasing costs, and sometimes even causing system failures. This is how technical debt accumulates, transforming what initially seemed like a quick fix into a persistent and costly headache.
And now, we’re seeing early signs of similar issues with AI-generated code. Although formal, large-scale studies are still emerging, evidence and discussions within the developer community suggest that debugging AI-generated code can be more complex than debugging hand-written code. This is often attributed to the quick but incomplete specifications provided to AI models, as well as the "black box" nature of AI reasoning,
The supposedly easy choice to use AI code creates greater complexity later down the line.
Beware the Sugar Rush of “Quick Wins”
In today’s fast-paced world, we crave instant results. “Quick wins” feel good—they give us a dopamine hit of progress. But if a solution is so obvious and simple, why hasn’t it already been done? What crucial element are we missing? What assumptions are we making about the people who came before us that might be flawed?
The real danger isn’t the speed itself— it's the lack of thorough understanding. We fail to fully grasp the complexities of the situation, and therefore, the full consequences of our actions. This is where the real hazard lies. For example, the choice to reduce stock holdings gives and instant cost reduction but will impact revenue in the future when service levels fall.
Are you making the ‘easy’ decision that will create complexity later?
Simplicity Takes Effort
To fully grasp the implications of a decision requires some digging. Comprehension lies beneath the surface - why the inefficient rosters haven’t been changed in years, why stock keeps running out in the Northern depots. Making quick changes based on cursory information in a connected system will guarantee unintended consequences sometime in the future.
John Maeda, in The Laws of Simplicity, puts it perfectly:
"The process of reaching an ideal state of simplicity can be truly complex."
Another useful faming of this is in Thinking, Fast and Slow by Daniel Kahneman where he describes two types of thinking:
System 1: Fast, intuitive, automatic—the "monkey brain" reaction.
System 2: Slow, deliberate, effortful—the kind of thinking that leads to better long-term decisions.
System 1 loves quick wins. It isn’t bothered by implications. Real, lasting progress requires System 2 thinking—time, space, and effort. Simplicity is hard.
Simplicity is Worth It – When Done Well
Taking the time to make something simple is worthwhile in the long run. Simplicity has a lower ‘whole-of-life’ cost and is easier to operate, but it takes times and effort to get there. Four ways to resist the ‘easy’ decisions with negative consequences are:
Create the time and space to think – removal from the day-to-day creates perspective over the whole situation
Go a few layers down - go beyond the obvious to understand why the world is the way it is right now
Reframe the situation – bring in different points of view
Resist the immediate response – ask ‘what am I missing?’
Sometimes quick decisions are essential – particularly for first responders and combat zones. But most of our choices aren’t life and death.
Often, our quickest response is the easiest, not the best. It takes effort to create simplicity, creating complexity is easy.