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

Karlton’s quote isn’t just for techies. Interface designers are in the business of naming things too. We’re copywriters. It matters if we call something an Event or a Milestone or a Deadline. And it also goes deeper than that. The names we choose shape our software. They define the way we think about it and the way our customers interact with it. To understand why this all matters, you should meet two important ideas from the programming world: domains and domain languages.

When you’re working on software, the domain is the life situation your software is involved with. Basecamp’s domain is the life situation where people are trying to collaborate together on a project. iPhoto’s domain is that situation where someone has a collection of photos and they want to look at those photos and share the photos with others.

Now here’s where it gets interesting. Each application has a way of approaching its domain. Software designers think of a domain like a big cake and cut it into slices. Basecamp cuts project management into Messages, Files, Milestones, To-Dos. Photo organizers before iPhoto ‘08 always sliced their domain into Photos and Albums. In both cases, the software designers take a complicated life situation and boil it down to a few easy pieces with names. No domain comes pre-sliced—unless you’re blindly copying someone else’s software. It’s up to the designer to cut the pieces and give them names.

This process results in a domain language. A domain language is the set of words that reflect the way you cut up a domain. It consists of the pieces you sliced and the names you chose to give them. This language defines an application and makes it special. And for the last couple years Apple has been innovating iPhoto’s domain language very intentionally.

Before iLife ‘08, iPhoto’s domain language was the same as any other photo app. You had Photos and you had Albums. Then in iLife ‘08 something changed. Suddenly you also had Events in the mix. This is huge. Apple realized that people don’t just want to find photos. Go back to iPhoto’s domain: it’s that situation where you have a bunch of photos and you want to look at them and share them. When you’re in that situation, you don’t just want to see random photos. You want to see and share photos of certain things. Like photos of your wedding, photos of your trip to Maine, or photos of that dinner in Paris. These are Events. They’re part of the domain, and since 2008 they have been expressed in iPhoto’s domain language.

Now iPhoto ‘09 has kicked their language up a notch further. In addition to Events there are also Faces and Places. Apple has made a few new slices into the photo organization cake, and they’ve opened up a new field of possibilities for people to find and enjoy their photos.

Keep this in mind the next time you’re designing an app or a feature. There is a strong tendency to use the same words that you see other software using. Be cautious about copying domain language, because copying language is copying a whole approach. Think through the domain yourself. What are people trying to do? What do they care about? Find your own language to cut closer to the bone and touch your customers’ real interests. Your software will be all the better for it.