Saturday, January 30, 2010

The Humane Interface

It has been a long time since my last post, but it is time to shake the dust off my blog and get back to work. There are a few cool things going on for me including a new book, a speaking gig, and some interesting projects. I'll post about all that stuff in the weeks to come, but for now I wanted to share a book that I am reading, The Humane Interface by Jef Raskin.

Wait, wait! Don't go!

I expect that many of my readers are coders and it might not seem like this posting is for coders, but it is especially for coders. I have been hacking and crafting code for fun and profit for over 20 years now. I have read all of the classic programming bibles, from the Mythical Man Month, to Design Patterns by the Gang of Four. All of them have been about writing the code, or managing the project. But all of these ignore, and rightfully so given their topics, that the success of a project depends on the user liking the product. And the user of course can't see the beautiful domain model, clean code, and vast array of automated tests that you have created. All they see is the interface.

As a coder I had no idea that interface design was a science, and instead always thought that it was an art. But it is a science, and it has nothing to do with nice looking graphics. This book taught me that.

As I read through the book, which I am still in the progress of reading, I have been posting quotes from the book on Google Wave that encapsulate the important bits for me that I know that I need to remember. If you want to read them or post your own you can find the Wave my searching for with:public by:iamroberthanson "Humane Interface". In the rest of this entry I want to share a few choice quotes from the book along with some explanation so that you can see why this book would be a valuable edition to your bookshelf.

"Your Time Is Sacred; Your Work Is Sacred"

This might seem obvious, but if it was so obvious it wouldn't be ignored so often. Raskin discussed this in some length, including why it is important to include undo/redo functionality, the importance of long-lived sessions, and auto-saving. How many times have you filled out a form in a web page and had your information erased? It has happened to me more times than I care to remember. Sometimes it is because I was typing so fast I accidentally hit the wrong key and navigated off the page, and sometimes it is because the session on the server timed out. In all of these cases Raskin believes the application is responsible for not losing any content entered by the user.

The study of the applicable, engineering scope of our mental abilities is cognitive engineering, or cognetics.

This is a subject I was not aware existed, "cognetics". Cognetics is essentially ergonomics, but it is applied to the mind instead of the physical nature of the body. Where ergonomics might take into account the average length of human legs when building a chair, cognetics takes into account the average time it takes for the human mind to switch contexts. Raskin talk about the conscience and unconscious in length, explaining the human capacity for dealing with interfaces, and most importantly how habits are formed and can make an interface faster. Truly interesting stuff.

Fitts' law explains, for example, why it is much faster to move the cursor to an Apple Macintosh–style menu that is on the edge of a display than to a Microsoft Windows–style menu that floats away from an edge.

Laws are something I can understand! As a programmer I know a lot of laws that help me make decisions, and interface design relies on the same thing. In this case Fitt's law defines a formulae for determining the amount of time that it takes a user to move the mouse and click a button. The primary factor being that the larger the target area, the less time it takes to click the button. In the case of the Macintosh the menu-bar is at the edge of the screen, so the size of the target button is in essence larger than what you see on screen since it is impossible to move the mouse off the screen.

For you Windows users, try this experiment. Move the mouse to the File menu in any application and click it. Repeat this a few times to get an idea how long it takes. Unless you are a mouse sharpshooter you will likely overshoot the target often, then need to backtrack a little so that you can click the target. Now repeat the experiment with the command menu (is that the right term?). The command menu is on the applications title bar, just to the left of the name of the application (the menu with the minimize, maximize, and move options). I found that because the command menu was at the edge of the screen I could find and click the target in have the time. And that is all explained by Fitt's Law. Raskin covers other laws and introduces several models for finding the average time for a user to use a particular feature.

There are several other quotes I have noted in the Wave, but I want to stop here, and instead of reading this post I urge you to go out and read this book.


rossjudson said...

Fitt's law works on small displays. It breaks down on my 27inch iMac; huge displays are designed to have more than one application visible at a time. Putting an application on the right hand side of the screen makes frustration.

A "speed bump" on menus might make sense.

Robert Hanson said...

Thanks for the comment. That is interesting, I hadn't really thought about how it applies to non-maximized windows. A speed bump would be interesting. Also using my laptop right now, I wonder how a mouse compares to a touch-pad (or any other touch device).