Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action.
Jakob NielsenWindows '98 is so similar to Windows '95 because Apple hasn't invented anything worth copying since 1995.
Jakob NielsenUsers spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know.
Jakob NielsenDeveloping fewer features allows you to conserve development resources and spend more time refining those features that users really need. Fewer features mean fewer things to confuse users, less risk of user errors, less description and documentation, and therefore simpler Help content. Removing any one feature automatically increases the usability of the remaining ones.
Jakob Nielsen