Design, Simplicity, and Elegance
November 28, 2005
- Clarity of expression.
- Austerity in embellishment.
- Restraint and grace of style.
- Scientific exactness and precision.
There seems to be a lot of talk regarding simplicity in design. Google is a prime example. Google's fantastic success has been, at least partially, attributed to their "simplicity principle". Google's austere front page is a great example of simplicity, one search box and 5 or 6 links but amazing functionality. Another great example is 37signals and their products. Spend a few minutes with basecamp or writeboard and you'll soon start to feel the religion. The founders of 37signals have a popular blog where they frequently highlight simplicity and discuss their own views on simple design.
Simplicity is indeed a noble goal, but there is more to the equation. In my own head I use a slightly different word to describe this same design ethos, elegance. Most of the discussions of simplicity I've read are really talking about simplicity and elegance. All good designers feel a deep "resonance" when they see a solution or design that is elegant. Simple is nice, but simple alone can sometimes limit you, reduce your options, or is only a partial solution to the problem at hand. I would argue that the examples of simplicity given above are more fully described as simple and elegant. Google and 37signals "resonate" because they create elegant solutions.
This of course makes it difficult to enumerate the "rules" for a product or service that follows the simplicity principle. You'll hear people say that this is "more art than science", not exactly helpful. Another approach is the K.I.S.S. principle, or "keep it simple, stupid". As I've argued before though, simplicity alone isn't the whole equation. The following are my own internal steps for trying to achieve design elegance and by no means are intended to be comprehensive.
The first thing to consider is the problem you are trying to solve. Take your design and try to step back through your assumptions. Say you need to design a new cell phone, what is the problem you're trying to solve? Step back through the abstraction layers. The problem is not to "design a better cell phone". The real problem you are trying to solve is allowing people to communicate. Letting your mind wander around in this territory for a while can inspire design elegance. Once you've gone back far enough to state the problem you are trying to solve, repeat that problem to yourself as you go back down through the layers and through the design process. Working on the screen, does this make it easier for people to communicate? Adding a feature, again repeat the problem you are trying to solve. You will, of course, be constrained in your choice of design, but trying to state first principles is an important step to elegant and simple design.
Next, you must take a holistic view of the design. What do your design choices affect? How do these design choices interact? Frequently simplicity can masquerade as complexity in a different dimension of design. How, do I mean? Surely the reduction of buttons on a consumer device would make it simpler. What about a device with a single button? Is it simpler, or is it now creating complexity in another design dimension? How would a DVD player with a single button work?
If you are working on a design for something for which there are already examples, try to reverse-design the item. Imagine what factors led to the current form and function. If your imaginary predecessor was working off the same first principles, what tradeoffs and choices forced them to their design? Frequently (in my experience especially in software) new eyes looking at old design will exclaim "what a piece of junk! Why in the world would anyone do it this way?" Understanding the factors that led to the current design can help avoid pitfalls and help to frame the holistic view.
If your design involves human interaction, spend some time and try to divest yourself of the specific knowledge of what you are trying to design. While in this Zen-like state, try to imagine interaction with your design. How about from the point of view of a child? The other classic viewpoint is designing for your mother (assuming of course your mother isn't the designer of computer programming languages). Even if your product isn't targeting the general population, eliminating the expected knowledge base in this step can lead to a simpler more elegant design.
The last step may seem like a contradiction to the previous one, but this is one that "great" designers frequently skip. Again when dealing with user interaction, understand the tacit knowledge that's pervasive in your users. This is usually described as "intuitive" design. You usually want interactions with your design to flow with people's expectations. When designing a car, the most elegant solution for directing the motion of the car might be a joystick or some other non-traditional control mechanism. This, however, ignores the tacit knowledge of how to operate a steering wheel and pedals that are pervasive in the end users. If you are trying to create a new design that contradicts this tacit knowledge, your new interaction method must be intuitive on an even deeper level, such as the Segway's leaning steering mechanism. People often describe it as "reading your mind" in determining where you want to go.
So to recap, these are my own internal "design for elegance" steps. These aren't necessarily new, but my own approach to design simplicity and elegance.
- Try to understand the "real" problem you are trying to solve.
- Take a holistic approach to design choices.
- If there are examples, try to reverse design them.
- When design involves users, try to divest yourself of specific knowledge.
- In UI design, don't counteract people's expectations.
All good designers and engineers have opposed inner forces driving them. The first force is driving the designer to make something that works, while the second is driving the designer to create something that works "right", something elegant. Following these steps, especially when working in a "blank slate" environment like a startup, can help to generate elegant design. There are always the counteracting forces of time and the effort to make something elegant but as Google and 37signals have shown, elegant design can be a factor for success.