Introduction – User Interface Design for Programmers


Most of the hard core C++ 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 can see it right away and 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 graphic design: that 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 an art school degree 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 primary axiom which 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 enough to be a significantly better UI designer.