Tuesday, August 31, 2004

Software Simplicity

I was (re)-reading Tony Hoare's and Nicklaus Wirth's Turing award lectures, and it is remarkable how pertinent their call for software simplicity still is .

Two comments by Hoare stand out -

1) For a tool to be useful, the time it takes to learn the tool must be
significantly shorter than the relative time savings the tool provides.

2) The primary cost of any software feature is not the cost of
building the feature - the primary cost is in the complexity added
to the end-product. It adds another aspect that the end-user must
learn about.

Money (resources, programmers) can buy features and functionality, and shorten deadlines, but cannot buy simplicity. In fact, it is probably true that money adds complexity.
Complexity results in :
1) Unreliablity (no obvious errors != obviously, no errors)
2) Poor usability
This is not to say that complex software cannot be successful in the marketplace. Reliability and usability are important, but not necessary requirements for market success.

Just like one may say - the emperor has no clothes - to mean that
a product doesnt perform as advertised, one might also say - the clothes
have no emperor - meaning, that a feature-laden product does not
provide value.