Some Tools

The PressFile

Our Clients

About Us


Good Waiters & Bad Waiters:
a software design metaphor

This paper was first delivered at the FileMaker Developer Conference, August 1998 in Monterey, CA


The other day I ate at a French bistro in Coral Gables. It happened to be right next door to Kinko’s, ‘a new way to office,’ and I had been ‘officing,’ I guess you’d say: printing a trade show poster I’d made on my Powerbook.

The waitstaff met me at the door and led me to a nice seat by the window. I ordered some spicy sausages that came with pommes frites—‘french fries,’ the waiter helpfully translated—and before I knew it I had a tall glass of ice water, a basket of fresh bread and butter.

I was hungry, so I went straight for the bread. Then I noticed I had no silverware, no knife to butter my bread with. Being the creative problem-solver that I am, and being very hungry too—and since my mom wasn’t at the table—I picked up a piece of the french bread and used its crusty edge to cut a slice of butter.

Waiter from Hell.

Now remember, I never asked the waiter for a knife. Let’s say that I had, but that the waiter refused to get me one, or ignored me. And let’s say that every time I returned to this restaurant, the same thing happened, and I got very good at using the crust of bread as a knife. And finally, imagine that I found this kind of service to be normal and acceptable, and I continued to patronize the restaurant, and even asked for my ‘favorite waiter’ whenever I dined there. This would start to resemble what it’s like using some of the best-selling business software on the market today.

I started writing this article using Microsoft Word 98. In exasperation, I just switched to ClarisWorks. At the end of each paragraph, when I would hit return to begin the next paragraph, my typeface, type size and indent would change. Realizing that type styles can ‘live inside’ an invisible return character, I selected the entire block of text and reapplied the type styles, more than once just to make sure. Despite that, the problem persisted. When I tried to delete the offending styled text, the entire preceding paragraph would become boldface and would be assigned yet a third typeface.

The sad thing is, I put up with this behavior for four paragraphs. Worse yet, millions of office workers have no choice, and must endure rude and insulting software day in and day out.

"Hi, my name is Bill and I’ll be your expediter this evening!"

Word 98 is not always so rude. Sometimes it kills you with kindness. It features a ‘helpful assistant’ who pops up at various times to offer tips. Whenever I begin to type a letter ("Dear Bill"), a cute little Macintosh with hands and feet like Mickey Mouse pops up and perceptively notes, "You’re writing a letter! Would you like some help?" I never do, but this doesn’t seem to deter the fellow. He’s asked me the same question dozens of times since I installed Office 98. Two days ago, I spent fifteen minutes trying to turn off the little guy. I enlisted the help of a friend who has also used Macs and PCs for over ten years. We followed the instructions given by the guy himself, but it didn’t work.

Office 98 is the most heralded Mac software product in years, one praised as ‘more intuitive’ and ‘more Mac-like.’ And this is how dismal interface design is today!

Great waiters are invisible.

When you’re being served by a wonderful waiter, you never notice him. Your water glass seems always to be full. He knows not to interrupt your conversation with a list of daily specials. He doesn’t need to ask if you’re finished with your salad plate: he knows, because he’s been discreetly watching. Good software should be like this.

Some Human Interface Design Principles

Let’s introduce some terms for our discussion. The first few headings are borrowed from Apple’s Human Interface Design Principles, and some other terms are taken from authors in the disciplines of computer design and ‘real’ architecture (buildings).


The most famous interface metaphor is the Macintosh desktop, now a part of Microsoft Windows as well. It’s a metaphor because while there are really no file folders, sheets of paper or a trash can inside your computer, there appear to be, and this illusion is helpful in getting your work done.

Bruce Tognazzini, who is a magician and one of the creators of the Macintosh, emphasizes that the illusion created by an interface must be descriptively useful, and not just there for its own sake. There’s a popular Filemaker template that must win the award for ‘Most Metaphors in One Screen.’ It features the image of a spiral bound notebook, on each page of which appear to be glued a set of file folders, with folder tabs stretching across the top of the page. The pages are ‘turned’ by clicking on yet another set of tabs that run up the right side of the screen. In the middle of each ‘page’ are what look like small folders attached to the large folders that are glued to the page which is on a vertical tab in the spiral bound notebook. It made me dizzy just to look at it.

While an interface like this may be intriguing to M.C. Escher, it’s not great for a user who’s trying to figure out where some piece of information is hiding. Donald Norman points out that the metaphor of an interface should help the user make a ‘mental map’ of their tasks. If this map is too complex or too strange, it’s useless.

Mr. Norman describes two competing mental models that live inside most software. One is the programmer’s model of the software. It is made up of things like procedures, functions, memory locations, logical branches and loops. The other is the user’s model of the software, and it’s made up of windows, pull-down menus, infinitely long scrolling ‘sheets of paper’ inside the windows, et cetera.

Neither of these models are literally accurate descriptions of what is going on inside the computer at any point in time, yet they’re each useful for the distinctly different jobs of the programmer and the user. According to Norman, the sin is to make users deal with the nasty (for them) world of the programmer. This is what happens when, for instance, Windows treats the user to the unintelligible gibberish of the Blue Screen of Death.

Waiters know if the chef has a cold, or an intestinal flu. They may have just seen a rat in the kitchen. While this information may be useful at the proper place and time, it’s not something to share with the restaurant’s patrons.

Feedback and Dialog

Have you ever had a waiter walk up to your table with a pencil and check in hand and simply wait for you to order, without ever saying a word? Sometimes, to perfect the atmosphere of rudeness, they will stare impatiently at another table and begin drumming the pencil on the pad when you fail to place your order immediately. When you finally figure out that you’re supposed to be ordering and begin to say what you want, they scribble on the check but still say nothing. Pause for a moment while ordering, and they walk away.

Now pretend that you didn’t receive a menu either, and you have the DOS and Unix command line interfaces. For strong, manly users who know what they want and have no time for idle chit chat, this is the ultimate interface design. However, the rest of us require a bit more feedback and dialog.

Don’t mistake dialog boxes for dialog. Programs that throw up dialog boxes asking things like "Are you SURE you want RED wine with your FISH?" have usually already failed in giving the kind of subtle guidance that avoids problems in the first place. Good interface design helps users avoid mistakes by offering feedback and dialog that directs you toward better choices before they are made, rather than scolding you with a dialog box after the error is committed.

Filemaker Pro features a poorly marked mode called Find Mode. Sometimes users get into Find Mode and start entering data as if they were creating new database records. They are then surprised when they return to Browse Mode and discover that their entries have disappeared. There is now a dialog box in Filemaker that pops up after you have created 10 Find requests. It asks, "Are you sure you want to be in Find Mode?" The better solution is to make it clear to users what mode they’re in so that they never make the mistake in the first place. Marking Find Mode with a different appearance is one solution that Filemaker developers have used to improve the visual feedback provided by their solutions.

See and Point

Thankfully, good waiters don’t require you to pronounce French. If they see you’re having a problem they glide to your shoulder so you can point to the item on the menu. ‘Ah, the petit foie gras with pommes frites, an excellent choice, mademoiselle!" The good waiter makes you feel smart, not stupid. Software designers may learn from this.

If there is an option available to a user, show it to them. Software design’s first steps out of the DOS world borrowed from the restaurant world by developing menu-driven interfaces. Instead of pulling commands from thin air, users could select them from a list on screen. These menus have evolved into the pull-down menus of today’s MacOS and Windows, but the concept is the same: let users make selections from among visible choices.


You’ve selected a wine, with careful guidance from your gracious waiter. The waiter returns to the table and presents you with the bottle. The unspoken question: is this the wine you would like? At your nod, the waiter uncorks the bottle and pours a taste into your glass. If you approve, the wine is poured all around.

How many chances did you have to modify your choice, or even change your mind? The best waiter will strike the wine from your bill even after your party has begun to drink it, if you’re dissatisfied with the bottle. In computer interface parlance, this goes by the poetic phrase unlimited undo. It may also be called forgiveness.

Forgiveness might be the most valuable characteristic of a well-designed interface, since it encourages the kind of exploration that lets the user learn how to do more things. If your Filemaker database requires the user to spend valuable time building a found set of records, but then loses that found set forever by inadvertently clicking a ‘Find All’ button, you may have permanently lost the good will of that user. Build a mechanism for transparently saving those found sets and you have added forgiveness to your design, as well as the potential for many other interesting capabilities.


Sliced tomato and grilled onions on your tuna melt? Your favorite waiter will have no problem getting it for you, whether or not it’s on the menu. But places like Burger King refuse to make you a burger at 7 am, or pancakes for lunch. Despite the slogan ‘Have it Your Way,’ a Burger King restaurant is either in breakfast mode or burger mode–not because it suits the customers, but because it suits the company.

Some interface modes are useful. Once I’ve decided to print, I have no problem with a print dialog box that doesn’t go away until I’ve selected how many copies I want. But what if the print dialog box doesn’t give me a choice of printers on the network? The old Macintosh Laserwriter software used to make you cancel the print dialog, go to the chooser, select a new printer, then call up the print dialog box again. This has been fixed recently, but overly restrictive modes are still all too prevalent.

Say I’m viewing a person’s contact record in Filemaker, and I want to send a fax to this person. For the most part, working with your database and sending a fax are distinct modes: once you call up that fax dialog, you can’t get back to the database without canceling the dialog. Worse, the faxing software is asking you for a fax number–which just happens to be sitting in a field in the database, now covered by the dialog box!

Why should I have to tell the computer the fax number if it already knows the number? Okay, okay, I know that it’s the Filemaker database that knows the fax number, not the fax software, but now I’m thinking like a programmer and not like a user. The user expects the computer to have some common sense, and while we know it doesn’t, if we impart some of our own common sense to our design, we can foster the illusion that the computer does have common sense. We can also make a client happy in the process.

Using a piece of software called FaxTool, published by DataDesigns, I now click a button in my Filemaker database and send a fax to the client whose record I’m viewing. It’s fast and simple, it avoids the restrictive faxing mode, and most importantly, it makes sense. I’m not jolted out of the flow of my work in order to accommodate the ‘stupidity’ of my software.

Focus on your task, not the computer

There are six other principles that you can read about in the book Macintosh Human Interface Design Principles, published by Addison Wesley: Direct Manipulation, Consistency, WYSIWYG (What You See Is What You Get), User Control, Perceived Stability, & Aesthetic Integrity. They all work together to one end: serve users by allowing them to focus on their work and not their software.

Unless you’re eating at Benihana, chances are you don’t go to a restaurant for the waiter. If the waiter has done his job, you may not remember him at all. This happens with excellent software too. Computer users describe a state called ‘flow,’ in which they ride the crest of a wave for hours at a time, concentrating only on their writing, graphic design, musical score, or financial data. All it takes is one poorly worded dialog box to knock them off the wave, but remarkably enough, some well-designed software tools have no poorly worded dialog boxes! These tools have reached a higher level of design.

‘Commodity, Firmness & Delight’

This ancient maxim from the field of architecture applies just as well to the best software design. I strive to imbue my own interface designs with these three qualities, and you may want to look for them in your own software.

Commodity means that the software tool is fit to the tasks they help accomplish. A data specification in the form of a entity relationship diagram is not enough for a commodious design. It is also necessary to produce a task specification, in at least as much detail as the data spec.

Firmness refers to both the strength of the design ‘under the hood’ and its stability and coherence as viewed by the user. Strange flashes and jerky screen redrawing may not affect the relational design of a database, but these anomalies undercut the user’s faith in the software. Massive skyscrapers supported by pencil-thin steel posts may be structurally sound, but if they fail to communicate firmness to people, they will not feel comfortable in the space.

Delight is the most difficult quality to evoke, but no less essential. There’s an architectural quality Christopher Alexander calls generous circulation. In some houses, children discover that it’s possible to arrive at the same room through two or more paths, and that they can travel in a circle or a figure eight. They invariably delight in this. It’s tough to design software that has multiple paths like this that are not simply more confusion, something like the endless identical corridors in a large hospital. But when the multiple paths are laid out in a coherent, sensible way, the result can be wonderfully un-computer-like!

Most software still applies a logical tree structure to interface, despite the fact that people think in a richly connected and integrated fashion. Software designs that adopt this richer model are truly special. Look for them!

‘Check, Please’

Edward Tufte points out that only one other business in the world calls its customers ‘users’: drug pushers. Some Unix programmers prefer the rhyming term ‘losers.’ Tufte claims that much of the poor design found in software today emanates from the disrespect inherent in these words.

Restaurants are more apt to call their customers ‘patrons’. Software designers would do well to adopt this word, along with the attitudes and practices of good waiters.



a bibliography

Christopher Alexander et al, A Pattern Language

Alan Cooper, About Face

Kevin Mullet & Darrell Sano, Designing Visual Interfaces

Donald Norman, The Design of Everyday Things

Ben Schneiderman, Designing the User Interface

Edward Tufte, Envisioning Information

Terry Winograd, Bringing Design to Software


The PressFile | Small Company |


Leopold's First Rule of Intelligent Tinkering: Keep all the parts.