Fri, Jul 17, 2015 

Book Review: User Interface Design for Programmers by Joel Spolsky

We programmers are notoriously horrible at user interface design. Regardless of whether this stereotype is fair, I’m sure we can all think of awful user interfaces we’ve been forced to use or, at least, see. In spite of this aknowledged lack of skill, we are regularly called on to design the user interfaces of the software we write. Joel Spolsky noticed this problem all the way back in 2001 and wrote a book to help us. I think it’s rather good.

Of course, this book will not make you a great designer. That takes creativity and experience and probably magic. I think a better title would be “Basic User Experience for Programmers” since it focuses on program functionality much more than the ‘art.’ This book will help you be aware of some basic rules for handling page layout and navigation. Maybe you’ll avoid some stupid mistakes next time it falls to you to make some design choices.

In the middle of the book, Joel devotees one chapter each to three big points. It’d be under-selling the book to say these are the main points, but they were particularly impactful to me. They are, and I list:

  • People can’t read
  • People can’t control the mouse
  • People can’t remember

You may be tempted to read that as “People won’t remember” or “People don’t read.” That would be a mistake. You may think these only apply to novice users, but advanced users struggle with these as well. I’m a programmer and I don’t read error dialog boxes. I have trouble remembering the kaleidescope of urls and apis I see on a daily basis. I also have tons of trouble using a mouse: it’s slower than a keyboard, it’s unforgiving with those pixel perfect click zones, and it’s really laggy on a remote computer. I know a company that built an expensive database system to store lots of precise technical records. To save money and speed up development they left out all data validation because their users were a small group of highly trained experts. Shortly after launching they started a massive effort to add validation onto the application because even highly trained experts make mistakes. They get sick, or move too fast under deadline pressure, or any number of things. And that’s under the best conditions.

The epiphany for me was that usibility is not just for novices, experts need it too. I used to think usability was just a nice extra for power users, now I realize it’s often essential. At the least, it makes life better. As Joel points out, the large handles on hotel showers might be there for disabled people, but everyone finds them nice to use.

I recommend that you read this book if you are a programmer. It’s easy and fun to read and it will get you pointed in the right direction.