13th October 2009
I’ve been working on a software project recently, and I got to the point which every software developer dreads: naming. Although naming isn’t the most important feature of a piece of software, it’s good to come up with a name that at least works pretty well. This particular Dilbert cartoon comes to mind:

As Jeff Atwood noted on Episode #37 of the Stack Overflow podcast:
Naming is super hard; whether you’re naming code, you’re naming human beings, naming is just really difficult.
And he’s right. Finding the “right” name or a name that works for software is really hard. When I started to think about naming (which I had deferred for as long as possible) I looked for a few tips on what makes a good name – of course I have some ideas of my own, but I wanted to see what others had to say on the topic. Although quick Googling yields a fair few results I wasn’t too happy with the results I saw, most of which seem to resemble something similar to SEO patter.
So I started thinking: what makes a good name for software, and how do you go about finding it? My first thought was to go for a bit of brainstorming – ideally, I would have scribbled my thoughts on a wall covered in IdeaPaint but at $200 per 50 sq. ft. I decided to go for the old-skool whiteboard. I think that brainstorming is perhaps one of the greatest ways to come up with an idea – even if most of the diagram amounts to no immediate result, it’s a great way to get your ideas down. Then you decide to take a break and come back later, your ideas will still be there, and you’d be able to add any fresh ones.
But what do you brainstorm? I started to think about different perspectives that would affect the name – namely:
After I’d got my ideas down I found that I could think about them, and see which bits fitted well together – was it certain words, or ideas that stood out and formed a great name? However I also had periods where I’d have no idea where to go next, and left it at that and went and did something else. Then, when I came back to it I had several new ideas which I could use to expand upon, and since I’d written my ideas down I could continue from where I’d left off.
But what makes a great name? I started to think about this too, and there are perhaps two key points that I decided:
Another point that I started exploring was metaphors; is there something in real life that is a metaphor for the core functionality of the software? If this can be drawn into the name it makes it more effective and easier for your users to remember and associate with.
An important point is that when coming up with the ideas, don’t be afraid to try things out. Write it down, see how it looks on paper; say it out loud, or ask colleagues what they think of the name. Having a list of names that you’ve come up with – perhaps added to the brainstorm, perhaps separate – even if they don’t work, can help to provide inspiration for other names. And great names don’t come quickly – I spent about a week or so thinking about it and coming up with ideas before I found a name that I thought worked pretty well. Don’t rush the process – and when you think you’re sure about a name, think about it some more; make sure it’s something you definitely like and you want to go ahead with.
Although these were my experiences with this, I’ve provided a bit of a generalisation – some projects require more of certain parts and less of others, but these are some things to think about. And naming isn’t the only thing to consider about your software – it’s pretty much a marketing feature. Create a great software product and make sure the name is something that at least works, and things should start to fall into place.