Elegance is not optional

Elegance is not optional (1)

What do I mean by this? I mean that in Prolog, as in most halfway decent programming languages, there is no tension between writing a beautiful program and writing an efficient program. If your Prolog code is ugly, the chances are that you either don't understand your problem or you don't understand your programming language, and in neither case does your code stand much chance of being efficient. In order to ensure that your program is efficient, you need to know what it is doing, and if your code is ugly, you will find it hard to analyse.

Elegance is not optional (2)

What do I mean by that? I mean that there is no program so trivial that it will not one day need maintaining. A clear straightforward program is going to be easier to maintain than an ugly one.

-- Richard O'Keefe, The Craft of Prolog

I agree violently with this (though I've never written anything in Prolog). I think few people writing code really work on calibrating their sense of "good enough". Too far in one direction, and you rewrite things endlessly and never ship. Too far in the other, and you ignore architectural debt until you realize one day that your code has become a big ball of mud.