Interaction Guidelines
Managing long-running operations
Group long-running operations together whenever possible. Gather as much of the input as possible up front, then perform long-running operations after that. This allows the user to kick off a long-running process, then switch to a different activity.
Don’t freeze the screen or input devices when a command is being processed. Let users continue to work while the command is processing. Separate data processing from data display, splitting tasks into multiple threads when necessary, processing the command in the background.
Responsiveness
Try to keep your user interface within the following standard responsiveness levels:
- 0.1 seconds or less for immediate feedback when the user feels they are physically controlling something, say panning a map in Google Maps.
- 1 second or less for keeping users “in flow”, say generating the next screen when they click a button.
- 10 seconds or less for keeping the user’s attention from wandering, say when starting up a new app or when performing a major operation such as a data query.
Confirm unsaved changes
Prompt the user if they attempt to navigate away from any function that has unsaved changes.
Cancel an operation
Provide a way to instantly cancel a time-consuming operation, unless doing so will result in the loss of data, cause issues with the system, or have other unintended consequences.
This is important because users make mistakes and change their minds. Perhaps they provided the wrong date range for a lengthy query. Perhaps they’re installing software to the wrong folder. Or maybe they’re just bored waiting for a file to download and want to do something different.