[ MAIN IDEA ]
“Beauty is in the eye of the beholder,” they say.
Yet there are qualities that all beholders find beautiful, like symmetry and contrast.
Same with simplicity.
A truly simple idea or solution has these four properties.
Economic. Nothing extra. Every bit in a simple program plays a crucial role. Every dependency is weight-bearing. Every word moves the story forward.
Destructive. It eliminates unnecessary assumptions, abstractions, and lines of code.
Generative. It gives birth to new features and ways of understanding the world.
Deep. Simple ideas support long chains of logic. Simple apps allow for endless workflows.
Let’s look at some examples.
Shannon’s Information Theory
Reduced communication to a few primitives: source, message, channel, noise, receiver, destination (economy).
Threw out semantics. Whether a message was Shakespeare quote or a movie is irrelevant to the problem of transmitting it (destructive).
Compression, error-correction, digital communication, storage theory, cryptography, networking were natural outcomes of the theory (generative).
Defining “information” as a measure of certainty supports entire chains of reasoning about the limits of compression and communication (depth).
Unix pipes
Programs read input, transform it, and emit output (economic)
The graph doesn’t have to define every possible combination anymore (destructive)
Composition can be achieved using just a few commands:
grep,sort,awk,head(generative).Tiny utilities chained together can solve surprisingly sophisticated problems (depth)
Pure functions
Outputs depend only on inputs (economic)
No more hidden state or ordering assumptions (destructive)
Easy testing, caching, parallelism, memoizing, composition (generative)
You can reason locally about a function and then compose that reasoning as deep as you want (depth)
So, how do we apply this new understanding of simplicity to our own lives?
Here’s a simple, yet humbling exercise.
Instead of hunting for new problems, improve of your existing solutions.
Say you’ve built an app that syncs calendar state between Microsoft, Google, and your own data. Figure out a way to do that in a way that requires fewer services and dependencies, that makes it easy to sync state across n-providers (Apple, etc), and works independent of whether the data is a calendar event or a class note.
It’s humbling to see how difficult it is to simplify something that “works.”
It goes against our sensibilities to just keep moving fast.
But if you keep amassing unnecessary weight and complexity, it’s only a matter of time before you and your product becomes too bloated to move at all.
[ INSPO ]





