Obviously not all of us have the same idea of what “simple” or "simplicity" means, specifically in the context of design. Here are some common misunderstandings, misuses, and abuses that I frequently encounter about the meaning of "simple design."
Myth #1: Simple means easy to understand
Ease of understanding is often more closely related to how familiar something is than to how simple it is. A simpler solution may require us to understand a complex problem, learn something new, and think in unfamiliar ways. People with closed minds will often close the door on new ideas because it's easier than learning new things or changing their views and beliefs.
Myth #2: Simple design is simple to do
If a design is simple from the get-go, then it may be simple to develop or deploy. If the solution is already in place, making it simpler may involve changing people’s minds and behaviors as well as a great deal of the system, which isn't easy to do. And making a simple design for a complex problem is quite possibly the most difficult task of all.
Myth #3: Simple means good enough for now
Simplicity should not entail sacrificing the integrity of the design or implementation for the sake of short-term goals or superficial gains. "Good enough" implies something is suitable for now, while still fostering subsequent improvement and growth. If a design doesn't do that, it's not even "good," much less "good enough."
Simplicity can be arrived at incrementally if each partially complete solution is easy to evolve. Partial solutions that are hard to change typically create a vicious cycle of hacks and quick fixes that increasingly add more pain and complexity. This results in shortsighted, insufficient, and inefficient solutions that an organization chooses to defend, endure, and impose on others because the fear of change exceeds the pain to which the organization has grown accustomed (i.e., choosing the devil you know over the devil you don’t).
Myth #4: Simple is the same as simplistic
One definition of simplistic might be the false appearance of simplicity. It's great to have a design that is stupidly simple, but not at the expense of its being simply stupid! It's not enough to seem simple; designs must work correctly in order to actually be simple.
I've seen groups dismiss a suggestion in the name of simplicity because it introduced a new element. If an element is a rightful part of a problem that needs to be solved, then its introduction corrects an important omission in the solution-design that neglected something essential in the problem-domain. The existing design may seem simpler, but if there's a legitimate scenario or item it fails to address, then, as Gerry Weinberg points out inAre Your Lights On?, something crucial to the problem statement or the design was most likely omitted or misunderstood.
Myth #5: What is simple for one request is simplest for the whole
The requester of an enhancement often wants the solution to be simple from the perspective of his specific role and situation ("point-based" thinking). But what needs to be kept simple is the resulting overall system. Making it simple from one view or situation may compromise other parts of the system, such as the stakeholders. That's not eliminating complexity; it's not even sweeping it under the rug—just onto someone else's doorstep.
These myths and misunderstandings are often more about resistance to change than about making or keeping things simple. I recently came across a number of interesting resources that discuss the meaning of simplicity and its principles. After mulling them over, I think it’s fair to say that while simplicity may be, well, simple, truly understanding simplicity is in fact quite difficult! Here are some lessons I've learned:
- Simplicity requires seeing the whole rather than focusing exclusively on individual pieces.
- Simplicity requires the ability to rapidly zoom in and out, discerning the essential from the inconsequential—and how each impacts the rest of the system.
- Sustainable simplicity usually emerges over time from a set of simple guiding rules.
- In mathematics, simplicity is often equated with elegance.
- The opposite of simplicity is complexity (as opposed to hard, difficult, time-consuming, or labor-intensive).
- In architecture, simplicity is often synonymous with beauty.
- Many successful techniques for managing complexity involve adding new objects to a system in order to hide complexity and separate concerns.
- Hiding complexity isn't the same as removing it.
- Occam's razor does not say what many people seem to think it does.
I believe that true simplicity is about minimizing and managing overall complexity. Complexity stems from the sheer size and depth of the problem we are asked to solve and from the richness and vastness of the interactions within and between the system and its environment. For any non-trivial system, complexity is dominated far more by the interactions among the parts that make up the whole than it is by the parts alone.
Achieving simplicity is less about maintaining many "simple" point solutions than about orchestrating rules and relationships between many interacting solution sets. We must uncover the underlying set of principles that guides our design decisions. This modest set of simple rules will govern how we should best minimize and manage interdependencies, remove constraints, and eliminate waste. Only then can we find the path to solving the real problem and meeting stakeholder needs in a way that is both simple and sustainable.
- A Forrester report on The Power Of Simplicity In Application Development
- Principles of Design from the W3C
- Principles of Landscape design, including Simplicity, Variety, Balance, Emphasis, Sequence and Scale.
- KISS Principles for Object/Relational DB Mapping
- An essay on Elegance and Simplicity & Scale
- The entry on "Simplicity" from the Stanford Encyclopedia of Philosophy
- An essay entitled The New Science of Simplicity
- Edward DeBono's principles of achieving simplicity
- A DM Direct special report entitled A Simple Plan: Embracing Simplicity Can Reap Huge Business Intelligence Benefits
- A paper on the Simplicity Principle in Human Concept Learning
- Some "Design Principles for Simplification" from the SAP Design Guild
- Various sources of quotations about simple/simplicity, such as ThinkExist, QuoteGarden, Quotes of the Heart, Brainy Quote, Albert Einstein quotes, quotations on simplicity of design and quotations about software design
- Are Your Lights On? Gerry Weinberg and Donald Gause
Quotes on Simplicity:
- Everything should be made as simple as possible, but not simpler.—Albert Einstein
- Three Rules of Work: Out of clutter find simplicity; From discord find harmony; In the middle of difficulty lies opportunity.—Albert Einstein
- For every problem there is a solution which is simple, clean and wrong.—Henry Louis Mencken
- Think simple as my old master used to say—meaning reduce the whole of its parts into the simplest terms, getting back to first principles.—Frank Lloyd Wright
- Beauty of style and harmony and grace and good rhythm depend on simplicity.—Plato
- The ability to simplify means to eliminate the unnecessary so that the necessary may speak.—Hans Hofmann
- Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity.—Charles Mingus
- Everything is both simpler than we can imagine, and more complicated that we can conceive.—Goethe
- The whole is simpler than the sum of its parts.—Willard Gibbs
- The pure and simple truth is rarely pure, and never simple.—Oscar Wilde
- Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius--and a lot of courage--to move in the opposite direction.—E. F. Schumacker
- Besides the noble art of getting things done, there is the noble art of leaving things undone. The wisdom of life consists in the elimination of nonessentials.—Lin Yu Tang
- Very often, people confuse simple with simplistic. The nuance is lost on most.—Clement Mok
- You can't force simplicity; but you can invite it in by finding as much richness as possible in the few things at hand. Simplicity doesn’t mean meagerness but rather a certain kind of richness, the fullness that appears when we stop stuffing the world with things.—Thomas Moore
- The point of philosophy is to start with something so simple as not to seem worth stating, and to end with something so paradoxical that no one will believe it.—Bertrand Russell
- The aspects of things that are most important to us are hidden because of their simplicity and familiarity.—Ludwig Wittgenstein
- Manifest plainness, Embrace simplicity, Reduce selfishness, Have few desires.—Lao-Tzu, Tao Te Ching
- Simple things should be simple and complex things should be possible.—Alan Kay
- The key to performance is elegance, not battalions of special cases. The terrible temptation to tweak should be resisted unless the payoff is really noticeable.—Jon Bentley and Doug McIlroy
- The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.—Edsger W. Dijkstra
- Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.—Edsger W. Dijkstra
- Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.—David Gelernter
- Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses remove it.—Alan Perlis
- Technical skill is mastery of complexity, while creativity is mastery of simplicity.—E. Christopher Zeeman
- Architect: Someone who knows the difference between that which could be done and that which should be done.—Larry McVoy
- One of the great enemies of design is when systems or objects become more complex than a person - or even a team of people—can keep in their heads. This is why software is generally beneath contempt.—Bran Ferren
- A complex system that works is invariably found to have evolved from a simple system that worked.—John Gall
- The most powerful designs are always the result of a continuous process of simplification and refinement.—Kevin Mullet
- There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.—C.A.R. Hoare
- Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.—Antoine de Saint-Exupéry
- Simple, clear purpose and principles give rise to complex intelligent behavior. Complex rules and regulations give rise to simple stupid behavior.—Dee Hock