This is obviously the Holy Grail of good software design, but it’s also worth noting the value of affordances — the visual cues and text descriptions that can help sidestep errors before they happen. (An example is a little help icon that pops up a tooltip description for a cryptically named field.) I used the a lot when I worked in UX years ago. Great article, though!