“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 (verified)
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 (verified)
“The price of reliability is the pursuit of the utmost simplicity.”
— Tony Hoare (verified)“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 (verified)“I was eventually persuaded of the need to design programming notations so as to maximize the number of errors which cannot be made, or if made, can be reliably detected at compile time.”
— Tony Hoare (verified)“In all spheres of human intellectual and practical activity, from carpentry to golf, from sculpture to space travel, the true craftsman is the one who thoroughly understands his tools.”
— Tony Hoare (verified)“All successful men have agreed in one thing—they were causationists.”
— Ralph Waldo Emerson (verified)“The price of reliability is the pursuit of the utmost simplicity.”
— Tony Hoare (verified)“The only rational way of educating is to be an example—if one can’t help it, a warning example.”
— Albert Einstein (verified)“Above all, I did not allow anything to be done which I did not myself understand. It worked!”
— Tony Hoare (verified)