Google Blogoscoped had an entry yesterday about my statement that, whenever possible, everything should have undo.
The comments on that story had the usual mix of no-so-great usability suggestions (putting options and settings everywhere), and a few good ideas, but it also had one comment that was so remarkably wrong that it brightened my whole day:
While an Undo feature could be useful, isn't this just coddling people who should otherwise be paying closer attention to what they are doing? A mistake is a mistake, and people need to learn to live with the consequences of the mistakes they make.
This comment may have been a joke, but I really like this "tough love" approach to usability, because in just a few words it perfectly captures the exact opposite of what we should be doing.
To design great products, we must truly empathize with our users, and understand that if they are having problems using our products, is more likely our fault, not theirs. This isn't the same as the disdainful or patronizing attitudes too often expressed by engineers and other technical people. Our users aren't dumb, they just have better things to do than waste time understanding poorly designed software.
As for "undo", in general, the more we can lower the costs of making mistakes, the faster we can move. This applies to everything from interfaces (I type fast because I have a backspace key) to societies (people are more likely to start new companies in cultures that are accepting of failure).