Good software is a meal, not a kitchen
When you go to a restaurant and order a dish, you expect the chef to make a dish that’s ready to eat, without you having to specify anything. And generally speaking, that dish is going to work out great for you. Sometimes you might be on a low-carb diet, and you need to ask them to “hold the bun” or something like that (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, and the software goes ahead and does 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, where 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 is making the user a chef, and providing a full kitchen, rather than taking on that responsibility in the software and allowing the customer to enjoy to well-prepared dish.
I find myself coming up with these stories, like comparing our product to a restaurant, to give the developers tools for thinking about the software in ways that will help them make good 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 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.