Vittorio Vittori

Design System Architect / Senior UX Designer

Visibility of System Status

The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. If the user is asking "is something happening?", the system is failing this principle. If, however, the system consistently understands what is happening, when, and with what outcome, Visibility of System Status is respected.

User-Centered Design
Cognitive load

Background Processes

Activities that are not immediately active remain visible in the system state, preventing the user from losing context or repeating actions already initiated.

Expose background activities in a persistent, unobtrusive way Hide long-running background tasks completely Allow users to check progress at any time Restart background tasks without informing the user Clearly indicate when a background task finishes or fails Assume users will remember actions started earlier

Errors and Problems

The system promptly reports anomalies and crashes, explaining what is happening and whether any action is required.

Explain errors in clear, user-oriented language Display raw technical or system error codes Indicate whether user action is required and what to do next Show errors without recovery options when possible Surface errors immediately when they occur Silently fail or delay error communication

Input and Validation

The status of the data entered is always clear, allowing the user to immediately know whether what they are doing is correct or requires correction.

Validate inputs as early as possible Wait until form submission to show all errors Clearly distinguish valid and invalid states Use color alone to communicate validation status Explain how to fix invalid input Mark inputs as wrong without guidance

Loading / Waiting

The system makes it clear that an operation is in progress and, when possible, communicates its duration or progress, reducing anxiety and uncertainty during the wait.

Show a visible loading indicator immediately after an action Leave the interface static during long operations Provide progress or time estimates when available Use infinite spinners for operations longer than a few seconds Keep users informed if the wait is longer than expected Block the entire UI when only part of it is loading

System and Settings

Configurations instantly reflect their actual state, so the user never has to guess whether a change has been applied or not.

Synchronize UI state with the real system state Require users to reload to confirm changes Confirm when a setting is successfully applied Leave settings in an ambiguous or pending state Revert UI state if a change fails Show a setting as active when it is not

User Actions

Every input produces immediate and perceptible feedback, so the user knows the action has been received and is being processed or completed.

Provide instant visual feedback for every interaction Require users to infer whether an action was registered Disable controls while an action is processing Allow repeated clicks that trigger duplicate actions Confirm completion with clear feedback Rely only on subtle or invisible state changes