Last updated:
26. August 2003

User Interface Programming

(Start main menu) Home ­ Articles ­ Book ­ Resources (End main menu)

Review: User Interface Design for Programmers

(Start sub-menu)


User Interface Programming Column


Tech Tips


Code Archive

Range Slider

Splitter Controls and Dialog Resizing



My blog »

(End sub-menu)

User Interface Design for Programmers User Interface Design for Programmers
Joel Spolsky
150 pages
Apress, 2001
ISBN: 1-893115-94-1

User Interface Design for Programmers is an introduction to the key prin­ci­ples of user in­ter­fa­ce design. It is short enough that you can get through it in one eve­ning; it is well enough written that doing so is a pleasure rather than a chore; it is comprehensive enough to cover the fundamentals.

Why do pro­gram­mers need to know anything about user in­ter­fa­ce design? The bor­der­line bet­ween designers and pro­gram­mers is hazy at best. Every day “mere” pro­gram­mers make any number of design decisions that directly affect usability, so a nodding acquaintance with the key prin­ci­ples is essential to provide some direction. And even if you’re working on something far removed from end users, someone will use the fruits of your work, and usability prin­ci­ples apply as much to API design and error handling paradigms as they do to dia­log design.

User Interface Design for Programmers is strictly about in­ter­ac­tion design. Only in connection with affordances does Joel briefly discuss looks rather than behavior, and even then he expounds on the principle of the thing rather than the aes­thet­ics. Fair warning: This book won’t teach you anything about typography or graphic design.

The cardinal axiom of user in­ter­fa­ce design goes like this:

“A user in­ter­fa­ce is well-designed when the pro­g­ram model conforms to the user model.”

That’s not all there is to it, of course, but this must always be your starting point. If the user’s mental idea of what the pro­g­ram does is wrong, usability goes down the drain. Joel uses the pro­g­ram models of Word and FrontPage to exemplify this: If you insert an image into a Word docu­ment, the image gets embedded in the docu­ment. You can safely delete the original image file; the Word file still contains a copy. Inserting an image into a FrontPage docu­ment is a different story: The underlying storage format is HTML, which stores a reference to the image file rather than an embedded copy. If you delete the original image file, you’re in for a big surprise if you’re used to Word’s pro­g­ram model.

Decision-making is a vital part of any design process. It is difficult, though; if you include one design idea you may have to exclude another. Too often, the designer shies away from the decision and leaves it up to the user instead: If you call it an option, you can pretend it’s a feature.

Many “options” are bugs rather than fea­tures. True, users relish having a choice wherever they actually care about the outcome, but in many cases they don’t. Joel uses this dia­log as a case in point:

Find Setup Wizard

Roughly 99.67% of users want help; they don’t want to get sidetracked into making meaningless decisions they’re unqualified to make in any case. I have personally encountered that dia­log box 748 times by the last count, and every single time my response has been to hit the Return key. What do I care? Give me help, not meaningless choices!

The Joel Uncertainty Principle holds that “you can never accurately measure the usability of a software product.” Joel believes that the most important purpose of real-life usability testing is to find glaring problems as early as possible, and that the second most important purpose is educational: Let your designers and pro­gram­mers watch as users struggle; there is no better eye-opener to be had.

Too often, usability tests measure learnability rather than usability. There’s nothing wrong with measuring learnability, but you will quickly be led far astray if you do this believing it’s usability you’re measuring.

Throughout the book, Joel uses anecdotes and examples to illustrate his points. Many of the examples are from work he’s been directly involved with, and this lets him discuss not only why something is wrong, but how it came to be that way. He does not provide detailed rules and checklists; instead, he provides guiding prin­ci­ples:

In ad­di­tion to being useful, user in­ter­fa­ce design is also fun. Clearly Joel thinks so, and he puts across his enthusiasm wonderfully. His writing style is relaxed, in­for­mal, and humorous. Once or twice he gets too cute for my bour­geois taste, but for the most part, his style is spot on.

User Interface Design for Programmers is in full color, richly illustrated and highly recommended. It is also available online at

(Start bottom menu)

Win­dows De­vel­oper Maga­zineR&D BooksCMP Books Petter Hesselberg

(End bottom menu)

Windows Developer Magazine

WDM has merged with Dr. Dobbs Journal.