“Balderdash – they want complex and powerful behavior!” exclaims the other side. And back and forth they argue, gnashing teeth and brandishing keyboards.
I think the problem lies in the confusion of terminology, which the authors hint at but don’t state explicitly. Pitting simplicity against complexity in a virtual cage match creates a false dichotomy, or the belief that you must choose one or the other. Both are possible.
This isn’t a cop-out, “can’t we all just get along” answer. I think the real issue is that we are mixing terms. Simplicity and complexity really can be friends, and don’t have to fight to the death (like Kirk and Spock they are best friends, and even if they do fight it’s only a charade).
When we argue about a thing being simple or complex, we are unknowingly asking two higher questions:
- How easy is it to understand?
- What can it do?
These are the questions we ineffectively try to answer using the words “simple” and “complex”. Unfortunately two words aren’t enough; we need four to answers these two questions:
How easy is it to understand?
- Simple: Easy to understand, straightfoward
- Complicated: Difficult to understand, convoluted
What can it do?
- Advanced: Does a lot, powerful
- Basic: Doesn’t do much, simplistic
Framing the problem this way lets us separate out the good and bad answer for each question.
Being simple or complex is a good thing. Being simplistic is an ok thing. Being complicated is a bad thing. Let’s see why.
Case 1: Simple and Basic
Simple and basic is the stereotype of simple: We think that if something is easy to understand, it isn’t capable of much.
This is true a lot of the time. Think about a rock, an oar, or a spoon. These are basic tools and easy to use, though they don’t seem to accomplish much. In software world we have notepad: it’s easy to understand, but not very powerful (no spell checking, embedded graphics, etc.).
Are simple, simplistic things good? You bet. They get their (simple) job done. And their ease of understanding is a great benefit: it’s excellent for education purposes, and often times we don’t need the power we think we do. In fact, having simple behavior often leads to increased reliability — how often does an oar “break down” compared to an engine?
Also, there’s nothing stopping you from taking multiple “weak” items to create a powerful one, like using thin threads to make a thick rope. I’ll touch on this later.
Rocks, spoons, and notepad are fine in my book: they have their uses.
Case 2: Complicated and Basic
Ah, now this is a strange beast. What item could be hard to understand yet not accomplish much?
A Rube Goldberg machine. It’s a contraption built for a basic task, such as lowering a sign, using absurdly convoluted and intricate means. Here’s what I mean:
These devices are complicated (can you immediately tell what it will do?) and basic (lowering a sign isn’t very awe-inspiring). They stink from a practical viewpoint, though they do have redeeming value for entertainment, artistic or educational purposes (how not to build a device).
Unfortunately some software is like a Rube Goldberg machine, like setting the clock on your VCR. Setting the clock should be a simple task, but it often involves a complicated, unweidly procedure because the interface of a VCR is not designed for it (“Press channel up to pick the date…”).
Strangely enough, people don’t seem to get entertainment value from seeing how complicated this is. They get frustrated, which is a bad thing. Items in this category should be avoided.
Case 3: Complicated and Advanced
This is the stereotype of most powerful devices: Sure, they can do a lot, but they are really hard to use.
A real-life example is a helicopter. It can fly straight up, backwards, and manuever in any way imaginable: it’s extremely powerful. Unfortunately, you need extensive training in order to operate one. I’ve never flown in one, but apparently it requires the use of all 4 limbs and your brain in order to operate it.
Items in this realm are often on the cutting-edge. They are our most advanced technology that works, but we are still in the process of figuring it out, discovering patterns and optimizations that make it easier to use.
Computers were originally complicated and advanced. Early computers were powerful (they could perform any computation, albeit slowly), but were very hard to use. You had to use punch cards or even enter information manually using switches. As time went on, we developed keyboards, graphical interfaces, and better programming languages. We were able to input instructions in a more simple (easy to understand) manner.
Programming is still not dead-simple: simplicity and ease of use is a range. But it’s clear that computers are vastly simpler (easier to use) than they used to be. The underlying technology, microchips, has become more advanced (powerful) and also more complicated (difficult to understand) in order to make computers simpler. There was a time when a single person could understand a microchip or operating system — no longer.
Complicated and advanced devices are “ok” — they do get the difficult jobs done, but when using them you often think there’s got to be a better way. And there often is.
Case 4: Simple and Advanced
Ah, this is the holy grail. This is what mathematicians seek by “elegant” equations, what scientists yearn for with beautiful theories, what designers seek when creating products. Consider Einstein’s famous equation:
Energy and matter are equivalent – you can convert one into the other. This concept is astonishingly easy to understand (simple) yet describes extremely powerful behavior (nuclear reactions). Many physics equations are like this: Gravity, Newton’s laws or Maxwell’s equations. They are 1-liners that guide us through powerful behavior, the workings of our universe.
Google is a simple interface for incredibly powerful behavior — finding any document on the Web. The ipod (I’ve never owned one) is claimed to be an amazingly simple device to manage and play music. Even programming can be like this: A Turing machine is a simple model of computation (writing symbols on a ticker tape) that can do the same calculations we can perform on a modern computer. Heck, MacGyver can create a bomb out of simple, basic parts like a toothpick, comb and bottle of shampoo.
Use Simple Building Blocks
Advanced behavior often comes from simple parts. The beauty of the Unix design philosophy was to have many simple, even basic programs that did a single task well: combining files, sorting them, counting lines or searching for words. Each tool was basic, but when linked via “pipes” could lead to very powerful behavior. If you are a programmer, I urge you to learn about Unix if you don’t already.
Much of the world is made from simple, easy-to-understand building blocks. Simple atoms make any object. Simple DNA (only 4 bases) is stretched into long sequences, creating the instructions needed to make a human being. The most intricate video file is still a sequence of 1′s and 0′s.
It didn’t have to be this way. We could have had thousands of elements in the periodic table. DNA could have had millions of different bases. We could have designed computers to store files with 0′s, 1′s and 2′s.
But that’s not what happened. The best-designed, most elegant systems are simple and advanced. Simplicity gives them reliability, and a clever arrangement of parts gives them power.
Simple Isn’t Easy
There’s one giant caveat here: “easy to understand” does not mean “easy to do”. Running a marathon is easy to understand. It is not easy to do. Similarly, actually creating powerful behavior from the easy-to-understand parts can be a challenge.
It’s tough to find underlying patterns in chaotic, complicated behaviors. It’s easy to get something working and leave it at that. But looking at our natural laws, there’s inspiration that nearly any complex phenomenon or design can be built simply.
Have I resolved the debate? You be the judge. To me, simplicity and complexity coexist peacefully by thinking about two separate questions:
1) How easy is it to understand?
2) What can it do?
Don’t confuse a simple interface with basic behavior. Don’t assume a complicated device is powerful. Think about these questions independently and you’ll be fine.