An important UI aspect is the “Confirm X action.” Some windows os-es even took it a step further by requiring confirmation on _any_ action, thus rendering the whole thing useless. I doubt it made those operating systems less prone to virus intrusions originating from user actions.
The “confirm this action” button is still quite widespread in web applications, but apart from those requiring confirmation of some financial transaction, I do not really see the point.
The more confirmation steps involved in an action the less attentive we are to what we are doing, because instinctively we think of the confirmation button as someone checking over our work to prevent us from making a mistake. This way we delegate part of the thinking to a silly button that is nothing more than an extra bump in the road.
Let’s lose the “confirm” button.
Instead, it would make more sense to have a number of undo steps available after each action, or even a number of undo steps that equals the number of actions (the maximum number of undo step you can possibly have).
It is more work, but if you visualize the problem as a tree like graph of actions, the undo steps could simply traverse that graph in reverse order at any possible node to arrive at any possible other node.
That’s what I would have to call a very well written application.