
An unknown error has occurred.
Sound familiar?
I'm not here to explain Defensive Design for the Web. 37signals have already done that, after all. What I am here to do is point out how helpful it is having a mindset that doesn't expect things to go smoothly all the time. In fact, I'd like to rephrase that: Expecting the worst is probably the best you can do.
Let's start with software developers, and something I've noticed with most of them: They assume that their software works. Not because they're arrogant, but because in building and testing it (and even testers I believe sometimes fall into this trap), they do things the way the system is designed to. They live according to the rules and parameters. This isn't necessarily a bad thing, but it creates a not-so-obvious problem. You see, most people who end up using any system don't understand or care about the rules, or about how the system was designed. In many cases, they don't even really understand the problem the system was designed to solve in the first place. They use the system because they don't want to think about that stuff. They need the system to work for them, so that they can continue to spend their time on other things the developers haven't thought about (and thus don't want to, or need to worry about). In most cases, good systems are those that guide users with the assumption that they don't understand how things work, pro-actively expecting them not to. Simple really, but still constantly overlooked.
I've become more and more aware of how important handling exceptions to what's expected really are. Not just in software, but in business (and thus life) in general. Effective exception handling is a rare skill that not many people possess. It enables you to get things done so much more efficiently - mainly because when you expect exceptions as a rule, you're pro-actively thinking about how to do things to avoid them in the first place. When you're doing that, you tend to presume that whoever you're dealing with in any given scenario doesn't understand (or isn't aware of) what you're offering/doing/asking. If you're thinking this way, you tend to plan and bring across what's going on much clearer than you usually would, and ultimately making provision for misunderstanding as a given. Personally, I think this is good.
Too difficult a mindset to have and keep up in everyday life though?
You tell me.