I gotta disagree with the entire purpose of this. We should completely abandon "Are you sure?"-style confirmations.
Instead, we should provide rich feedback for the delete action taken, followed by the opportunity to undo. Wrap that up into a re-usable library, and that'll be a real step forward.
I'm with you 100% with the preference for the ability to completely undo any action. That is a more preferable experience.
However, as also mentioned by atian, it always depends on context, and what's available to you. There are situations where I'm writing an app that won't have the ability to "undo" deletes for particular objects. This can arise from API restraints, unnecessary overhead for a trivial object (todo list item as a contrived example), etc. Those scenarios are what I use the deleted library for.
click
Oh crap.. erm did I just delete my bank account? Without confirmation?!
Now sure, you won't find buttons that delete bank accounts often, but that's beside the point. Some objects hold greater weights than others, and it all depends on the context. Having a deleted folder with all of your previously "deleted" bank accounts makes it seem like your interface is one big fun game.
> you won't find buttons that delete bank accounts often, but that's beside the point.
I disagree, because in UX, everything is contextual, and one solution doesn't apply to all problems.
This particular one is so serious, banks usually won't let you delete an account via the web UI.
But for the particular case you described, it'd be much better to have a secondary, full screen / red background display explaining the action the person is about to take, and its results. And no "Are you sure?" pop-up.
In this scenario, a bank would definitely do this anyhow, so adding an extra popup is just an annoyance.
Instead, we should provide rich feedback for the delete action taken, followed by the opportunity to undo. Wrap that up into a re-usable library, and that'll be a real step forward.