views:

381

answers:

9

Each time I create a new project/application I spend a lot of time thinking of a nice name for it. For example, I'm currently creating some program that imports some XML files, and I already spent more time thinking about the name than programming it.

How do you do it?

+3  A: 

Create a code name that has nothing to do with anything, then you will never have to change large amounts of code, and you can change the publicly visible parts easily (such as the executable file name).

That way you can think about it while you work on the actual product, and you can always continue to use its codename in code.

Brian R. Bondy
+1  A: 

I use names of celestial bodies: Mars, Jupiter, Titan, etc. There are some moons that have really cool names, but you can go outside solar system as well.

codeguru
+3  A: 

If you do not intend to publicly distribute your project and expect it to be so widely used and famous that a cute name matters, just give it a functional name.

For example, if you are writing some small program and name it after a stuffed animal - Might be too much work, and people will have a hard time finding it by creative googling.

If you are writing something that becomes the de-facto standard map/reduce framework for Java, and you named it after your kid's stuffed animal - it's super cute and great and may have been worth the effort.

It is also very important to make sure you know what your program will do when you pick a name. For example, my Ph.D. project was a tool centered around "episodic memory" - creating a detailed log of everything that you've done. It was also meant for open-source communities to use. Hence, in keeping with the academic tradition of animal names, I used "Episodic Memory of Open Source Efforts" or simply eMoose.

Fast forward two years later, I had several papers a lot of recognition on what initially seemed like a side function, of highlighting calls whose targets have important associated information. To make the tool lightweight and easy to distribute, I actually cut all the episodic stuff from the standard distribution. I now have a tool with a cute name that has nothing to do with its function :)

Uri
+10  A: 

This conversation always reminds me of the following quote

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

JaredPar
It's a good quote, but actually doesn't answer the question.
Seb
The quote is attributed to Phil Karlton, in case anyone is curious and doesn't want to bother googling. =)
leander
+8  A: 

Briefly describe the project to your wife/girlfriend/significant other and chances are you'll have a clever, sarcastic name for your project in no time. :-)

Rahul
+2  A: 

My dad once told me never to trust parents who give their babies funny names.

I give my programs and libraries simple, honest names, that would make nobody smile, nor show off my cleverness or mastery of classical allusion. I suggest for your purposes "XmlImporter", or maybe "xml_importer", with perhaps another word or two in there indicating what sort of thing it imports and so on.

Such names don't take long to think up, can be made as specific or general as you please, and rarely need changing. When you revisit your project in 5 years' time, you won't be left searching through your tools and libs folders trying to remember what your younger self called this or that; the names are there, plain as day.

And, amusingly, you are highly unlikely ever to have a conflict with anything else! Everybody else in the world is too busy trying to use up the classical pantheons and names of astronomical bodies and states of the USA and what have you. Anything boringly prosaic is basically guaranteed to be unique in virtually all realistic situations.

(If people then kick sand in your face over your boring old "LocalizationSpreadsheetConverter" tool, or your "CollisionDataCreator" thing (like, how dull), you can always rename the EXE and change a few strings, et voila: CLAWHAMMER. Or MinoTAUR. Or Fist of ZEUS 3000 Plus Gold Pro edition (director's cut). Whatever.)

brone
I guess you're right. After all, Microsoft made it big time with SQL Server.
Milan Babuškov
...and I *hate* them for it. It causes far too much confusion over whether someone means a server which handles SQL or the specific MS product which does so. (Which, I'm sure, is exactly why MS chose that name.)
Dave Sherohman
+2  A: 

Often I use one of my initials as the first letter and the generic name for the rest like:

  • Jlog (weblog software)
  • Pavatar (Personal Avatar (or even better Paradies Avatar ;))

Or I use The generic name and let it sound a little bit cuter like:

  • Twittia (a Twitter client)

Or I use the generic name if there are no other apps with it like:

  • WeekNumber (a Dashboard widget which displays the week number)

Or I use a synonym to the generic name like:

  • Frugal (a clean Colloquy style)
Jeena
+2  A: 

At work we use code names that are puns or obscure references. This also helps us avoid inadvertently spilling details about unannounced projects. Occasionally we have to limit this a bit to avoid getting in trouble with a client or publisher, of course. =) Since we generally don't actually have control over the final product name (the people with the money do that), it's a nice way to put a personal touch on things to have a codename.

One piece of advice, though, based on experience: don't use cheeses, at least not for tools you use every day.

For a while we codenamed all of our internal tools after various types of cheese. Since there isn't a lot of descriptive quality to "gouda" and "muenster" that might remind you what the tool does, even indirectly, it was tough on new hires -- and half of the veterans forgot which was which. We've since moved to simple descriptive names for tools in most cases (a la "LevelEdit") or some slightly more creative ones (like "Paste", our GUI layout tool).

Clever and memorable are good criteria.

leander
+1  A: 

The first thing I usually do is hit a thesaurus and enter words that relate to the program's function. This gives me a good set of words I can use that still relate to the functionality. I then take these words and start combining them with other related words or phrases.

Good examples of this combination format are:

  • Travelocity
  • TransActive
  • MotoScope

etc.

Soviut