Wednesday, January 9, 2008

The psychology of user interface (part II direct manipulation)

In part I of this series, I discussed the concept of spatial visualization, and proposed that the antidote to problems with interfaces that require too much spatial visualization is a concept called direct manipulation. Direct manipulation is really all about making stuff obvious to the user. Its about making things physical, and almost tactile. It is about making all our software suck just a little less.

But first a little on action-at-a-distance

I sometimes find it easier to start by explaining the negative corollary to direct manipulation which is a concept called “action-at-a-distance”.

Action-at-a-distance is the concept of manipulating something in front of you and having it change something somewhere else out of your immediate view. For example, imagine picking up a fork and having it knock a book off the bookshelf in your bedroom. That would be an unpredictable and unexpected outcome.

So action-at-a-distance is when there is an result that happens some metaphorical distance from the user's initial action. There are two problems with action-at-a distance. The first is the unexpected result of the action. But the second more troubling aspect of it is that even after you might be expected, through experience, to know that lifting the fork knocks the book off the bookshelf, you need to *remember* that the book will be knocked off the bookshelf every time because you will have no cue that it happened.

This is where spatial visualization comes in. Because while some people will be able to remember the linkage between the fork and the book, many more will not remember and even more will *never even understand* that that lifting the fork knocks the book off the bookshelf because they could not visualize it. These people will never understand your software. There are lots of these people, and most of them are not dummies.

And now onto direct manipulation

Direct manipulation is really just a fancy sounding expression for making things as “physical” as you can. When you modify something all of the important effects of that manipulation should be at the surface of your interface. A simple example of this might be a commerce program where, when you change the items in your shopping cart, it immediately recalculates the cost of the items in the basket and displays that on the screen. Better yet, the idea of a scroll bar in a text editor. When you move the scroll bar, the text changes.

Another element of direct manipulation is hinting. This is when the software senses you are *about* to do something, it lets you know what the implications of what you are about to do might be. For example, when a drawing program shows the outline of what you are dragging, and turns the cursor into an X to show that dropping the item there wont work, that is hinting.

But part of the problem with the direct manipulation concept is that until recently, it has been nearly impossible to implement within the web browser. Essentially *everything* in the web world was action-at-a-distance. This is because, what you did was very indirect manipulation. There was no immediate feedback to let you know if you were doing the right thing. You can't have direct manipulation where every action must be sent to the “brain” by clicking the enter key and waiting for a refresh.

The advent of Ajax and Flash with Flex has allowed developers to create applications that can implement very effective direct manipulation interfaces. But we are just at the tip of this iceberg.

I love widgets

One of the things that I most enjoyed doing in my early software writing years, was creating “widgets”, or on screen software objects within my applications, that mimicked some aspect if the information model, to make it easy for people to explore and manipulate the information.

For example, imagine being able to click on a magnifying glass tab in the corner of an icon on your desktop and having a mini viewer instantly zoom open along side the icon that would allow you to browse the document. This kind of thing would feel very physical. It is the antithesis of the web page model.

Suck less

What I am really preaching here is that we have gotten very far away from physical tactile user interfaces that allow manipulation that provides direct logical feedback. This kind of thing is definitely possible now on the web, and some developers are beginning to take advantage of these technologies and techniques. But we are not there yet, because, well you know, for the most part things still do really do suck.

Continue reading part III.

3 comments: