Home| Sanos| Documents| Links| Contact| Search|

Quotations on simplicity in software design

Remember that there is no code faster than no code.

-- Taligent's Guide to Designing Programs

Simplicity is the soul of efficiency.

-- Austin Freeman, "The Eye of Osiris"

...it is simplicity that is difficult to make.

-- Bertholdt Brecht

Less is more.

-- Mies van der Rohe

The inherent complexity of a software system is related to the problem it is trying to solve. The actual complexity is related to the size and structure of the software system as actually built. The difference is a measure of the inability to match the solution to the problem.

-- Kevlin Henney, "For the sake of simplicity" (1999)

The minimum could be defined as the perfection that an artefact achieves when it is no longer possible to improve it by subtraction. This is the quality that an object has when every component, every detail, and every junction has been reduced or condensed to the essentials. It is the result of the omission of the inessentials.

-- John Pawson, "Minimum" (1998)

More good code has been written in languages denounced as "bad" than in languages proclaimed "wonderful'' -- much more.

-- Bjarne Stroustrup, "The Design and Evolution of C++" (1994)

I have yet to see any problem, however complicated, which, when you looked at it in the right way, did not become still more complicated.

-- Poul Anderson

Simple things should be simple and complex things should be possible.

-- Alan Kay

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

Plan to throw one away; you will anyhow.

-- Frederick Brooks, "The Mythical Man-month" (1975)

Smart data structures and dumb code works alot better than the other way around.

-- Eric S. Raymond, "The Cathedral and the Bazaar"

[...] At first I hoped that such a technically unsound project would collapse but I soon realized it was doomed to success. Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way---and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay.

-- C.A.R. Hoare, "The Emperor's Old Clothes", Turing Award Lecture (1980)

Premature optimization is the root of all evil in programming.

-- C.A.R. Hoare

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

It's hard to read through a book on the principles of magic without glancing at the cover periodically to make sure it isn't a book on software design.

-- Bruce Tognazzini

A language that doesn't have everything is actually easier to program in than some that do.

-- Dennis Ritchie

[...] 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, "The Humble Programmer" (1972)

... the cost of adding a feature isn't just the time it takes to code it. The cost also includes the addition of an obstacle to future expansion. ... The trick is to pick the features that don't fight each other.

-- John Carmack

Increasingly, people seem to misinterpret complexity as sophistication, which is baffling --- the incomprehensible should cause suspicion rather than admiration. Possibly this trend results from a mistaken belief that using a somewhat mysterious device confers an aura of power on the user.

-- Niklaus Wirth

One of the most dangerous (and evil) things ever injected into the project world is the notion of process maturity. Process maturity is for replicable manufacturing contexts. Projects are one-time shots. Replicability is never the primary issue on one-time shots. More evil than good has come from the notion that we should "stick to the methodology." This is a recipe for non-adaptive death. I'd rather die by commission.

-- David Schmaltz

The difference between a good and a poor architect is that the poor architect succumbs to every temptation and the good one resists it.

-- Ludwig Wittgenstein

Refactoring provides enough energy to a system for it to relax into a new and more comfortable state, a new local minimum.

-- Kevlin Henney, "The Imperial Clothing Crisis" (2002)

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, "Machine Beauty", Basic Books (1998)

Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses remove it.

-- Alan Perlis

The cheapest, fastest, and most reliable components of a computer system are those that aren't there.

-- Graham Bell

The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents.

-- Nathaniel S. Borenstein

Good judgment comes from experience; experience comes from bad judgment.

-- Frederick Brooks

...Simplifications have had a much greater long-range scientific impact than individual feats of ingenuity. The opportunity for simplification is very encouraging, because in all examples that come to mind the simple and elegant systems tend to be easier and faster to design and get right, more efficient in execution, and much more reliable than the more contrived contraptions that have to be debugged into some degree of acceptability.... Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.

-- Edsger W. Dijkstra

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.

-- Albert Einstein

Everything should be made as simple as possible, but not simpler.

-- Albert Einstein

To arrive at the simple is difficult.

-- Rashid Elisha

The structure of a system reflects the structure of the organization that built it.

-- R. Fairley

The unavoidable price of reliability is simplicity.

-- C.A.R. Hoare

Computer Science is the only discipline in which we view adding a new wing to a building as being maintenance.

-- Jim Horning

Controlling complexity is the essence of computer programming.

-- Brian Kernighan

Complexity is a sign of technical immaturity. Simplicity of use is the real sign of a well design product whether it is an ATM or a Patriot missile.

-- Daniel T. Ling

Simplicity does not precede complexity, but follows it.

-- Alan J. Perlis

Computer Science is the first engineering discipline in which the complexity of the objects created is limited solely by the skill of the creator, and not by the strength of raw materials.

-- B. Reid

Walking on water and developing software from a specification are easy if both are frozen.

-- Edward V. Berard

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

If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.

-- Robert X. Cringely

There's an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone.

-- Bjarne Stroustrup

The greatest obstacle to discovery is not ignorance, but the illusion of knowledge.

-- Daniel Boorstin

A complex system that works is invariably found to have evolved from a simple system that works.

-- John Gall

Simplicity is the peak of civilization.

-- Jessie Sampter

The ability to simplify means to eliminate the unnecessary so that the necessary may speak.

-- Hans Hofmann

The art of simplicity is a puzzle of complexity.

-- Doug Horton

The wisest keeps something of the vision of a child. Though he may understand a thousand things that a child could not understand, he is always a beginner, close to the original meaning of life.

-- John Macy

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.

-- C.A.R. Hoare

Reality is that which, when you stop believing in it, doesn't go away.

-- Philip K. Dick

Furious activity is no substitute for understanding.

-- H. H. Williams

Testing by itself does not improve software quality. Test results are an indicator of quality, but in and of themselves, they don't improve it. Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software development techniques you use determine how many errors testing will find. If you want to lose weight, don't buy a new scale; change your diet. If you want to improve your software, don't test more; develop better.

-- Steve McConnell, "Code Complete"

The trouble with the world is that the stupid are cocksure and the intelligent are full of doubt.

-- Bertrand Russell

An organisation that treats its programmers as morons will soon have programmers that are willing and able to act like morons only.

-- Bjarne Stroustrup

The most important single aspect of software development is to be clear about what you are trying to build.

-- Bjarne Stroustrup

Ugly programs are like ugly suspension bridges: they're much more liable to collapse than pretty ones, because the way humans (especially engineer-humans) perceive beauty is intimately related to our ability to process and understand complexity. A language that makes it hard to write elegant code makes it hard to write good code.

-- Eric S. Raymond

Simplicity is prerequisite for reliability.

-- Edsger W.Dijkstra

A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.

-- Douglas Adams

If our designs are failing due to the constant rain of changing requirements, it is our designs that are at fault. We must somehow find a way to make our designs resilient to such changes and protect them from rotting.

-- Robert C. Martin

If you cannot grok the overall structure of a program while taking a shower, you are not ready to code it.

-- Richard Pattis

When I am working on a problem, I never think about beauty. I think only of how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong.

-- R. Buckminster Fuller

How good the design is doesn't matter near as much as whether the design is getting better or worse. If it is getting better, day by day, I can live with it forever. If it is getting worse, I will die.

-- Kent Beck

Nothing resolves design issues like an implementation.

-- J. D. Horton

By the time [the Leaning Tower of Pisa] was ten percent built, everyone knew it would be a total disaster. But the investment was so big they felt compelled to go on. Since its completion, it cost a fortune to maintain and is still in danger of collapsing. There are no plans to replace it, since it was never needed in the first place. I expect every installation has its own pet software which is analogous to the above.

-- Ken Iverson

The problem with Wikipedia is that it only works in practice. In theory, it's a total disaster.

-- Gareth Owen

In theory, there is no difference between theory and practice. But, in practice, there is.

-- Jan L. A. van de Snepscheut

Many of the above quotations are from Glenn Vanderburg's Quotations on Simplicity in Software Design page.