3 min read

Naming is the hardest problem

On condensing identity.
Naming is the hardest problem

There’s a common saying that naming is the hardest problem in computer science. Based on my experience this is pretty true. But it’s a hard problem for more than just software. Other fields like marketing and design need to name things too. It’s not much easier there.

The power of names.

I’m a pretty big fantasy reader. There this common theme where names have power. Knowing someones true name may give you control over them or remove their power over you. Knowing a true name of an element or natural force gives you the ability to command it.

These concepts are ancient. The concept that names can have magical or spiritual power dates back thousands of years. And there’s no coincidence here.

Names do have power. When you name a product, a feature, a concept, you shape its identity. Until you produce a name, the thing remains formless, almost ephemeral.

This is probably why people use meaningless code names like “Fudge Sundae” for products and versions. They can decide what the thing will be as they build it. But then, it also foregoes the power of the name for aligning understanding.

I personally struggle to work on an unnamed project. I need that clear reference and guidepost that comes from the name. It can change later if the project evolves, just like a Pokemon. No one wants Unnamed Tiny Sea Dragon. You want Dratini even if it eventually becomes Dragonite.

What’s in a name?

Naming as a skill sits behind the ability to articulate a concept clearly. In this sense, articulation is the ability to express a clear definition and then naming is the ability to condense it.

You can’t condense unless you know what you’re condensing.

To do this well we have to consider the purpose of and audience for the name. Names can be either a clear label or generative. A great name may be both.

Let’s consider the ability to collect things. We could call it

  • Like
  • Favorite
  • Save
  • Pin

and other names too.

“Like” and “Favorite” suggest they may also give feedback. “Like” is more feedback than save. “Favorite” is more feedback plus save. “Save” has connotations that it’s more private or even becomes local. “Pin” has connotations that it’s more public, shared, or involves some placement.

Different domains have different requirements for names. Marketing is going to lean more towards generative, evocative names. Software is going to lean more towards clear labels. But then there’s middle ground like product development. Products need to be clear and evocative which makes naming very hard.

This same nuance that shows up in saving features shows up in all the concepts in a product and the interaction between them can become eye-watering. I’ve seen systems that have several different saving concepts and now your users and your team need to know the difference.

Crafting names.

There’s a lot that can be said about creating names. Whole books have been written on it. It’s incredibly nuanced and contextual.

When a name is hard to find people often jump to just listing words or phrases. What ends up happening is it stalls out and a placeholder or subpar name will get chosen.

My advice here is to step back and find a definition before trying to find a name. Again, you need something to distill. But then, the best name may not be a direct distillation. It could be something that evokes the definition or a feeling we’re trying to create. You need to know what you want the name to do.

Finding a good name requires finding a word or short phrase that is accurate and distinctive. It has to be a clear reference without accidentally becoming confused with something else. It needs to achieve the goal for it’s audience. It’s a commitment and bet on an unclear future.

All of these needs to happen at the same time. This is why naming is the hardest problem.