“Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.”
– Alan Perlis (American computer scientist)
The default trajectory of all products and companies is to increase in complexity.
Simplicity is a continuous challenge – it’s something that is achieved over days, weeks, and months of dedication and obsession.
Simplicity is so easy to lose, and it’s always being eroded – by team members, customers, investors, new features, new pricing, new questions, and new answers.
We’ve written about the importance of simplicity before – primarily from a product perspective inspired by Dieter Rams: Good design is as little design as possible.
This post was originally titled “simplicity is a battle”, but it dawned on us that that’s not strictly true – battles can be lost, while a war can still be won. Similarly, you can win battles while still losing a war. Simplicity is a war because it’s eroded in small battles that occur daily, often faster than the blink of an eye. You can win many battles for simplicity, but still end up with a complex product or company.
Simplicity is a war. And it’s being lost with thousands of tiny battles.
What is simplicity?
Simplicity is the courage* to say no. It’s daring to have an opinion. It’s being bold enough to make a compromise for a subset of customers in order to make life better for a much larger group.
Simplicity isn’t about hiding buttons and options behind a curtain – it’s about reducing the complexity of a system or interface into a structure that is easy to understand.
Many people equate “simplicity” with terms like “beginner”, “basic”, or even use phrases like “it’s a toy”. But “simplicity” can benefit everyone – even the most advanced and accomplished users of a product or system appreciate and value simplicity.
The more advanced a system becomes, the more important it is for the system to have originated from something simple and elegant.
Why fight for simplicity?
“A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over, beginning with a working simple system.”
– John Gall (American author and retired paediatrician)
Simplicity is a constant fight. But it’s worth fighting because the rewards allow you to move faster, more confidently, and more aggressively.
As complexity builds, everything becomes more challenging – customers find it harder to understand your product, your team struggles to understand where the quick wins are, small changes take considerable time, and big changes become even more terrifying because so many different concepts need to be considered.
Fighting for simplicity often feels counterintuitive – you often find yourself saying “no” for very few reasons other than for the desire of simplicity itself.
But a critical reason for erring on the side of “no” and for preferring simplicity is that complexity often takes you down a route that is harder to navigate away from in the future. Keeping things simple helps you stay nimble and flexible to change in the future. Adding complexity implies adding weight that can slow you down in later decisions – it can make it slower for you to reverse, and it can make it slower for you to change course.
A high-level guiding principal we have: the less certainty we have around a decision, the more we should err on the side of simplicity.
How to lose simplicity
Building a simple and easy-to-use product is extremely hard in the first place. But even if you manage it from day one, it’s all too easy to lose that beautiful simplicity as time progresses.
Adding more features naturally reduces simplicity
There’s always a desire to add more to a product. Customers always want more advanced functionality. They want features they were used to with a tool they used before. They want features they think would be handy. They want features that are genuinely a great idea.
A surefire way to build a more complex product, and add complexity to your sales process, your onboarding flows, your customer success organisation, and your customer support docs, is to default to saying yes to feature requests.
A better mindset when dealing with feature requests is generally to default to saying “no” when they come in. This is painful in the moment – “no” is always a tough thing to say, and it often results in frustration on the receiving end.
But saying “yes” to features is dramatically more painful in the medium and long term.
A yes can often feel simple – it can feel like a small feature you’re agreeing to. It can be just a button here, or a setting there, or an extra field in that one screen. But as humans we tend to be far too optimistic when thinking about the complexity and weight of any given feature. We blinker ourselves into believing the feature is just that piece of the product, but we forget the consequences.
The consequences of saying yes to even small features are often numerous and heavy:
- There may need to be support documentation.
- There could be a need to explain this feature in sales demos.
- This option may not be relevant for all users – does it confuse some people?
- This feature may require an API endpoint.
- Does this feature need to be on the mobile app as well as the desktop web app?
- When we come to updating this feature, will we remember this option exists?
- Do we need to write tests for this new functionality? What happens if we don’t?
- Should this feature be free or should it be gated to premium customers in some way?
The list of consequences could be much longer, and each consequence can have knock-on effects beyond the immediate impact.
Even the smallest of features can be huge under the surface.
More voices and opinions naturally reduces simplicity
It’s not only feature requests from customers that can add complexity to your product and your company.
As you grow your team, you’ll have more voices and a more diverse range of people contributing to the decisions you make. Diversity in thoughts is almost always a great thing, but there is a knock-on challenge of increasing the number of thoughts and opinions going into your business: you have to make decisions and draw conclusions from a group.
Often the easiest solution when dealing with a group of individuals is to make the whole team happy. Generally, we always want to make sure the people around us are happy and rewarded for contributing, but when it comes to delivering a product into the world, there’s a delicate balance between building something that’s designed with input from a large group of people, and something that’s designed by committee.
To strive for simplicity is to avoid making lowest-common-denominator decisions. Simplicity comes from having a clear vision and well defined principles, and the discipline to listen to ideas and coalesce on the best ideas – regardless of their origin.
This is easy to say and extremely hard to do. It’s a team sport, and requires everyone to have a respect or the process. Not only is there a difficult job for the product or decision owner, but every single member of the team needs to understand the importance of picking great ideas and have the ability to give and receive criticism for ideas without getting personal. This is hard. Really hard.
More customers and “verticals” naturally reduces simplicity
The desire for growth tends to rule most companies. This can often lead to decisions about the direction of a product and the structure of a company that can result in the build-up of complexity.
When you start out, it’s likely you had a clear goal in mind – perhaps you were building a product to solve your own needs, which you knew extremely well.
In order to sustain growth, you eventually need to add functionality and options that allow you to serve a wider range of customers. Not only does your product start to become more complex, but so does your messaging, your pricing, your onboarding, and more.
It’s hard to say no to growth, but it’s worth bearing in mind the challenges it brings, and figuring out how you can grow faster without complicating your product and messaging so much that it drifts from your original intentions.
Successful growth can hide many problems that only reveal themselves later.
Copying others naturally reduces simplicity
If you copy others when implementing product features, you’re likely copying the end result – the outcome of many decisions. If you don’t go back to first principles and understand the problems you’re trying to solve thoroughly, you’ll likely end up jumping to a poorly-considered solution that has holes and bugs that need to be fixed down the road.
Quick wins and copying the features of others inevitably leads to complexity, because you skip the fundamental building blocks that allow you to define core concepts that form the foundations for a cohesive product.
Are you ready to win the war against complexity?
“Simplicity is the ultimate sophistication.”
– Leonardo da Vinci
Everyone wins when you keep things simple in your business – your product, your customers, and your team.
Complexity is often more attractive in the short-run – it’s often the quickest win, the “why not?”, and the easiest thing to do.
But more often than not, complexity gets you into a mess down the road – by slowing you down, by making things harder to understand, and adding weight to your business that you’ll need to carry around indefinitely.
To win the war for simplicity, don’t fight with individuals, fight the complexity itself.
Who’s fighting for simplicity in your team?
* Courage. Phil Schiller may have tarnished this word when introducing the iPhone 7 without a headphone jack. The irony being that this is a perfect example where Apple’s fight for simplicity won out against the commonly held assumption that this was a required feature of all phones.