Efficient
Commands are scannable, giving users just the right amount of information at the right time.
Informing
- Keep users informed when processes are known to take time
- Give users time indicators when possible
- Use loading bars showing progress when possible
- Make things time out and notify users promptly
- Assume users need support
Robustness
- Ensure your program validates user input
- Ensure your program can recover and bring the system back to safety
- Ensure your program terminates when it’s invalid or fails
- Ensure system resilience by implementing retries and failovers
- Ensure your program cannot be misused or abused