Most of us* believe that simplicity is the key to design. I’m a sucker for the best quotes about it. Here are some of my favorites. First, Tony Hoare in his Turing Award lecture lamenting the complexity of Algol-68:
I conclude that 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.
and on PL-1:
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.
Not just reliability—usability too. Here’s Edsger Dijsktra in a similar vein:
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.
But perhaps best of all, and most relevant to software design, is the principle known as Gall’s Law:
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.
(I learned about Gall’s Law from Gordon Brander’s pattern collection.)
Gall’s formulation is particularly good because it doesn’t deny that complexity is inevitable in all real systems. It just reminds us that having a complicated problem is no excuse for designing a complicated solution.
*Well, not all. I once visited Charles Simonyi at Microsoft and asked him, rather cheekily, if the length of the Windows manuals on his shelf, which extended all the way from one side to another, might be a symptom of a design that wasn’t simple enough. His response? “Simplicity is crap.”