Two software design methods

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.

-- Sir "Tony" C.A.R. Hoare - ACM Turing Award Lecture, 1980