Jon Aquino's Mental Garden

Engineering beautiful software jon aquino labs | personal blog

Saturday, September 29, 2007

Simplicity and Difficulty are Orthogonal

Simplicity is beautiful. But simplicity is orthogonal to difficulty. Easy things are often simple, and hard things are often complicated. But making a hard thing simple takes skill. It also carries a risk: because it looks simple, it may seem easy to modify or work with, when in fact it is hard, fraught with dangers. An example would be a terse equation from higher mathematics, such as

Fli260

from Einstein's explanation of covariant tensors. Beautifully simple but formidable to comprehend. Or Haskell code:

Fli25B

defining Fibonacci numbers as an infinite lazy list. Again, elegantly simple but hard to understand for the uninitiated.

Nevertheless, this is far better than the alternative, which is complicatedness. As C.A.R. Hoare remarked, "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."

14 Comments:

Post a Comment

<< Home