Good software is a meal, not a kitchen
Here’s a little story about usability.
Imagine you go to a nice restaurant and order your favorite dish. You expect the chef to deliver a meal that’s ready to eat, without you having to specify anything. And generally speaking, that dish is going to work out great for you. Now, if you’re on a low-carb diet, you might ask them to “hold the bun” (understanding that the chef might not be able to accommodate you). But normally, the chef sends you something good and you eat it, and you don’t need to make any modifications in its configuration.
That should be one of the goals of our software as well. The user should be able to “order” a feature or function in the software. The software then goes ahead and serves that feature or function in the right way that will make the user happy and solve the problem and create business value. If the user has to make some modifications to their order, they can, but those changes should be the exceptions, not the rule.
Developers like making stuff, so they give their users kitchens
The natural inclination of software developers, though, is to make software that’s highly configurable. The user has to make a lot of decisions every time, and the software itself makes as few commitments as possible as to what the “right” way is. Or, to use my metaphor, it’s as though the software assumes the user is a chef. It provides a full kitchen, rather than taking on that responsibility in the software and allowing the customer to enjoy a well-prepared dish. (And it might be a terrible kitchen experience, at that.)
Why do I tell this story? I find using metaphors like this restaurant-vs-kitchen comparison, helps my developers identify more closely with users. It gives them tools to help make better decisions about usability without my help. Of course I want them to come to me when they have questions. But by giving them better instincts on usability – and metaphors are a good way to do this – they are much more able to come up with good solutions themselves.
What usability metaphors do you use with developers?
What are some of your favorite metaphors for improving the instincts of your developers? By the way, a hat tip to Alan Cooper (@mralancooper) who used another restaurant metaphor – about an excellent waiter – to talk about software politeness in his fantastic book The Inmates Are Running The Asylum.