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“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“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“The only rational way of educating is to be an example—if one can’t help it, a warning example.”
— Albert Einstein 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“Functionally oriented design of this kind has always been strongly influenced by technological development, and will continue to be so in the future. The Braun pocket radios that we designed at the end of the 1950s would not have been possible without the new transistor technology at the time. Transistors were not only far smaller than valves, they also required much less power. That meant that for the first time it was possible to make a radio receiver that you could literally put in your pocket.”
— Dieter Rams Primary sourceSimplicity Computer Programming Software Design Robustness