Redundant options kill user productivity.
I am not sure where I first saw an undo option for a web app. It was either GMail or BaseCamp.
It is a simple user interface enhancement. A user clicks a button to do some type of destructive action (deleting an item, etc.).
Pre-undo, the standard web operation was to ask via a confirmation button, “Are you sure?“.
With an undo workflow, you remove the confirmation step, perform an action, and give the user with an option to go back if necessary. 99.999% of the time users never accidentally invoke the destructive action. The confirmation is not needed. With an undo workflow you can handle the .001% use case.
The ‘do’ and then ‘undo’ work flow is great. But when a confirmation step is added it sours the entire experience.
Here is an example from our support/ticketing app:
Step one: Select Your Options
Step 2: Confirm Your Choice
Step 3: Undo
Step 3 works great (tested for this post). The choices in step #1 are clear. The work flow would be much more productive without step #2.
It is not always possible to restore an item, so sometimes a confirmation is necessary. But if you can undo an action, a confirmation is never necessary.