We talk about “destructive” actions like Delete and Remove as if they were in a special class requiring special protection. In reality, nearly all actions both create and destroy. Changing my document view for Print to Outline “destroys” one presentation of information for the sake of another. The question to ask is, “how serious are the consequences if the user does this action by accident?” Accidentally adding an unwanted “friend” to a list can be just as bad as removing a wanted “friend.”
The guidance you’re looking for is:
The user should be able to reverse any discrete action with the same or less amount of work it takes to complete the action.
If there is a clear means to reverse an action that takes less than 20 seconds of work, then the action should not have a confirmation.
If it is technically infeasible to provide a means of reversing an action with less than 20 seconds of work, then the action shall have a confirmation.
Reversing an action may mean selecting Undo, and that is certainly a good way of doing it. However it could be any clearly apparent way to reverse the action, including redoing it from scratch. If the user can add a friend in 20 seconds, then removing one should not have a confirmation.
Note this means that confirmations tend to be overused. It doesn’t matter that the user is deleting a 500-page novel that took 3 years to write. If it can be recovered by pulling it out of recycling (or hitting Ctrl-Z), then it doesn’t need confirmation. Personally, I run Windows Explorer with Delete Confirmation turned off, and I’ve yet to regret it.
This applies to all actions, not just destructive ones. Should you confirm exiting the application when everything is saved? If re-entering it means merely double-clicking an icon and scrolling, no. If it means going through an elaborate 45-second login process, then yes.
What’s so special about 20 seconds? It takes about 2 seconds to click a confirmation. I figure that 10% of all actions are errors (that’s probably being generous). If you add a confirmation to an action that takes less than 20 seconds to reverse, then on average you’re creating more work than you’re saving the user.
Add to that the fact that confirmations often don’t help the user anyway. Misuse and over-use of confirmations has trained users to dismiss then out of habit, usually without reading them (I’ve more on that at Of Dialogs and Detritus). Furthermore, often users don’t realize they’re making a mistake until after the action is committed and they see the results. Confirmations are primarily good for catching slips of the mouse or finger. Otherwise it’s better to provide:
Clear indications of what each command does.
Clear and immediate feedback of consequences of each command.
Clear and fast means to reverse the command.