Read an Excerpt
-From the Introduction:
Most of the hard-core programmers I know hate user interface programming. This surprises me, because I find UI programming to be quintessentially easy, straightforward, and fun. It's easy because you usually don't need algorithms more sophisticated than how to center one rectangle in another. It's straightforward because when you make a mistake, you immediately see it and can correct it. It's fun, because the results of your work are immediately visible. You feel like you are sculpting the program directly. I think most programmers' fear of UI programming comes from their fear of doing UI design. They think that UI design is like graphics design: the mysterious process by which creative, latte-drinking, all-dressed-in-black people with interesting piercings produce cool looking artistic stuff. Programmers see themselves as analytic, logical thinkers: strong at reasoning, weak on artistic judgment. So they think they can't do UI design. Actually, I've found UI design to be quite easy and quite rational. It's not a mysterious matter that requires a degree from an art school and a penchant for neon-purple hair. There is a rational way to think about user interfaces with some simple, logical rules that you can apply anywhere to improve the interfaces of the programs you work on. This book is not "Zen and the Art of UI Design." It's not art, it's not Buddhism, it's just a set of rules. A way of thinking rationally and methodically. This book is designed for programmers. I assume you don't need instructions for how to make a menu bar; rather, you need to think about what to put in your menu bar (or whether to have one at all). You'll learn the one primary axiom that guides all good UI design, and some of the corollaries. We'll look at some examples from real life, modern GUI programs. When you're done, you'll know about 85% of what it takes to be a significantly better user interface designer. Spolsky tells it like it is in such pithy comments as: I haven't talked about software for a while. When you're designing for extremes with software, the three most important "extremes" to remember are: 1. Design for people who can't read. 2. Design for people who can't use a mouse. 3. Design for people who have such bad memories they would forget their own name if it weren't embossed on their American Express.