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
“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 price of reliability is the pursuit of the utmost simplicity.”
— Tony Hoare Primary source“In all branches of commerce and industry, history shows dramatic reduction in the error rates when their cost is brought back from the customer to the perpetrator.”
— Tony Hoare Primary source“I call it my billion-dollar mistake. It was the invention of the null reference in 1965.”
— Tony Hoare Primary source“The price of reliability is the pursuit of the utmost simplicity.”
— Tony Hoare Primary source“If you look out far enough the computer will eventually learn to reason in somewhat the same way that humans do, so called "artificial intelligence". If you take that far enough you can imagine an evolution, essentially, moving over to silicon-based life and carbon-based life, playing a much more limited role than it does today.”
— Bill Gates Primary source“The only rational way of educating is to be an example—if one can’t help it, a warning example.”
— Albert Einstein Primary source“The test of all knowledge is experiment. Experiment is the sole judge of scientific truth.”
— Richard Feynman Primary sourceSimplicity Computer Programming Software Design Robustness