Here’s a summary of “User Interface Design for Programmers” by Joel Spolsky. I think it’s great!
1. Controlling Your Environment Makes You Happy (see above)
2. Figuring Out What They Expected
Finding out the user model by asking them. If your program model is nontrivial, it's probably not the same as the user model. Users will assume the simplest model possible.
3. Choices
Every time you provide an option, you're asking the user to make a decision. It's the designers' responsibility to make choices for users so that they don't have to.
4. Affordances and Metaphors
When the user model is incomplete or wrong, the program can use affordances or metaphors to show the users its model. Tabbed dialogs are a great affordance. It's obvious which tab you're on.
5. Broken Metaphors
When you use metaphors, try to make them behave in predictable ways like objects in the real world. Violating reality is just confusing.
6. Consistency and Other Hobgoblins
Good UI designers use consistency intelligently, and though it may not show off their creativity as well, in the long run it makes users happier.
7. Putting the User in Charge
Let people do things in whatever order they like.
8. Design for Extremes...
so that your product can be used under extreme conditions, and so that your product is more comfortable to use under normal conditions.
a. Design for people who can't read.
b. Design for people who can't use a mouse.
c. Design for people who have such bad memories they would forget their own name if it weren't embossed on the American Express.
9. People Can't Read
Users don't read the manual.
Users don't read anything.
10. People Can't Control the Mouse
Users can't control the mouse very well.
11. People Can't Remember
Design for dolts, you'll have a lot more customers.
12. The Process of Designing a Product
Use activity-based planning for design, rather than program
features. Evaluate which features support the most important
user activities. Invent Imaginary Users before you design
your UI. Watch Out for Unintended Consequences (Apple's expanding trash can).
13. Those Pesky Usability Tests
You Don't Need to Test with a Lot of Users (5)
You can never accurately measure the usability of a
software product.
14. Relativity: Understanding UI Time Warps
To fight boredom, create the illusion of low latency. Good UI
designers use three tricks to do this:
1. Always respond immediately to the user's request (alink)
2. Find creative ways to break up long operations
3. When all else fails, bunch together all the slow operations
15. "But...How Do It Know?"
A good heuristic is obvious, easily undone, and extremely
likely to be correct. Other heuristics are annoying.
16. Tricks of the Trade
Know how to use color
Design in black and white. Add color for emphasis, when
your design is complete.
Know How to Use Icons
Know the Rules of Internationalization
17. Designing for the Web
On the Web, every click results in a round trip to the server, which reduces usability. Design to minimize round-trips. The fewer cool Web features you use, the more usable your site will be.
18. Programming for Humans