Software is under a constant tension. Being symbolic it is arbitrarily perfectible; but also it is arbitrarily changeable.
It is easier to change the specification to fit the program than vice versa.
Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
In English every word can be verbed. Would that it were so in our programming languages.
In seeking the unattainable, simplicity only gets in the way.