Naming things is hard

There are only two hard things in Computer Science: cache invalidation and naming things.

– Phil Karlton

The above quote, which is attributed to software developer Phil Karlton, is perhaps one of the longest-running ‘jokes’ in software development.

Naming things

For the purposes of this post I’m going to leave out cache invalidation 😅 and focus on the naming part. As a technical writer, and a UX writer, I’m often asked to help with naming things related to the products I’m working on. This could be anything from naming an API method or parameter, to coming up with a name for a new software feature or a naming pattern for Slack channels.

When it comes to attempting to give a name to something, I’m frequently drawn to this quote from Lewis Carroll’s novel Through the Looking-Glass.

“When I use a word,’ Humpty Dumpty said in rather a scornful tone, ‘it means just what I choose it to mean — neither more nor less.’

’The question is,’ said Alice, ‘whether you can make words mean so many different things.’

’The question is,’ said Humpty Dumpty, ‘which is to be master — that’s all.”

I think it’s important to understand the concept behind the name before coming up with the actual name. That’s to say, names are defined by the meaning behind them and not the other way round.

It’s tempting to come up with some funny, or grandiloquent name that perhaps doesn’t have much relation to the word’s meaning. In the world of software, releases are often named using arbitrary naming patterns. Apple, for example used to use big cat names for their Mac operating system releases, before changing to names of locations in California. Coming up with funny or random names based on a concept is perhaps not that hard then. However, my feeling is that it’s much more difficult is to come up with a ‘good’ name, one that’s clear and hopefully means the same thing to people who are reading it.

My day-to-day work regarding naming things in the company I work for has led me to work on a collaborative termbase project along with some of my colleagues from other departments. It’s been really rewarding so far although not without challenges, not least because names can be so subjective.

One of the things I’ve found really useful is getting together stakeholders to write down the definition of a name or term before making a decision on the actual word that we’ll eventually use. Other collaborative methods might involve opening issues in GitHub to discuss a name or term before attempting to come to a consensus. This is a practice that appears to be fairly widespread in the open source world. For example this issue in the IETF HTTPAPI Working Group or this discussion about the correct way to write the term Jamstack.

Naming is hugely related to the world of terminology, which is perhaps a post for another day. Nevertheless, it’s worthwhile pointing out that having a good system for naming things is important. Maintaining good practices for naming and terminology in general can repercute well in many aspects of an organisation. Correct management of terminology can:

  • Improve customer experience
  • Provide better translation processes and results
  • Drive down costs and save time (everyone is on the same page)
  • Reinforce brand voice

Here are some great resources which I’ve found have helped me with naming things: