Naming Things

At work I repeatedly find myself having to explain some things that are confusingly named. And it is often repeated, and joked about, that naming things is the hardest task in software engineering.

Many stories equate naming a thing with creating it: the book of Genesis begins with God creating day and night by naming them. And writing software is all about naming things, over an over again:

We name references to values, then name the functions that operate on those values. We collect those functions, and name the collection, and name collections and collections. We name whole programs with the intent of giving hints to their purpose, with the Kafka being a good example of such case, when Jay Kreps hoped to bestow some of the famous author's polific qualities on the software that was named after him.

Yet I haven't found many programming texts that discuss naming throughly. The only one I can think of top of my head is the first chapter of Zach Tellman's Elements of Clojure.

A problem less often discussed than naming, is that just as it is hard to find a good name, it is also not an easy task to change a less fitting name that is already in use. Here I can use the Latin spelling of my own name as an example: a clerical error years ago made it transcribed as “Shay”, instead of “Shy” or “Shai”, which would have better matched the correct pronounciation. And when I inquired about changing the spelling in various documents, I found it would be a garganutan effort involving legal proceedings in at least two countries, and thus didn't bother.

This website is hosted on GitHub pages, which collects some data about visitors.