Font smoothing, anti-aliasing, and sub-pixel rendering

Apple and Microsoft have always disagreed in how to display fonts on computer displays. Today, both companies are using sub-pixel rendering to coax sharper-looking fonts out of typical low resolution screens. Where they differ is in philosophy.

  • Apple generally believes that the goal of the algorithm should be to preserve the design of the typeface as much as possible, even at the cost of a little bit of blurriness.
  • Microsoft generally believes that the shape of each letter should be hammered into pixel boundaries to prevent blur and improve readability, even at the cost of not being true to the typeface.

Now that Safari for Windows is available, which goes to great trouble to use Apple’s rendering algorithms, you can actually compare the philosophies side-by-side on the very same monitor and see what I mean. I think you’ll notice the difference. Apple’s fonts are indeed fuzzy, with blurry edges, but at small font sizes, there seems to be much more variation between different font families, because their rendering is truer to what the font would look like if it were printed at high resolution.

(Note: To see the following illustration correctly, you need to have an LCD monitor with pixels arranged in R,G,B order, like mine. Otherwise it’s going to look different and wrong.)

The difference originates from Apple’s legacy in desktop publishing and graphic design. The nice thing about the Apple algorithm is that you can lay out a page of text for print, and on screen, you get a nice approximation of the finished product. This is especially significant when you consider how dark a block of text looks. Microsoft’s mechanism of hammering fonts into pixels means that they don’t really mind using thinner lines to eliminate blurry edges, even though this makes the entire paragraph lighter than it would be in print.

The advantage of Microsoft’s method is that it works better for on-screen reading. Microsoft pragmatically decided that the design of the typeface is not so holy, and that sharp on-screen text that’s comfortable to read is more important than the typeface designer’s idea of how light or dark an entire block of text should feel. Indeed Microsoft actually designed font faces for on-screen reading, like Georgia and Verdana, around the pixel boundaries; these are beautiful on screen but don’t have much character in print.

Typically, Apple chose the stylish route, putting art above practicality, because Steve Jobs has taste, while Microsoft chose the comfortable route, the measurably pragmatic way of doing things that completely lacks in panache. To put it another way, if Apple was Target, Microsoft would be Wal-Mart.

Now, on to the question of what people prefer. Jeff Atwood’s post from yesterday comparing the two font technologies side-by-side generated rather predictable heat: Apple users liked Apple’s system, while Windows users liked Microsoft’s system. This is not just standard fanboyism; it reflects the fact that when you ask people to choose a style or design that they prefer, unless they are trained, they will generally choose the one that looks most familiar. In most matters of taste, when you do preference surveys, you’ll find that most people don’t really know what to choose, and will opt for the one that seems most familiar. This goes for anything from silverware (people pick out the patterns that match the silverware they had growing up) to typefaces to graphic design: unless people are trained to know what to look for, they’re going to pick the one that is most familiar.

Which is why Apple engineers probably feel like they’re doing a huge service to the Windows community, bringing their “superior” font rendering technology to the heathens, and it explains why Windows users are generally going to think that Safari’s font rendering is blurry and strange and they don’t know why, they just don’t like it. Actually they’re thinking… “Whoa! That’s different. I don’t like different. Why don’t I like these fonts? Oh, when I look closer, they look blurry. That must be why.

 

The Big Picture

A review of Dreaming in Code, by Scott Rosenberg.

Eyes work using a page fault mechanism. They’re so good at it that you don’t even notice.

You can only see at a high-resolution in a fairly small area, and even that has a big fat blind spot right exactly in the middle, but you still walk around thinking you have a ultra-high resolution panoramic view of everything. Why? Because your eyes move really fast, and, under ordinary circumstances, they are happy to jump instantly to wherever you need them to jump to. And your mind provides this really complete abstraction, providing you with the illusion of complete vision when all you really have is a very small area of high res vision, a large area of extremely low-res vision, and the ability to page-fault-in anything you want to see—so quickly that you walk around all day thinking you have the whole picture projected internally in a little theatre in your brain.

This is really, really useful, and lots of other things work this way, too. Your ears are good at tuning in important parts of conversations. Your fingers reach around and touch anything they need to, whether it’s a fine merino wool sweater or the inside of your nose, giving you a full picture of what everything feels like. When you dream, your mind asks all kinds of questions that it’s used to asking the senses (what’s that? Look over there!) but your senses are temporarily turned off (you are, after all, asleep), so they get back sort-of random answers, which you combine into a funny story in your brain called a dream. And then when you try to recount the dream to your boyfriend in the morning, even though it seemed totally, completely realistic, you suddenly realize that you don’t know what happened, actually, so you have to make shit up. If you had stayed asleep for another minute or two your brain would have asked your senses what kind of mammal was swimming with you in the rose bush, and gotten back some retarded, random answer (a platypus!), but you woke up, so until you tried to tell the story, you didn’t even realize that you needed to know what was in the rose bushes with you to make the story coherent to your partner. Which it never is. So please don’t tell me about your dreams.

One of the unfortunate side effects is that your mind gets into a bad habit of overestimating how clearly it understands things. It always thinks it has The Big Picture even when it doesn’t.

This is a particularly dangerous trap when it comes to software development. You get some big picture idea in your head for what you want to do, and it all seems so crystal clear that it doesn’t even seem like you need to design anything. You can just dive in and start implementing your vision.

Say, for example, that your vision is to rebuild an old DOS personal information manager, which was really really great but totally unappreciated. It seems easy. Everything about how the whole thing works seems so obvious, you don’t even try to design the thing… you just hire a bunch of programmers and start banging out code.

Now you’ve made two mistakes.

Number one, you fell for that old overconfidence trick of your mind. “Oh, yeah, we totally know how to do this! It’s all totally clear to us. No need to spec it out. Just write the code.”

Number two, you hired programmers before you designed the thing. Because the only thing harder than trying to design software is trying to design software as a team.

I can’t tell you how many times I’ve been in a meeting with even one or two other programmers, trying to figure out how something should work, and we’re just not getting anywhere. So I go off in my office and take out a piece of paper and figure it out. The very act of interacting with a second person was keeping me from concentrating enough to design the dang feature.

What kills me is the teams who get into the bad habit of holding meetings every time they need to figure out how something is going to work. Did you ever try to write poetry in a committee meeting? It’s like a bunch of fat construction guys trying to write an opera while sitting on the couch watching Baywatch. The more fat construction guys you add to the couch, the less likely you are to get opera out of it.

At least turn off the TV!

Now, it would be shockingly presumptuous of me to try to guess what happened on the Chandler team, and why it’s taken them millions of dollars and several years to get to where they are now, which is, they have a pretty buggy and incomplete calendar application that’s not very impressive compared to the 58 me-too Web 2.0 calendars that came out last year, each of which was developed by two college kids in their spare time, one of whom really mostly just drew mascots.

Chandler doesn’t even have a mascot!

Like I say, I can’t presume to know what went wrong. Maybe nothing. Maybe they feel like they’re right on track. Scott Rosenberg’s excellent new book, which was supposed to be a Soul of a New Machine for the hottest open source startup of the decade, ends up, in frustration, with Scott cutting the story short because Chandler 1.0 was just not going to happen any time soon (and presumably Rosenberg couldn’t run the risk that we wouldn’t be using books at all by the time it shipped, opting instead to absorb knowledge by taking a pill).

Still, it’s a great look at one particular type of software project: the kind that ends up spinning and spinning its wheels without really going anywhere because the vision was too grand and the details were a little short. Near as I can tell, Chandler’s original vision was pretty much just to be “revolutionary.” Well, I don’t know about you, but I can’t code “revolutionary.” I need more details to write code. Whenever the spec describes the product in terms of adjectives (“it will be extremely cool”) rather than specifics (“it will have brushed-aluminum title bars and all the icons will be reflected a little bit, as if placed on a grand piano”) you know you’re in trouble.

The only concrete design ideas, as far as I could tell from Rosenberg’s book, were “peer-to-peer,” “no silos,” and “natural language date interpretation.” This may be the a limitation of the book, but the initial design sure seemed to be extremely vague.

“Peer-to-peer” was the raison-d’être of Chandler… why should you have to buy Microsoft Exchange Server to coordinate schedules? It turned out that peer-to-peer synchronization was too hard, or something, and this feature was cut. Now there’s a server called Cosmo.

“No Silos” was supposed to mean that instead of having your email in one silo, and your calendar in another silo, and your reminder notes in a third, there would just be a single unified silo holding everything.

As soon as you start asking questions about “No Silos,” you realize it’s not going to work. Do you put your email on the calendar? Where? On the day when it arrived? So now I have 200 Viagra ads on Friday obscuring the one really important shareholder meeting?

Eventually “No Silos” got designed into this idea of stamps, so, for example, you could “stamp” any document or note or calendar item with an email stamp and suddenly that item could be mailed to anyone. Guess what? That feature has been in Microsoft Office for the last decade or so. They finally took it out in Office 2007 because nobody cared. There are too many easy ways to email people things.

Indeed, I think the idea of “No Silos” is most appealing to architecture astronauts, the people who look at subclasses and see abstract base classes, and who love to move functionality from the subclass into the base class for no good reason other than architectural aesthetics. This is usually a terrible user interface design technique. The way you make users understand your program model is with metaphors. When you make things look, feel, and most importantly, behave like things in the real world, users are more likely to figure out how to use the program, and the app will be easier to use. When you try to combine two very dramatically different real-world items (email and appointments) into the same kind of thing in the user interface, usability suffers because there’s no longer a real-world metaphor that applies.

The other cool thing that Kapor kept telling everyone who would listen is that Agenda would let you type things like “Next Tuesday” and magically you’d get an appointment for next Tuesday. This is slicker than heck, but every half-decent calendar program for the last decade has done this. Not revolutionary.

The Chandler team also overestimated how much help they would get from volunteers. Open source doesn’t quite work like that. It’s really good at implementing copycat features, because there’s a spec to work from: the implementation you’re copying. It’s really good at Itch Scratching features. I need a command line argument for EBCDIC, so I’ll add it and send in the code. But when you have an app that doesn’t do anything yet, nobody finds it itchy. They’re not using it. So you don’t get volunteers. Almost everyone on the Chandler dev team got paid.

Again I must forcefully apologize to the Chandler team if Rosenberg missed the point somehow, or if he gave a completely incorrect impression of what was really holding up progress, and my bias—to blame these kinds of debacles on a failure to design—is showing.

All that said, one good thing did come out of the project: a fascinating book in the style of Soul of a New Machine or Showstopper about a software development project that failed to converge. Highly recommended.

Elegance

Alain de Botton, writing in The Architecture of Happiness (Pantheon Books, 2006) has a section on elegance that any software designer will find familiar.

He compares the Salginatobel Bridge, in Switzerland…

  

…to the Clifton Suspension Bridge, in England:

… in one of the most amazing books about architecture I’ve ever read:

“Both Robert Maillart’s Salginatobel and Isambard Brunel’s Clifton Suspension bridges are structures of strength; both attract our veneration for carrying us safely across a fatal drop—and yet Maillart’s bridge is the more beautiful of the pair for the exceptionally nimble, apparently effortless way in which it carries out its duty. With its ponderous masonry and heavy steel chains, Brunel’s construction has something to it of a stocky middle-aged man who hoists his trousers and loudly solicits the attention of others before making a jump between two points, whereas Maillart’s bridge resembles a lithe athlete who leaps without ceremony and bows demurely to his audience before leaving the stage. Both bridges accomplish daring feats, but Maillart’s possesses the added virtue of making its achievement look effortless—and because we sense it isn’t, we wonder at it and admire it all the more. The bridge is endowed with a subcategory of beauty we can refer to as elegance, a quality present whenever a work of architecture succeeds in carrying out an act of resistance—holding, spanning, sheltering—with grace and economy as well as strength; when it has the modesty not to draw attention to the difficulties it has surmounted.”

In that context, I’d like revisit my recent themes of choices and simplicity and add a third concept, elegance.

People, for the most part, are not playing with their software because they want to. They’re using the software as a tool to accomplish something else that they would like to do. Maybe they are using a chat program to try and seem witty, in hopes that the person they are chatting with will want to spend time with them, so that, ultimately, they have a better chance of getting laid, so that, ultimately, their selfish DNA will get to replicate itself. Maybe they are using a spreadsheet to try and figure out if they can afford a bigger apartment, so that, ultimately, dates will be more impressed when they come over, increasing their chance of getting laid, again, benefitting the DNA. Maybe they’re working on a PowerPoint for the boss so that they will get a promotion so that they’ll have more money which they can use to rent a larger apartment that would attract mates, thus increasing their chance of getting laid, (getting the idea yet?) so the selfish DNA can replicate. Maybe they are looking for a recipe for goat cheese ravioli on the Internet, etc., etc., … DNA.

Unless they’re software reviewers for a living, they don’t really care about the software itself, and the more they notice it, the more annoyed they’re going to be.

Choices, therefore, can be good or bad. They’re good when they support the task the user is trying to accomplish fairly directly. I want to be able to choose who to chat with (duh.) They’re bad when they represent an intrusion into the user’s actual DNA-replication goals. Every few days some crappy software I can’t even remember installing pops up noisy bulletins asking me if I want to upgrade something or other. I could not care LESS. I’m doing something. Leave me alone! I’m sure that the team at Sun Microsystems who just released this fabulous new version of the Java virtual machine have been thinking about the incremental release night and day for months and months, but the other 5,000,000,000 of us here on the planet really don’t give a flying monkey. You just cannot imagine how little I want to spend even three seconds of my life thinking about whether or not to install that new JVM. Somebody out there is already firing up Gmail to tell me that the JVM mustn’t just upgrade itself “because that might break something.” Yeah, if the entire collective wisdom of the Java development team doesn’t know if it’s going to break something, how am I supposed to know? Sheeesh.

If you’re using the term simplicity to mean “grace and economy” or “elegance,” that’s terrific. A great example of this is the difference between the way you search for music on Rhapsody and the way you search for music on iTunes. Rhapsody makes you decide if you want to search for albums, tracks, or artists. iTunes doesn’t give you any choice: it just searches all fields, which works just as well and is easier. Economy means power, in this case, and it’s a feature.

On the other hand, if you’re using simplicity to mean a lack of power, a lack of features, that’s fine, if you want to be in the paper clip business, good luck with that, but the chances that your product will solve my exact problems starts to shrink and your potential market share does, too.

Simplicity

Donald Norman concludes that simplicity is overrated: “But when it came time for the journalists to review the simple products they had gathered together, they complained that they lacked what they considered to be ‘critical’ features. So, what do people mean when they ask for simplicity? One-button operation, of course, but with all of their favorite features.”

A long time ago, I wrote: “A lot of software developers are seduced by the old ‘80/20’ rule. It seems to make a lot of sense: 80% of the people use 20% of the features. So you convince yourself that you only need to implement 20% of the features, and you can still sell 80% as many copies.

“Unfortunately, it’s never the same 20%. Everybody uses a different set of features. In the last 10 years I have probably heard of dozens of companies who, determined not to learn from each other, tried to release ‘lite’ word processors that only implement 20% of the features. This story is as old as the PC. Most of the time, what happens is that they give their program to a journalist to review, and the journalist reviews it by writing their review using the new word processor, and then the journalist tries to find the ‘word count’ feature which they need because most journalists have precise word count requirements, and it’s not there, because it’s in the ‘80% that nobody uses,’ and the journalist ends up writing a story that attempts to claim simultaneously that lite programs are good, bloat is bad, and I can’t use this damn thing ‘cause it won’t count my words.”

Making simple, 20% products is an excellent bootstrapping strategy because you can create them with limited resources and build an audience. It’s a Judo strategy, using your weakness as a strength, like the way the Blair Witch Project, filmed by kids with no money at all, used the only camera they could afford, a handheld video camera, but they invented a plot in which that was actually a virtue. So you sell “simple” as if it were this wonderful thing, when, coincidentally, it’s the only thing you have the resources to produce. Happy coincidence, that’s all, but it really is wonderful!

What works for bootstrapping, I believe, will not work as a good long term strategy, because there’s very little to prevent the next two-person startup from cloning your simple app, and because eventually you can’t fight human nature: “The people want the features,” says Norman. Just because handheld video was perfect for Blair Witch, doesn’t mean every Hollywood blockbuster will use it.

Devotees of simplicity will bring up 37signals and the Apple iPod as anecdotal proof that Simple Sells. I would argue that in both these cases, success is a result of a combination of things: building an audience, evangelism, clean and spare design, emotional appeal, aesthetics, fast response time, direct and instant user feedback, program models which correspond to the user model resulting in high usability, and putting the user in control, all of which are features of one sort, in the sense that they are benefits that customers like and pay for, but none of which can really be described as “simplicity.” For example, the iPod has the feature of being beautiful, which the Creative Zen Ultra Nomad Jukebox doesn’t have, so I’ll take an iPod, please. In the case of the iPod, the way beauty is provided happens to be through a clean and simple design, but it doesn’t have to be. The Hummer is aesthetically appealing precisely because it’s ugly and complicated.

I think it is a misattribution to say, for example, that the iPod is successful because it lacks features. If you start to believe that, you’ll believe, among other things, that you should take out features to increase your product’s success. With six years of experience running my own software company I can tell you that nothing we have ever done at Fog Creek has increased our revenue more than releasing a new version with more features. Nothing. The flow to our bottom line from new versions with new features is absolutely undeniable. It’s like gravity. When we tried Google ads, when we implemented various affiliate schemes, or when an article about FogBugz appears in the press, we could barely see the effect on the bottom line. When a new version comes out with new features, we see a sudden, undeniable, substantial, and permanent increase in revenue.

If you’re using the term “simplicity” to refer to a product in which the user model corresponds closely to the program model, so the product is easy to use, fine, more power to ya. If you’re using the term “simplicity” to refer to a product with a spare, clean visual appearance, so the term is nothing more than an aesthetic description much in the same way you might describe Ralph Lauren clothes as “Southampton WASP,” fine, more power to ya. Minimalist aesthetics are quite hip these days. But if you think simplicity means “not very many features” or “does one thing and does it well,” then I applaud your integrity but you can’t go that far with a product that deliberately leaves features out. Even the iPod has gratuitous Solitaire game. Even Ta-da List supports RSS.

Anyway, I gotta go … it’s time to go upgrade my cellphone to one that includes high speed internet access, email, a podcast catcher, and an MP3 player.

Choices = Headaches

I’m sure there’s a whole team of UI designers, programmers, and testers who worked very hard on the OFF button in Windows Vista, but seriously, is this the best you could come up with?

Image of the menu in Windows Vista for turning off the computer

Every time you want to leave your computer, you have to choose between nine, count them, nine options: two icons and seven menu items. The two icons, I think, are shortcuts to menu items. I’m guessing the lock icon does the same thing as the lock menu item, but I’m not sure which menu item the on/off icon corresponds to.

On many laptops, there are also four FN+Key combinations to power off, hibernate, sleep, etc. That brings us up to 13 choices, and, oh, yeah, there’s an on-off button, 14, and you can close the lid, 15. A total of fifteen different ways to shut down a laptop that you’re expected to choose from.

The more choices you give people, the harder it is for them to choose, and the unhappier they’ll feel. See, for example, Barry Schwartz’s book, The Paradox of Choice. Let me quote from the Publishers Weekly review: “Schwartz, drawing extensively on his own work in the social sciences, shows that a bewildering array of choices floods our exhausted brains, ultimately restricting instead of freeing us. We normally assume in America that more options (‘easy fit’ or ‘relaxed fit’?) will make us happier, but Schwartz shows the opposite is true, arguing that having all these choices actually goes so far as to erode our psychological well-being.”

The fact that you have to choose between nine different ways of turning off your computer every time just on the start menu, not to mention the choice of hitting the physical on/off button or closing the laptop lid, produces just a little bit of unhappiness every time.

Can anything be done? It must be possible. iPods don’t even have an on/off switch. Here are some ideas.

If you’ve spoken to a non-geek recently, you may have noticed that they have no idea what the difference is between “sleep” and “hibernate.” They could be trivially merged. One option down.

Switch User and Lock can be combined by letting a second user log on when the system is locked. That would probably save a lot of forced-logouts anyway. Another option down.

Once you’ve merged Switch User and Lock, do you really need Log Off? The only thing Log Off gets you is that it exits all running programs. But so does powering off, so if you’re really concerned about exiting all running programs, just power off and on again. One more option gone.

Restart can be eliminated. 95% of the time you need this it’s because of an installation which prompted you to restart, anyway. For the other cases, you can just turn the power off and then turn it on again. Another option goes away. Less choice, less pain.

Of course, you should eliminate the distinction between the icons and the menu. That eliminates two more choices. We are down to:

Sleep/Hibernate
Switch User/Lock
Shut Down

What if we combined Sleep, Hibernate, Switch User and Lock modes? When you go into this mode, the computer flips to the “Switch User” screen. If nobody logs on for about 30 seconds, it sleeps. A few minutes later, it hibernates. In all cases, it’s locked. So now we’ve got two options left:

(1) I am going away from my computer now
(2) I am going away from my computer now, but I’d like the power to be really off

Why do you want the power off? If you’re concerned about power usage, let the power management software worry about that. It’s smarter than you are. If you’re going to open the box and don’t want to get shocked, well, just powering off the system doesn’t really completely make it safe to open the box; you have to unplug it anyway. So, if Windows used RAM that was effectively nonvolatile, by swapping memory out to flash drives during idle time, effectively you would be able to remove power whenever you’re in “away” mode without losing anything. Those new hybrid hard drives can make this super fast.

So now we’ve got exactly one log off button left. Call it “b’bye”. When you click b’bye, the screen is locked and any RAM that hasn’t already been copied out to flash is written. You can log back on, or anyone else can log on and get their own session, or you can unplug the whole computer.

Inevitably, you are going to think of a long list of intelligent, defensible reasons why each of these options is absolutely, positively essential. Don’t bother. I know. Each additional choice makes complete sense until you find yourself explaining to your uncle that he has to choose between 15 different ways to turn off a laptop.

This highlights a style of software design shared by Microsoft and the open source movement, in both cases driven by a desire for consensus and for “Making Everybody Happy,” but it’s based on the misconceived notion that lots of choices make people happy, which we really need to rethink.

Amazing X-Ray Glasses from Sprint!

Over the last six months, Sprint has been trying to get bloggers (like me) to write about their new Power Vision Network by sending us free phones and letting us download music and movies and use the phones for free.

That’s rather nice of them, but honestly, I have a really strong aversion to writing about things just because some PR person wanted me to. Basically, there’s no better way to make me not want to write about something than to ask me to write about it. I accepted the free phone because, gosh, well, it’s a free phone, but I decided that I simply wouldn’t write about it no matter how much I liked it.

As it turns out, I had the opposite problem. The phone they sent me, an LG Fusic, is really quite awful, and the service, Power Vision, is tremendously misconceived and full of dumb features that don’t work right and cost way too much. So I’m going to review the dang phone anyway, even though if anybody from Sprint is paying attention they’re going to lose their lunch and some executive bonehead over there is going to go nuts and I sincerely hope that this doesn’t put an end to the entire free-phones-for-bloggers boondoggle, because I’d hate to get beaten up at Etech next year by all the other bloggers who would hate me for spoiling all the fun.

Now, on to the review. I was pretty excited to try out this phone because I’ve been longing for one that could double as a decent MP3 player. Most days, I get to work via a combination of subway and walking, which takes about half an hour, and listening to podcasts makes the commute much more pleasant. So I’ve been carrying a phone (a Motorola RAZR) and an iPod (Nano) with me everywhere. Merging the two into one device would be great.

When it finally arrived, the physical appearance of the phone was rather disappointing. If you’ve been spoiled by Motorola’s latest phones, or the seamless, screwless, elegant iPod, the LG Fusic will strike you as butt-ugly. Where a Motorola RAZR has a solid case made out of almost sensual matte-black steel that just feels great, the LG Fusic is made out of the cheapest kind of gray plastic, the same material you find on a $3 toy. Where Motorola goes to great lengths to hide the screws, and minimize bumps and seams, the LG Fusic has dozens of ugly protuberances, gaps, holes, screws, seams, etc. Worst of all, the LG Fusic has no less than three of those evil, flimsy, rubbery plug-caps that are connected to the phone by the thinnest of filaments. You know, those stupid rubber plugs that you have to pull away to plug anything into the phone, and then they just dangle there like chicken wattles (when they’re not getting in the way of the thing you’re trying to plug in) for a couple of weeks until they finally tear off. The phone is almost twice as thick as a RAZR. It comes with a break-offable front plate which can be used to change the accent color of the very front of the phone. Your choices are Barbie Pink, Barbie Green, Barbie Blue, and Black which would be the only stylish choice, if only it didn’t clash so badly with the rest of the phone. (Believe me, it is hard to make black clash with anything, but LG did it.) Overall this phone seriously looks like a Fisher Price toy, not a top-of-the-line cell phone.

OK, maybe you’re not so vain that appearances are a big deal. I tried to get over it. I really did. I promise I won’t talk about the style thing any more.

I opened the clamshell and turned on the phone.

The screen lit up instantly! Wow, something about this phone is nice.

Oh, wait a minute. What’s going on there?

The main screen shifts between pictures of Mount Fuji, the Eiffel Tower, etc. That’s charming. But what’s that bus?

There’s a cheezy little black and white child’s drawing of a bus bouncing up and down in front of the cheezy tourist pictures. Again with the Fisher Price Toy theme. The first thing I try to do is find a better screen saver. Everything looks like some kid’s 6th grade BASIC graphics project. Oooh, look, colored squares flying around. Terrible clip art of a “DJ”. One of the screen savers is called “Funny.” You get a silhouette of a lizard climbing around on a pink background. Bwa ha ha! That is funny. TO TWO YEAR OLDS.

OK, ok, I promised I’d stop talking about style. On to UI design.

The main menu was really, really confusing.

The first thing you see when you click on the Menu button is that you missed some alerts:

Although, it turns out, you didn’t, that’s just the name of the menu item that comes up first.

You can’t see all the icons at once because someone had the bright idea of using a weird 3-D perspective, and the currently selected icon comes zooming out in front, covering up some of the other icons. All the unselected icons are shown in silhouette, so at first they just look like a background. It took me quite a while to figure out just what the menu was and how to find things I wanted from the main menu.

But don’t worry… there are random bits of sparkle that fly around on the screen. That’s the important part. The random bits of sparkle, again, a 6th grader’s BASIC graphics project.

Now, on to the whole reason I wanted this phone: the MP3 player.

There’s no desktop integration, no ITunes integration, no feature for subscribing to Podcasts, nothing like that. When you plug the phone into your computer using the supplied USB cable, it thinks you want to use the phone as a modem. Yes, one day I might want to do that, that’s true, but for now I just wanted to get MP3s onto the thing. Somehow, somewhere, I managed to stumble on a menu that made the phone act like a USB hard drive. Tada! The phone pops up on my computer looking like a hard drive. And then there was already a MUSIC folder there, and I could drag MP3 files in. Yay! I downloaded TWiT episode 69 manually and headed off to the subway to listen to it.

Wait… I need headphones. Ahh, here they are. Wait a minute. The headphone cord is only about 8 inches long. Am I supposed to hold the phone up to my chin to listen to music?

Oh, I see, there are two cords. You have to plug the headphone cord into the microphone cord and plug that into the phone. Now it’s long enough. OK, it’s awkward, but I can live with that.

To listen to the MP3s you’ve downloaded:

  1. Hit the MENU button
  2. Find the ON DEMAND menu item (I demand to hear MP3s!)
  3. Nope, that’s not what you wanted
  4. Hit BACK
  5. Nothing happens (darn!)
  6. OK, try END
  7. Do you want to exit this application?
  8. YES is already highlighted. Click OK.
  9. Huh? The application didn’t exit.
  10. Click END again.
  11. YES is already highlighted… oh… wait a minute! Maybe NO is highlighted? There’s no way to tell the difference. There are two choices, one is white and one is blue, it’s hard to see which is highlighted.
  12. Fool around with the cursor keys until you’re pretty sure that YES is highlighted. This is confusing, because the two-item menu wraps around, so the up button moves down and the down button moves up, or vice versa.
  13. Remove the battery and put it in again. That should get you back to the main menu.
  14. Media player? Is that what you want?
  15. Yeah, there’s something in here called Music…
  16. It has about 50 options. What do they mean? SIRIUS hits? MUSIC CHOICE? SIRIUS MUSIC? Some of them are listed as My Channels and some are listed as Available Channels. Which is which? The UI here is really getting confusing.
  17. OK, none of those options lets you listen to MP3s. It turns out there’s something called MUSIC on the Main Menu.
  18. Ahh, that brings up the happy “booting Java” screen which is so heartwarming. Thank you Sun Microsystems for bringing programming language advertisements into consumer electronics.
  19. The Java applet has two tabs, “Store” and “Player.” Try buying a song. It’s $5 for 3 songs. That’s a ripoff, Sprint. Apple already established that the fair price for one song is $0.99.
  20. OK, I just want to listen to Leo Laporte, dammit. Maybe the Player tab?
  21. Gotta choose between “All My Music” and “Create Playlist…”.
  22. W00t! THERE’S TWiT!
  23. Click on it, and listen to TWiT.

All right. TWiT is more than an hour long, and I only listened to half of the episode by the time I got home. Luckily, there’s a handy PAUSE button on the outside of the clamshell. Unluckily, it doesn’t work. Pressing it once informs you that the buttons are locked, and you have to press and hold the pause button to unlock. So you do that, and the key guard goes off, and you press the pause button again, and nothing happens, so you press it again, and finally you’ve paused the music.

In the meantime, if, say, hypothetically, you were pausing because you live in a country where the police brutalize people, and a policeman was brutalizing you, and you wanted to stop the music so you could try to figure out what the policeman wanted and perhaps there was some way if you could just hear him that you could get him to stop beating you with a riot bat, you’re already DEAD by the time you figure out how to make the pause button actually pause.

While the MP3 player is paused, the backlight on the external display just won’t go off. So inadvertently, the phone almost completely runs down its battery overnight staying in “Pause” mode.

Why not turn the phone off overnight? Well, because then I’d have to listen to the first half of TWiT all over again. Can’t you fast forward? No. Doesn’t it remember where you’re up to like an iPod? No. Pause is your only hope.

The next morning, with a single bar of battery juice left, I got into the subway and resumed listening to the podcast, and I’m a wise guy, so I decided to see what the battery looked like, and of course, the phone lost power, oops, lost my place in the Podcast.

Put back the battery. Turn on the phone. Go into the MP3 player again. There’s no signal, and, guess what? You can’t get into to the MP3 player unless you can establish a network connection to the Sprint Music Store. Even to play your own MP3s!

OK, so this is an MP3 player that doesn’t really work on the subway and won’t work on a plane, the two places I’m most likely to listen to MP3s. Not very appealing.

A little bit more exploring and I discovered that there’s another entirely separate MP3 player on this device. It’s hard to find. You have to go to Tools, then Memory Card, then to the Music folder, and another MP3 player starts up which you can use to listen to your MP3s. For this player, you don’t have to be on the network, so it works in the subway, but—get this—the minute you close the clamshell, the music stops! I am literally not making this up. There are two bad MP3 players on this device, neither one of which remembers where you’re up to, neither one of which can be used on the subway with the phone folded in my pocket, neither one of which has a fast-forward feature.

I have literally never seen such a useless MP3 player.

OK, onward. Yes, you can watch movies on this phone. For example, for $5.95 a month, you can get something called mFLIX. Until you pay the money, there’s no way to find out what mFLIX is or what it is you’re getting for your $5.95. I’ll tell you what you get: a bunch of garbage film-student videos that nobody would ever vote up on YouTube, in a tiny blurry window that reminds you of QuickTime 1.0 (“look! It’s on a computer but it’s moving!”).

That was disappointing. I thought this thing was supposed to have full length movies somewhere. Ah yes, how about “MSpot Movies?” It says I’m going to get “Full-length Hollywood movies.” Only $6.95 a month. Yes. Buy buy buy. (Thankfully Uncle Sprint is paying for this). Oh look… you can preview before you commit to spending! Clicking Preview brings up a page that says PREVIEW with a “Done” button. That’s it.

OK, maybe they don’t want me to preview. Fine. After you click Buy, you’re thrown back to a main menu somewhere and then you have to remember what the hell you bought and go find it again. Annoying UI, again.

OK, MSpot Movies. A menu comes up with a bunch of folders:

  • Animaland
  • Classic Cartoons
  • Freestyle Motorcross
  • Nightmare In Blood
  • The Projectionist
  • Heart of a Champion
  • One Love

I don’t understand. Are these movie titles? Not movie titles I’ve ever heard of. Yep, it’s true. What you get for $7/month is about 10 movies that seem to be in the public domain. Literally nothing worth watching, least of all on a smudgy 1 5/8” (diagonal), pixelated screen. I did, actually, as a part of my sacred duty as a reviewer, try to watch a whole movie. I could only stand about the first 1/3rd of it, and the battery was dying, and the phone was getting too hot to hold. I cannot imagine anybody finding any value in MSpot Movies. If Sprint makes any money off of them, it’s probably by mistake. This service is literally as much of a scam as those X-Ray glasses they used to advertise in comic books to steal a few bucks from some little kids.

The only kind of content you might really want to watch on this device is the stuff you find on YouTube, or video podcasts like The Show with zefrank. But that’s not what Sprint gives you. Instead they give you $7/month, ripoff, non-previewable scammy garbage.

A long time ago, I was working on MSN 1.0, and there was a long line of content providers working to make deals with Microsoft to put their content on the Microsoft Network, but in those days, it wasn’t clear exactly who should be paying who, so hardly any deals got made. In the meantime, the whole Web thing happened, where anybody could provide content without signing a deal with a Microsoft executive, and there was tons of content, and some of it was garbage, yes, but some of it was good, and we found the good stuff, and it floated to the top, and all was well, but Sprint doesn’t get this. They relish their ability to serve as the gatekeeper to what they hope will become a new medium, because the gatekeeper gets to charge tolls. And it’s 2006, and I almost can’t believe I’m writing this, because way back in 2000 I wrote almost exactly the same thing about WAP, and how cell phone companies keep failing to insert themselves as toll collectors because they’re so darn clueless about how the Internet works, and about the value of many-to-many networks instead of broadcast networks.

And now suddenly someone at Sprint read some book by Scoble and then they read Malcolm Gladwell’s theories of tipping points in the airport and Hey Presto! Maybe we can make this work by finding the tipping point people! You know, the bloggers! And all the bloggers get free cell phones, and Sprint gets tons of publicity, but frankly all the publicity in the world is not going to help them foist on us a product that is utterly pathetic. The phones they send us are so lame there is literally no area you can go into without being disappointed and shocked at just how shoddy everything is and how much it costs and what a rip off scam they’re trying to run here with the music that costs too much and the movies that you don’t want to watch on the screen that makes them unwatchable and you just KNOW that if you call to cancel the extra $7/month, their customer service department is going to give you the phone menu runaround and then put you on hold for an hour and then you’ll get some cancellation specialist with an incomprehensible accent who will spend 15 minutes trying to talk you out of canceling the useless service until you just give up and let them have the goddamned $7 a month. No amount of pampering bloggers and calling them Ambassadors is going to get around the fact that you’re sending us plastic junk phones that look like bath toys. (Hey, does it float?) All the “tipping point” theories in the world won’t protect Sprint from the basic truth that the LG Fusic user interface could basically serve as an almost complete textbook for a semester-long course in user interface design, teaching students of usability exactly what NOT to do.

Wait a minute.

Wait just one minute.

Maybe I completely missed the point.

Maybe this phone is for four year olds!

It all makes sense now!

The nonsensical menus don’t matter—four year olds can’t read! The toy-like appearance—duh! The ripoff movies—who cares, as long as the kids press BUY by mistake and the parents keep paying the bills!

Now I get it.

So really the only stupid thing that Sprint did is to send this phone to a bunch of know-it-all, hipster-wannabe, pretentious early-adopter engadget-reading 41-year-old bloggers, with our pretentious black iPods and our sleek gun metal RAZRs and our MacBook Pros and our so-called “Podcast” listening habits, watching zefrank tell potty jokes about The Decider.

No no no no no. This phone is for 4 year olds, albeit spoiled 4 year olds with rich parents. They’ll love the colors, the plastic, the impossible UI, they can watch the one 1936 movie that inadvertently fell into the public domain in class when the teacher is getting boring, and they sure as heck aren’t going on a subway with that thing.

Ohhhhhhhhh kay.

I gave the phone to a friend’s 4-year-old.

NEVER MIND!

What Makes It Great? (First Draft)

Brad PittNow that we’ve more-or-less defined “design,” since the working title of this series is Great Design, I better come up with a working definition of “great.”

Just about every product category has its blue-chip, gold-plated stars. Movie stars? Brad Pitt. Best rock song of all time? Sweet Home, Alabama, of course. Office chairs? The Herman Miller Aeron. Portable MP3 players? Clearly the Apple iPod.

What do these products have in common?

Brad Pitt can attract millions of people to the box office. He’s very good looking, and very charismatic, and it’s not even clear if he can act, but who cares?

Sweet Home, Alabama is one of the catchiest songs of all time. It’s extremely popular despite the fact that it’s impossible to sing or hum (the refrain requires harmony), the melody is awkward, and the lyrics include a couple of reprehensible lines defending Alabama’s racist and segregationalist governor George Wallace, but few people really notice the flaws, they just enjoy the song.

The Aeron chair became the symbol of high end office chairs. It’s expensive and looks like a giant cockroach, but when the directors of 24 need to show the canonical “super luxury office chair” for the White House, they use an Aeron.

iPod nano. Hold it daintily by the corners, or it will scratch on the front and smudge on the back and generally look awful.And finally, the iPod. Ah, the iPod. It’s way more expensive than any competitive MP3 player. It has fewer features than the competition. The iPod nano, the tiny one that everybody’s raving about, is the only product I’ve ever seen that can be scratched beyond all recognition just by touching it lightly with your finger, and the shiny mirror back will be permanently covered in greasy fingerprint smudges from the moment you take it out of the elegant package until the battery wears out and you have to throw away the whole thing and buy another. But who cares?

The blue chip product in every category can usually be thought of as being popular despite obvious design flaws. Weird.

As the design gets better and better, as the product becomes more and more suitable to its users needs, it becomes more likely to be chosen by customers. So the 40GB MP3 player, all else being equal, will outsell the 20GB MP3 player. The easy-to-use phone will outsell the hard-to-use phone. All else being equal. That part is not weird.

But that only gets you so far, as Creative, makers of the unloved ZEN MP3 players, are learning the hard way. Despite having products that are better than the iPod by just about every reasonable metric, they are unable to even come close to Apple iPod’s dominant market share. They’re cheaper. They have more memory. They support more file formats. Etc. Doesn’t matter: they still have single-digit market share while iPod is probably in the 80s somewhere.

That’s because good design can only take you so far. Getting every aspect of the design perfect, making a usable product, making the right tradeoffs between price and functionality, between flexibility and ease of use, between weight and battery life, etc., etc., etc., is all really important, but the most it can possibly get you is to #2.

It’s like beauty. A wannabe model can be tall, with a perfectly symmetrical face, beautiful skin, lovely eyes, and perfectly straight white teeth, and still be considered unattractive. On the other hand, you can have a gigantic broken nose, or be completely lacking in eyebrows, or have a giant gap between your two front teeth, and still be People Magazine’s Sexiest Whatever of the Year.

How do you get to be #1? That’s the mystery here. And since certain markets (graphical operating systems, online auctions, and apparently MP3 players) seem to be winner-take-all markets, being #2 or #3 may not be good enough.

Herman Miller Aeron ChairSo this is what I’m talking about when I say “Great Design.” It’s that ineffable quality that certain incredibly successful products have that makes people fall in love with them despite their flaws. It’s extremely hard to pull off. I sure as heck can’t do it. But, if you bear with me, I think I have some theories as to what’s happening. While these theories do not exactly add up to a recipe for making good products into great products, they may give you a clue as to what’s going on when people go crazy about the Aeron chair or Julia Roberts.

Here’s the overall plan for this series of articles. First, I’m going to go through good design, namely, all the things you should know to get your design adequate given the current state of the art. Ease of use is a fundamental part of that so I’ll spend a lot of time on usability.

Later, once I’ve got all the obvious things taken care of, you’ll have a really usable design and one which meets your customers’ needs, and in fact, if you pay more attention to these usability things than your competitors, you may have the best design, but that’s not going to get you to #1.

“Every time I read Jakob Nielsen,” I wrote in 2000, “I get this feeling that he really doesn’t appreciate that usability is not the most important thing on earth. Sure, usability is important (I wrote a whole book about it). But it is simply not everyone’s number one priority, nor should it be. You get the feeling that if Mr. Nielsen designed a singles bar, it would be well lit, clean, with giant menus printed in Arial 14 point, and you’d never have to wait to get a drink. But nobody would go there; they would all be at Coyote Ugly Saloon pouring beer on each other.”

So in the final articles, roughly the last third of the series, I’ll peek under the covers at the black magic of great design. You may not be able to pull it off. It takes real talent, not just hard work. But at least I hope you’ll recognize some of the things that are going on that make certain gadgets, software, songs, movie stars, and office chairs make that leap from merely throroughly good to truly and significantly great.

 

Great Design: What is Design? (First Draft)

OK, buckle down, we’ve got a lot of ground to cover.

In our last episode, I introduced the tentative title “Great Design” for this series of articles. I have something very specific in mind when I use the words “great” and “design,” and it’s worth spending some time defining it.

First, “design.”

Brownstones in New York CityYou know those gorgeous old brownstones in New York City? With the elaborate carvings, gargoyles, and beautiful iron fences? Well, if you dig up the old architectural plans, the architect would often just write something like “beautiful fretwork” on the drawing, and leave it up to the artisan, the old craftsman from Italy to come up with something, fully expecting that it will be beautiful.

That’s not design. That’s decoration. What we, in the software industry, collectively refer to as Lipstick on a Chicken. If you have been thinking that there is anything whatsoever in design that requires artistic skill, well, banish the thought. Immediately, swiftly, and promptly. Art can enhance design but the design itself is strictly an engineering problem. (But don’t lose hope — I’ll talk more about beauty in future articles).

Design, for my purposes, is about making tradeoffs.

Let’s design a trashcan for a city street corner, shall we?

Let me give you some design constraints.

It has to be pretty light, because the dustboys, er, sanitation engineers come by and they have to pick it up to dump the trash in the garbage truck.

Oh, and it has to be heavy, or it will blow away in the wind or get knocked over. (True story: I once got in an accident because a trash can blew in front of our car. Nobody was hurt, not even the trashcan.)

It has to be really big. People throw away a lot of trash throughout the day and at a busy intersection if you don’t make it big enough, it overflows and garbage goes everywhere. When that happens, one of the little six-pack plastic ringy-dingies will get in the ocean, and a cute little birdy will get ensnared in it, and choke to death. YOU DON’T WANT TO KILL BIRDIES, DO YOU?

Oh, also, it needs to be pretty small, because otherwise it’s going to take up room on the sidewalk, forcing the pedestrians to squeeze past each other, which, possibly, when the Effete Yuppie Listening to His iPod gets distracted by a really funny joke on the Ricky Gervais podcast and accidentally brushes against the Strangely Haunted Vietnam-Era Veteran, can result in an altercation of historic proportions.

Ok, light, heavy, big, and small. What else. It should be closed on the top, so rubbish doesn’t fly away in the wind. It should be open on the top, so it’s easy to throw things away.

It should be really, really, really cheap.

Notice a trend? When you’re designing something, you often have a lot of conflicting constraints.

In fact, that’s a key part of design: resolving all of these conflicting goals.

The only goal that usually doesn’t conflict is the requirement that whatever you design be really, really cheap.

Every design decision involves tradeoffs, whether it’s finding space for all your icons on the toolbar, picking the optimal balance of font size and information density, or deciding how best to use the limited space for buttons on a cellphone.

Bell System TelephoneEvery new feature is a tradeoff, between the people who could really use such a feature and the people who are just going to get overwhelmed by all the options. The reason 1950s-era telephones were so much easier to use than modern office phones is that they just didn’t do much. Without voicemail, conference calling, three-way calling, and Java games, all you need is a way to dial numbers and hang up on the man claiming to be selling police benevolence.

By which I mean to say: even if you think your new feature is all good and can’t hurt because “people who don’t care can just ignore it,” you’re forgetting that the people who allegedly don’t care are still forced to look at your feature and figure out if they need it.

“How could a mute button on a sound system hurt?” After all, if you don’t want to waste time learning about the mute button, you can just ignore it completely, right?

No. Because at some point, someone will hit it by mistake, and no sound will come out of the speakers, and if they don’t know about “mute,” they’ll start trying to turn up the volume knob all the way, so when they do finally unmute the thing, the speakers will blow out with an ear-shattering boom that creates permanent, concave warps in each of the walls of the room where the sound system was installed (and a matching hump in the floor of the apartment upstairs).

And since the mute button takes up space on the control panel, now all the other control panel buttons have to be a bit smaller, making them harder to read, and there are more buttons, so the whole interface looks scarier. I swear, it’s gotten to the point where I don’t dare try to use the clock radio in a hotel room to wake me up. With all the options they have I can never quite tell if I’m setting the alarm clock to wake me up in time for my Very Important Meeting, or programming the damn thing to download the latest news from Mongolia on the half-hour.

“So,” you think, “simplicity, is that it?” No! I wish it was that easy!

Because without conference calling, you’re just not going to sell any office telephones.

If the nifty graphics application you developed doesn’t give users 16777216 choices for colors, you’re not going to sell a copy to Yale, which needs Yale Blue (Pantone 289) for all their documents.

You see? There are two requirements: lots of features and few features. Ah! And that is where the zen-like mystery of design comes in. When you’re designing, you’re satisfying lots of difficult constraints. One false move, and you fall into the abyss. It’s frigging hard to get this right. You think I know how to solve the Motorola RAZR phone power-switch button? Heck no! I’m sure that the design team over there spent weeks working on this. I’m sure that some engineer or team of engineers went to absolutely heroic lengths, staying up late and coming in on weekends, to make the RAZR keyboard light up right away when you press the ON button, even though you don’t notice this in daylight, because they know about the problem I whined about in the introduction and just couldn’t do anything about it because turning on a modern cellphone requires booting up a computer, and not a very fast computer, for that matter, before you can get things on the main screen to light up.

Design Adds Value Faster Than It Adds Cost

The Motorola RAZR is now selling at a rate of about four million units each month — 1.5 per second. If Motorola spends another $million or two improving the design, they can make it back in a day.

Design is something you only have to pay for once for your product. It’s a part of the fixed costs in the equation, not the variable costs. But it adds value to every unit sold. That’s what Thomas C. Gale, the famous Chrysler automobile designer who retired in 2001, meant when he said that “Good design adds value faster than it adds cost.”

(Footnote: AUTOS ON FRIDAY/Design; He Put a New Face on Chrysler, The New York Times, Published: February 9, 2001, by By JIM MCCRAW , Late Edition – Final, Section F, Page 1, Column 1)

That’s what makes it so important. By the time I’ve finished this series of articles, I think you’ll be utterly convinced that nothing matters more to a product’s success — whether it’s a software product, website, cell phone, or garbage can — than good design. And as for great design? Well, that’s coming up in the next installment. Stay tuned.

 

Introduction to Great Design (Second Draft, In Progress)

Confession: I’m afraid to turn off my cell phone.

Not because I’m afraid of being out of touch, mind you. Heck, I could care less if people can reach me. If you have something to tell me that’s so important it would be worth interrupting Will and Grace, well, I think I’d rather have another 30 minutes of ignorant bliss before I find out about it. That’s my motto: Will and Grace First, Earthquakes and Floods Later.

Picture of Motorola RAZR Cell PhoneHere’s why I’m afraid to turn off my cell phone: because I can’t always seem to muster the brain cells necessary to turn it back on.

It has two buttons on it, a happy green button and a scary red button. They have funny icons on them that don’t mean very much to me.

You might think that the green button turns it on. Green means go, right?

Wrong.

I tried that. Nothing doing. I tried pressing and holding the green button, because sometimes these phones want you to press-and-hold so that you won’t accidentally take a picture of your ear, or disconnect the phone call in the middle of an important job interview, or whatnot.

It turns out it’s the red button that turns it on.

When you press the red button, usually, nothing actually happens, so you suspect you might have done something wrong.

It turns out that you have, actually, turned on the phone, and if you’re in a dark room, you would have noticed that the keyboard flashed when you turned it on. In a bright room, nothing happens for six seconds. That’s usually long enough to think that you’ve done something wrong. So that’s when I start trying the other buttons, like the happy green button. In any case, I wind up feeling frustrated and not in control of my life.

Once you do learn that the red button turns the phone on, and you don’t have to hold it, you start to get frustrated that the time it takes the phone to boot up and load the pretty background picture and get on the network is something like 30 seconds. That’s frustrating, too. It seems like in the Olden Days you didn’t have to wait for half a minute to turn on an appliance. There was a switch, up was on (unless you lived in Europe, where they had a terrible war and couldn’t afford appliances), you switched it, the thing went on and started spinning or shining or whatever it is that the thing was supposed to do. Instantly. End of story.

Indeed, it’s surprising just how many of today’s devices and gadgets and remote controls have actually made TVs, stoves, and telephones harder to use. Suddenly, bad computer user interface design is seeping into the entire world.

Six years ago, with the total dominance of the consistent graphical interface of Mac and Windows, it seemed like the state of the art in software UI design was getting pretty good. Nothing fabulous, mind you, but pretty good. You could sit down with a new Windows app that you’d never seen before and have a pretty good chance of being able to operate it correctly.

Book: User Interface Design for ProgrammersThat’s when I wrote a book called User Interface Design for Programmers, thinking, great! It’s time to get everybody on the same page, here, about how we design user interfaces, and then life will be wonderful.

Unfortunately, that was about the same time as there was a huge wave of new consumer gadgets, and, of course, that web thing hit us.

The web didn’t really have a standard UI. You could make anything be a link. We didn’t have dropdown menus, so we made do with all kinds of differently-behaved simulations of dropdown menus.

Gadgets? Gadgets were even worse. They had tiny keyboards and tinier screens. Combined with rampant featuritis, these damn devices did more and more things but just figuring out how to do them took a degree in engineering (or a bright 12 year old, but slavery has been abolished, especially for 12 year olds.)

Maybe nobody told the people who design gadgets and gizmos and websites (and even software) that they need to work on their user interface skills.

So, this is their wake up call.

While most products were becoming increasingly incomprehensible, like the typical home entertainment remote control, with dozens of mushy little buttons marked “MTS” or “SURR” or “PTY” that nobody has any hope of understanding, something else was happening: a very few, very good designers were, somehow, coming up with truly great designs that were beautiful, easy to understand, fun, and which made people happy. You know who they are because those products became bestsellers. The Apple iPod. TiVo. Google. Even the Motorola RAZR, which is so hard to turn on, is, in most ways, a great design.

Over the next weeks and months, if all goes well, I’m going to write a series of articles right here, on this website, on UI design for the modern age. The whole series will be, tentatively, named Great Design.

If all goes well, we’re going to look at some of the original principles of good UI design, much of which I covered in the first book, and revisit them and see how they apply to today’s world of miniature gadgets, websites, and street-corner garbage cans.

Then, if we’re really lucky, we’re going even farther. We’re going to look at what it takes to make the leap from a servicable, decent product design to a Mindbogglingly Great, Earth-Shaking, History-Changing product design. I have some theories about that, too.

 

The Project Aardvark Spec

As the final version of Copilot.com (what this spec calls “Aardvark”) went into production in early August, 2005, this spec is now of historical interest only. I’m making it available as a part of Joel on Software because many people have asked to see some samples of the kinds of specs we write at Fog Creek. (You may also be interested in my series on Painless Functional Specifications.)

There was one big mistake in the spec. When I wrote it I had assumed that port 443, used by the secure (SSL) http protocol, would be open even on networks that are configured to use proxy servers. I mistakenly believed that proxy servers could not forward SSL traffic because that would appear, to the browser, to be a “man in the middle” attack. This, it turns out, was erroneous, false, and incorrect, and after shipping the first beta we discovered just how wrong it was. Thus, the final implementation of Copilot 1.0 required a lot of unplanned work to support proxy detection and different kinds of proxy servers. We got most of that work done in time for 1.0 and are now finishing off the rest of it for a release we’re calling 1.1.

That said, the extra proxy work only added about 10% to the overall development effort. The reason you write a spec is not to solve every possible problem in advance: the reason you write a spec is to solve as many problems as you possibly can in advance so that you minimize the number of surprises that come up during development. In our case, since we were working with summer interns who literally had to walk out the door and go back to school, we literally could not afford to underestimate the amount of work that was needed to build Project Aardvark or I would be stuck debugging the thing deep into September while the kids drank beer and played poker, and we couldn’t have that.

Many times, thinking things out in advance saved us serious development headaches later on. When I wrote the first draft of this spec, I had a more complicated flowchart that assumed that either party (helper or victim) could initiate the process. This became extremely complicated and convoluted for various reasons. As I worked through the screens that would be needed to allow either party to initiate the process, I realized that Aardvark would be just as useful, and radically simpler, if the helper was required to start the whole process. Making this change in the spec took an hour or two. If we had made this change in code, it would have added weeks to the schedule. I can’t tell you how strongly I believe in Big Design Up Front, which the proponents of Extreme Programming consider anathema. I have consistently saved time and made better products by using BDUF and I’m proud to use it, no matter what the XP fanatics claim. They’re just wrong on this point and I can’t be any clearer than that.

There was one other significant change we made late in the process which is not reflected in the spec. After usability testing, we discovered that people were consistently confused by our policy of having the application delete itself. This was not what users expect. We modified the final product so that the helper could check a box to cause the victim’s executable to be deleted, but it wasn’t done by default. This way the helper, who is presumably more computer savvy, could insure that no unsafe executables were left around on the victim’s computer. I think this change was about 2 hours of work, so it didn’t impact the schedule.

Finally, you’ll notice a big “coding conventions” section in the middle of the spec. Frankly, this doesn’t belong in a functional specification, and it should really have been a separate document.

Still, as I reread this spec today, I’m surprised by what a good job the Aardvarkians did implementing everything. I seriously expected we would have to cut features; instead, we shipped with everything we wanted in version 1 and even did some of the features this spec refers to as version 2 features.

Download The Project Aardvark Spec in PDF Format (about 120KB). If you link to the spec, please link to this page, not the PDF file itself.