e accidentally sent this to me; it deserves to be blogged:
I’ve just spent two months carrying a terrible, ancient cellular phone and a mediocre non-Apple music player around the planet, and interacting almost exclusively with Windows XP terminals at internet cafes and hostels. As my frustration with these poor interfaces grew, I started a rough list of interface design guidelines. Here they are:
* The application interface should be fast and non-blocking.
* The application interface should be consistent.
* Don’t interrupt users in the middle of common, nondestructive tasks.
* Avoid notifying users of success.
* Avoid giving users information that they cannot use.
* Rare, destructive actions should be harder to complete than nondestructive ones, but always possible.
* Give users the chance to ask for forgiveness rather than forcing them to confirm.
* Deal with application failure gracefully.
* Preserve state, mode, and user input for as long as it is relevant, until users save or discard it.
* Provide multiple, complete navigation paradigms.
* Design the interface before starting to code.
* If the application violates one of these rules because its design makes implementation of a better interface too complex or too difficult, then the application needs to be refactored until it supports a better interface.
Full story at http://glyphobet.net/blog/essay/269.
Given that developers are notoriously bad UI designers, there is much food for thought.