Window Systems Should Be Transparent, Rob Pike
http://doc.cat-v.org/bell_labs/transparent_wsys/transparent_wsys.pdf
Here's an outline of principles and lessons:
-- Examples
Design with a specific customer in mind.
Minimize mouse activity.
Don’t second guess the user.
Use consistent mechanisms for related actions.
Make the common cases easy.
Put features where they only need to be implemented once.
Speak the language you understand.
Be prepared to redesign as experience accumulates.
-- Simplicity
Simple systems are more expressive.
Don’t clutter the display.
Program the inputs, not just the outputs.
Confirmations don’t work.
Icons aren’t useful to overlapping window systems.
Design the elements of the interface together.
Choose a design and stick to it.
-- Convenience
Keep menus short.
Don’t use cascading menus.
Balance the benefit of a feature against its overall cost.
Remember what the user did last time.
Don’t make the mouse ratchet across the screen.
Keep activity localized on the screen.
-- Responsiveness
Bind actions directly to their consequences.
Don’t change state unpredictably.
Don’t make the user wait.
-- System issues
Tie the user interface to the ideas in the system.
-- The ideal
Make the user interface invisible.