Friday, March 14, 2003


What does it mean to program for a billion users? This thought occured to me recently when meeting with some people from Nokia Research. If you work for Nokia, and you write handset software, there's a good chance that, in a couple of years, your software could be used by a billion people. A billion! Not too long ago, there weren't that many people alive.

Other than the extremely remote possibility of getting every person in China to use your software, a billion users (or "gigaware") seems to demand a couple of features:

First, you need to be able to be accessible to people who read and speak different languages (or, in fact, who are illiterate or only semi-literate). You might get away with using English, since plenty more than a billion people can speak it (although not all as their first language), but people would be more likely to use it if it was native.

Second, you need to be prepared for some pretty odd behavior. As the old joke has it, there's a thousand of those one-in-a-million folks pounding away at your app. You need serious robustness.

Third, you'll probably need to support many different interface modes. Deaf or hard-of-hearing users, blind users, users with dyslexia, users for whom an icon is a religious symbol, etc. It's a well known (but unfortunately not often acted-upon) fact in education theory that different students have different learning styles. Why can't we translate that into advice for interface designers?

Fourth, you'll need a better way to upgrade. To borrow Steve Jobs' calculation style, if each user only takes five minutes to upgrade once a year, that's well more than one hundred entire human lifetimes. And, of course, they won't all upgrade, so there will always be users of every version you ever released.

Is this just an academic thought-exercise? Perhaps we won't really have gigaware, just an increasing number of apps in the hundred-million user range. In any case, though, it seems like these are good design principles, even if you just have a few users.