Constrain inputs to prevent mistakes. Make recovery easy when they happen.
Good design prevents errors. Great design makes recovery effortless.
- Defaults that are safe
- Validation before commit, not after
- Undo for destructive actions; confirmation for irreversible ones
- Disable impossible actions rather than showing error after attempt
- Recovery path is always visible