> In my opinion, code is nicest when it is written communication. When it is almost the same as teaching someone about a problem domain.
In a way, code is "teaching" the computer how to do some specific task in some specific problem domain. Fortunately, we know how to do that; it's what we do all day. It's just that the computer is a very dumb pupil, so it needs everything explained to it in detail. OK, no problem, so we explain in detail. We know how to do that too; that's still what we do all day.
The next thing is, the computer is very literal-minded, has an excellent memory, and no imagination or sense of "the whole picture". It has absolutely no problem with us calling everything "i, j, k..." and "x, y, z..." But people do; in that sense we're pretty much the opposite of the computer. If only we could remember to call everything something more precise than "i, j, k..." and "x, y, z," the same "explanation" -- our code -- would be much more comprehensible to humans, too, and work as communication not just with the computer but with other people, including ourselves at some later time. (Albeit a rather tedious and detailed explanation, since most humans aren't as dumb as the computer.)
That's (probably, IMO, at least in large part) why "Naming things is the most important problem in computing".