Nominology is my neologism for the study of naming things. I’m that good at it!
Or at least I think I know good names when I see them.  To some extent this is obvious. Ideally you want a name that’s unique, evocative, and not unwieldy. But I’d like to break those desiderata down and suggest ways to make trade-offs when you can’t have them all.
If you’re the kind of nerd who’s still reading at this point, you may, rightly, be questioning my coinage of “nominology”. The word “nomenclature” is almost there, but not quite. “Nomenclature” has several meanings, including simply a name or designation, a system of naming, or a set of names. It can also refer to the act of naming. But none of the meanings refer directly to the consideration of the criteria for what makes good names. Also, with “nomenclature” it’s harder to form derivatives like “nominologist” or even “nominologize”. I take this stuff way too seriously.
Here, then, are what I consider the key nominological criteria for projects, groups, startups, and other entities. I’m even crazy enough to think this all applies to important variable and function names in source code. 
|EVOC||Evocativity||Conveys at least a hint of what it’s naming|
|BREV||Brevity||Shorter = better|
|GREP||Greppability||Not a substring of common words|
|GOOG||Googlability||Reasonably unique (and domain name available)|
|PRON||Pronounceability||You can read it out loud when you see it|
|SPEL||Spellability||You know how it’s spelled when you hear it|
|VERB||Verbability||The name (or variant thereof) can be used as a verb|
We could also throw in Mellifluidity (to use another over-the-top coinage). It’s true that some names just sound nicer than others and that this can trump other considerations, but it’s rather subjective. Let’s consider, then, the seven somewhat objective desiderata in more detail.
Ideally the name conveys exactly what it’s naming. That ideal is probably incompatible with the rest of the criteria, so, failing that, is the name at least somehow evocative of what it’s naming?
Though desirable, evocativity is surprisingly unimportant. A name that satisfies enough of the other desiderata (and names something cool) will become evocative over time. Examples are Google and Yahoo, or for that matter, Porsche and Ferrari.
You get a tinge of evocativity by being an acronym. Just make sure it’s pronounceable. Usually better than a straight up acronym is a portmanteau, like Microsoft (“microcomputer software”, which was probably more obvious in the 70s) or Groupon (“group coupon”).
The shorter the better! Messy Matters fares poorly here.
Mechanical Turk is an example of sacrificing brevity but making up for it in the other criteria.
If you’ve sacrificed greppability you’ve probably got something impressively short, but it’s probably not worth it. Consider the Arc programming language:
There seem to be a lot of programming languages that fail this test, like Go, and, worst of all, C.
Ning , on the other hand, probably made the right call in sacrificing greppability.
Greppability and Googlability have a lot of overlap but you can have one without the other. Like ‘Ning’ , the name ‘Tion’ would be googlable but not greppable, due to all the English words that end in ‘tion’. Conversely, names like ‘Amazon’ are greppable in most contexts but (before Amazon the company took over the world) not so googlable, due to the river and rainforest.
Of course, it’s not so hard to disambiguate a google query (say, by adding “books”) but a lack of uniqueness will make life difficult in various ways, such as getting monikers like facebook or twitter handles.
If there’s no way to pronounce a name other than to rattle off the letters in an acronym, I’d call that a dealbreaker. Taking that minimum bar — no alphabet soup acronyms! — as a given, doing well on the pronounceability criterion means that you can tell how to pronounce it when you see it.
Of course, even that so-called minimum bar can be ignored if you’re sufficiently awesome.
This is less important than pronounceability but ideally anyone who hears the name immediately knows how to spell it. Violating this is less of a problem than you’d think. People seem sufficiently used to alternate spellings. And mostly the name won’t be conveyed by literal word-of-mouth. You see the weird spelling and it kind of sticks. Examples abound: google vs googol, youtube vs utube, digg vs dig, reddit vs readit/redit, stickk vs stick, wii vs wee (or we or oui).
Besides, it’s often worth the hit to spellability to fare better on greppability and googlability. Or even the incremental bump on brevity (looking at you, vowel-droppers).
Here’s StickK nailing every other criterion (the extra K even lends slightly more evocativity — K is the legal abbreviation for contract) by sacrificing spellability:
Not only should you be able to pronounce it but you should be able to easily verb it.  Like google and xerox. (The actual name need not be the verb; e.g., twitter/tweeting, beeminder/beeminding.) You can often achieve verbability just by being sufficiently short and pronounceable.
This is arguably the least important criterion for naming something, unless that thing is a startup.
Here’s Wikipedia — an otherwise excellent name — sacrificing verbability but doing very well on the other desiderata, assuming we take ‘wiki’ to be a household term, which it may not have quite been when Wikipedia debuted.
In conclusion, I should probably point out that none of this really matters. You may have gleaned that from all the examples of smashingly successful names that ignore any number of these desiderata!
- “Startup Names” by Paul Graham
- The agonies of picking a product name (the story of naming trello.com)
- Five reasons domains are getting less important
- What I call nominology, Dave Pennock calls thingnaming
- Naming your startup: settle down, it’s cool!
- Another article by A Smart Bear with the take-home message that being memorable is more important than what people remember
- Yet another reasonable list of guidelines from Mashable which also suggests that you can achieve memorability even without evocativity by rhyming or alliterating (Hotspot, Hulu, Firefox, BlackBerry)
- 17 mutable suggestions for naming a startup has great advice and may be a superset of mine
- Some funny trends in tech names, though it’s from 2008 and is dated already
- Six naming myths to ignore
- How 16 great companies picked their unique names (but see the bottom of this page for the real story of Yahoo’s naming, which probably means the rest should be taken with a grain of salt as well)
- A Hacker News Comment Thread with some nice tips and anecdotes from famous hackers like the founder of Reddit (and here are some especially good tips and examples from another Hacker News thread)
Handy tools for finding domain names
- Domai.nr is ridiculously slick
- InstantDomainSearch is great too but I hate its name!
- Impossibility.org tries to find available domain names that are evocative by adding prefixes or suffixes to words you specify
- Bust a Name is similar but combines multiple words you specify
- DomainGroovy is a website name generator that also has a very nice collection of other resources you can use for finding a domain
- Yould is a clever tool that uses Markov chains to generate pronouncable random names
Bonus Puzzle: Three-for-One New Yorker Special!
What is the number of shortest paths between two arbitrary intersections in (idealized) Manhattan?
Prove that there are two New Yorkers with the exact same number of hairs on their heads. (Do not assume that there are at least two bald people.)
Pat has a boyfriend in Brooklyn and a boyfriend in the Bronx. She likes them equally well so when she wants to see one of them, she takes whichever train (uptown or downtown) arrives first. There are the same number of uptown and downtown trains, and both arrive like clockwork, each following 10 minutes on the heels of the previous one. Pat shows up at the subway stop at entirely random times. Yet she finds that she ends up going to Brooklyn fully 90% of the time. How could that happen?
 Often when we notice we’re talking out loud about some aspect of our code like “a graph where it’s good to be above the yellow brick road as opposed to below it” or “graphs for which we auto-sum the datapoints and plot the cumulative total” I’ll announce: Stand back! I’m a nominologist! And then I’ll come up with some term like “a graph with positive yaw” or “a kyoom graph” which sound ridiculous but — not to get too whorfian about it — the accumulation of such terminological refactoring can have a surprising impact on direction of development. At the risk of betraying various borderline-OCD tendencies: If it’s something fundamental and widespread in your codebase, give it a highly terse yet pronounceable neologism that you can use in conversation with other developers. Do not use underscore_separated or camelCasedPhrases!
 I had always thought that being a substring of common words was part of the point of Ning. It’s a platform for making community-specific social networks so you might create “run.ning.com”. They seem to not have had that in mind at all though, according to their blog.
 “Verbing weirds language.” — Calvin, from Calvin and Hobbes.