Design for error
Some guidelines:
Put the required knowledge in the world. Don’t require all the knowledge to be in the head. Yet do allow for more efficient operation when the user has learned the operations, has gotten the knowledge in the head.
Use the power of natural and artificial constraints: physical, logical, semantic, and cultural. Use forcing functions and natural mappings.
Narrow the gulfs of execution and evaluation. Make things visible, both for execution and evaluation. On the execution side, make the options readily available. On the evaluation side, make the results of each action apparent. Make it possible to determine the system state readily, easily, and accurately, and in a form consistent with the person’s goals, intentions, and expectations. —p140, The design of everyday things
Any error that can be made will be made: (see also Murphy’s law)
Assume that any error that can be made will be made. Plan for it. … Try to support, not fight, the user’s responses. Allow the user to recover from errors, to know what was done and what happended, and to reverse any unwanted outcome. Make it easy to reverse operations; make it hard to do irreversible actions. Design explorable systems. Exploit forcing functions. —p200, The design of everyday things