GUI Bible: Application Interface Design Fundamentals For Software Developers
As tools to design and create new software and Web applications become easier to use and cheaper to buy, a new army of developers and software engineering is ushering a tidal wave of more complex tools, difficult web interfaces and applications with great ideas behind them but no usability strategy.
Benjamin Roe comes to the rescue with his highly acclaimed Usable GUI Design: A Quick Guide. This indeed a well thought-out and insight-rich essay highlighting five key principles to be used at all times when developing a user interface for an application.
I strongly recommend developers and software entrepreneurs to understand early rather than late how critical GUI design has become in determining the market success and the potential rapid adoption of a new technology.
Here is Benjamin Roe's shortlist of critical items any software developers should address when designing a new application's interface:
A) The user is not using your application
The most basic point in all computer UI design is that the user does not want to use your application. They want to get their work done as quickly and easily as possible, and the application is simply a tool aiding that. The more you can keep your application out of the way of the user, the better. "Imagine users as very intelligent but very busy" "No matter how cool your interface is, less of it would be better"
- "Imagine users as very intelligent but very busy"
- "No matter how cool your interface is, less of it would be better"
The following four points are all specific derivatives of this first one.
1) Fitt's Law
This is the most basic and well known of UI design laws. It states that the larger and nearer to the mouse pointer an on-screen object is, the easier it is to click on. That's common sense, yet it is often completely ignored in UI design. Controls that we want to be easy to hit should be positioned at the edges or corners of the screen.
- Make commonly used controls larger and distinctive
- Use the edges and corners of the screen to make your controls virtually infinite
- Never, ever put controls 1 pixel away from a screen edge or corner
2) Unnecessary interference
When a user is working, their attention is on the work they are doing. Every time they have to move their attention away from their work to the application, it takes time for them to get back to where they were in their work. Therefore, you should minimise the amount of distraction and interference your application gives the user. An example for this is confirmation and progress dialogs.
- Don't put road blocks in the way of your users
- Only pop up a dialog if it contains useful information
- If at all possible, use non-modal status indicators
3) Use the power of the computer
It would seem a good idea, to shift as much work as possible off the poor, worn out human and on to the untiring, super fast computer in front of them. In user interface design, the implication of this idea is clear: every time there is a decision to be made or work to be done, try to make the interface do it for the user. If computers have so much storage space available, why do so many applications forget my settings every time I exit them?
- The computer is powerful: use the computer's power to help the user
- Make similar items easy to distinguish between
- Remember application settings
4) Make items easy to distinguish and find
This point is pretty simple: items on the screen that do different things should be easy to see and differentiate from each other. For an extreme example of attempting to make actions easily accessible and failing, look at Konqueror's default taskbar:
- Make items that do different things distinctive
- Don't overwhelm your user with choice
- Make the currently selected or focused item easy to distinguish and read
More info here too:
Benjamin Roe GUI Principles FAQ
Benjamin Roe is a Free Software advocate and the main developer of SiEd, a GPL-licensed text editor for Palm OS devices. Benjamin is pursuing a PhD in Process Scheduling at the Centre for Process Systems Engineering, Imperial College, UK.
blog comments powered by Disqus