Pattern from Richard Griffiths

Give a Warning *

. . . . users  may be able to execute actions that can have serious unintended consequences, so encourage or make them to THINK TWICE.

A user may need to be alerted to the consequences of a proposed action, but will resent interruption in the flow of execution of their task if the action is in fact correct.

When an expert user is engaged in a flowing task, the (software) tool that they are using disappears from their conscious perception.  This is a key idea of Heidegger's that Winograd and Flores use in their influential book, "Understanding Computers and Cognition".

In general, the design of a software tool interface should allow this mode of work, and not call attention to itself until a breakdown an error occurs, or an adjustment has to be made.

However, some actions may have consequences that the user should be alerted to where there is a more than usual possibility of the action being executed mistakenly and inconvenience ensuing.    The interface should be designed  syntactically so that inappropriate actions are not available the mistake here is more semantic in that the action may be intended by the user, but may have a side effect that is not desired, etc.  The problem is to issue a warning without causing a breakdown.

Thus, if all other actions are initiated by selecting from pull down menus and releasing the mouse button, this particular action should also.  However, the significance of the action should be drawn attention to.  E.g., while the mouse pointer is over the menu item, a warning message appears along side, the item has a different colour or type face, an exclamation mark is appended to the item, etc.


Where an action should have a cautionary warning associated with it, arrange to present the warning information so that it is noticed by the user, but does not cause a breakdown in the task with which they are engaged.

Other levels of protection may be more appropriate; GET CONFIRMATION, GET AUTHORIZATION, AUTOMATIC OVERRIDE . . . .

An example pattern prepared for the Usability Pattern Language Workshop at Interact '99