Human Interface Guidelines
There have been many human interface guidelines published over the years and there are numerous basic rules and guidelines (i.e. keep things consistent). However, as I said there is no one "right way" and as if to back up this even the user interface experts don't agree with each other, you don't need to read much to see the term "the experts are wrong".
I briefly discuss some specific Human interface ideas here but there is much more out there though and I have included a number of links for further reading at the end. There's also links to the "User Interface Hall of Shame" which has numerous examples of how not to do interfaces. There is also a "Hall of Fame" but it is notably smaller.
The ROS (Ruby Operating System) [ROS] has an ultra minimalist approach to usability guidelines, there's only 4 of them. They say a user interface should be:
- Easy to learn
- Easy to remember
- Satisfying and pleasing
Despite the abject lack of details it's remarkably easy to find applications or systems which break one or more of those rules.
The Proximal Interface
One of the most advanced yet seemingly little used concepts in usability design is that of the Proximal interface [Proximal]. The idea is to build an interface which in effect becomes invisible, the user just gets on with their job and the interface is there to facilitate that.
The idea of direct manipulation is used so rather that selecting an object then picking an option from a menu, you can do some operations directly by grabbing or moving the object, the options can be increased by holding a modifier key. Drag and Drop is a perfect example of direct manipulation.
The proximal interface of course includes a number of principles to use when designing user interfaces, these include:
- The principle of graded effort - the most common or most important options should be very easy and direct.
- Distinguish what object the mouse is over and where exactly it is clicked to allow different direct operations.
- The principle of the left hand - Use the left hand to qualify operations (i.e. Left-shift & click).
- Treat a mouse operation as a process, i.e. other operations can happen during the process.
- The principle of visual cues - we remember where we put things, the system should not reorganise them without good reason.
- The irreversibility principle - destroying data (i.e. deleting) should take more effort than creating it.
I think it'll be a long time before we'll see mainstream systems based on these principles though some applications already seem to follow similar principles (e.g. the vector graphics component of Gobe Productive on BeOS). BeOS itself had drag and drop extensively throughout the system.
Interface Arrangement - Fitts' Law
Usability goes beyond the capabilities and arrangement of software. It also applies to the layout of controls on screen, Fitts' law is an often quoted law of interface layout design [Fitts] but originally had nothing to do with computers.
Developed in 1954, Fitts' law applies to random selections of targets in 1 dimension using the human arm, It defines a relationship between size of target, distance to target and speed of acquiring the target.
Computer interaction is really quite different from this, it's in 2 dimensions, common movements are not random and there's mouse acceleration. It's a wonder how anyone came to apply Fitts' law to computers.
Some use Fitts' law it to justify placing menus at the top of a screen as opposed to directly on windows, the rationale is that even though the menu is further away it has effectively "infinite" size since it is at the top of the screen. It may be infinitely high but the menu item is not infinitely wide, the actual aim point is no bigger on the edge of a screen than it is on a window. Fitts' law would suggest that the menu should really be on the window as your mouse is likely to be closer to it (this assumes Fitts' law applies in 2 dimensions).
This also does not take account of mouse acceleration which makes aiming at a specific point on the edge of a screen almost impossible from any significant distance (apart from the corners where your pointer invariably end up). Yet despite this, placing the menu at the top does seem to be better, how can this be so?