Taking Sides
Does your enterprise software have an opinion?
Or does it just provide you with a bunch of tools, and little insight into how to use them?
Jason Fried, at 37 Signals has a seminal post about Opinionated Software. He argues that the best applications “take sides” and provide direction to their users.
From an engineering perspective, the best way to build a flexible solution is to build an abstract one. “Hey look”, said the guy who built SharePoint. “Everything that people do on their intranet is just a list!”
“There are lists of contacts, and lists of documents, and lists of folders, and lists of tasks, and lists of goals… Let’s build a generic list engine, and they can all use that instead of their home-grown corporate intranet.”
But a problem arises when the customer buys into the marketing hype — into the idea of having a central, flexible collaboration center — and then gleefully tears open the cereal box and discovers… an abstraction.
“What’s that?”
“It’s a list engine. You can use it to share lists of all kinds of things, with all kinds of people.”
“Oh. Well, I wanted something that was going to help manage my projects.”
“Oh, it can — your projects are all just made out of lists.”
“They are?”
“Sure! Here, we’ll hire a consultant to explain it all to you…”
If you are trying to delight your customers, you need to step out of the abstraction, and into actual problems. Apple make opinionated software. Steve Jobs doesn’t think you should be able to cut and paste on your iPhone. That’s an example of the design forcing users to behave a particular way.
Part of SharePoint’s success in current iterations has come from partners, and from Microsoft providing users with built in “templates” that allow the user to skip the abstractions, and get straight to work managing projects, or processing insurance claims, or whatever it is they they do.
Abstractions are very, very useful to engineers, but by themselves are not very useful to the people who need to apply them in the real world.
If your enterprise solution is forcing you to learn weird abstractions, chances are the developers don’t really know what you want to do with it.





