“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.”
Tony Hoare
Tony Hoare’s insightful observation is that simplicity rather than complexity leads to reliable software.
This is because fewer parts mean fewer places where defects can occur and fewer interactions that can lead to unexpected issues.
Additionally, a simple design makes it more likely that the designer can have a complete mental model of the solution in the head, making it easier to reason about the design and spot potential weaknesses.
His second, often counterintuitive, insight is that it is more difficult to construct a simple solution than a complex one. The reason is that devising a simple solution requires a deep and precise understanding of the problem domain. Simplicity is the final aim of mastery, not its starting point.
The Emperor’s Old Clothes (Primary source)
Tony Hoare’s brilliant Turing Award lecture where he reflects on software design and the importance of simplicity and elegance in programming.
More about “The Emperor’s Old Clothes” →
“I gave desperate warning against the obscurity, the complexity, and overambition of the new design, but my warnings went unheeded. I concluded 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.
The first method is far more difficult. It demands the same skill, devotion, insight, and even inspiration as the discovery of the simple physical laws which underlie the complex phenomena of nature. It also requires a willingness to accept objectives which are limited by physical, logical, and technological constraints, and to accept a compromise when conflicting objectives cannot be met. No committee will ever do this until it is too late.”
Tony Hoare
“The price of reliability is the pursuit of the utmost simplicity.”
— Tony Hoare Primary source“What is the central core of the subject [computer science]? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline? My answer to these questions is simple—it is the art of programming a computer.”
— Tony Hoare Primary source“The most important property of a program is whether it accomplishes the intentions of its user.”
— Tony Hoare Primary source“I realised that both verification and testing were using the same technology—assertions—on a common goal of improving software products in their speed of delivery, their quality, and their reliability.”
— Tony Hoare Primary source“All this will not be finished in the first one hundred days. Nor will it be finished in the first one thousand days, nor in the life of this Administration, nor even perhaps in our lifetime on this planet. But let us begin.”
— John F. Kennedy Primary source“Men follow their sentiments and their self-interest, but it pleases them to imagine that they follow reason. And so they look for, and always find, some theory which, a posteriori, makes their actions appear to be logical. If that theory could be demolished scientifically, the only result would be that another theory would be substituted for the first one, and for the same purpose.”
— Vilfredo Pareto Primary source“It was the mistakes one made at the beginning of a case that were the worst. They were the irretrievable ones, the ones that got you off on the wrong foot, that gave the enemy the first game.”
— Ian Fleming Primary source“One good husband is worth two good wives; for the scarcer things are the more they’re valued.”
— Benjamin Franklin Primary sourceSimplicity Computer Programming Software Design Robustness