Bret Victor (n.b. this is one of the best things ever written on the subject of interaction design and graphical interfaces)
This HN comment (sorry, formatting will be wiped out):
Here’s some rules that almost every designer I know ignores:
Map out your interface and interaction trees first
1-click - most common actions
2-clicks - second most common actions
3-clicks - power user level stuff
Put the most commonly used stuff at 1-click or interaction. If you don’t know what goes at 2 and 3 clicks in, you don’t understand how the application is used, because you don’t understand what the most common interactions are. If you’ve run out of room for the 1-click stuff in your UI, then your UI concept is poorly designed. Keep iterating and collecting information until you can fulfill this.
- Don’t put anything at more than 3 clicks in.
- Double the number of interaction points in the UI. Assume the application will grow and add features. If you optimize your design for the number of features you have today, you’ll have no where to put all the stuff you’re going to get over the application lifetime and it’ll all just end up getting buried in menus. I’ve seen lots of gorgeously, carefully, designed applications die a year in because of this.
Double everything and see if that number of interaction points still fits within your concept, that way the interface has room to grow without getting messy.
- Don’t make your users interpret, make them understand.
If your concerned about how universally an icon is interpreted across cultures, you’re doing it wrong. Interpretation is an additional step your users have to go through to use your UI, it’s like putting everything at 2, 3 and 4 clicks in because they now have to not only look and scan the UI for what they want, they need to figure out what each interface item means before they can interact with it.
Even worse, as they grow to become accustomed to your UI, they’re going to end up memorizing location and placement of options because the interface widgets take too long to interpret. Get 2 revisions down the road and you move a button and wham your tech support calls jump 50% because the users never bothered to remember what the symbol for their action looked like, just where it was on the screen.
Everything must be discoverable. This is why the world moved to GUIs from CLIs. Don’t make your users play a 1990’s era adventure game where they have to click every pixel on the screen to see if they can advance their usage. The Flat UI trend is notorious for this.
- Consistency rules. Also see #3.
Eliminate Steps. Map out how many steps certain actions are. Cut them down to as few as possible. I remember one time going through a file import process with a tool, by the time you got the file imported the user had to navigate 27 different steps! Almost every step required minimal or no user input. Nobody had ever bothered to map out the interaction patterns in the tool before but users were constantly complaining about how difficult it was to use.
We reworked the workflow and got it down to 3 steps and user-engagement jumped triple digits.
- After you’ve addressed 1-6, make it look nice.