So, farewell then, Google Wave, perhaps the ultimate example (for now) of what happens when you let a bunch of software engineers design a product.
Good product design starts with a single problem. The product becomes a way to solve that problem. Technologies are developed and added strictly as needed to solve the core problem. Keeping that focus is perhaps the hardest part of product design; it’s always tempting to add one more feature or option, often simply because it’s technically easy to do so.
Another way of looking at it is that there’s a circular flow:
- Marketing finds out what the customer needs.
- Designers develop the concept and write it up.
- Product management plans development.
- Engineering builds the product.
- Technical writers fill out the documentation using input from the original design documents and from engineering.
- Marketing takes the finished product to the customer.
I’m simplifying; in reality there’s continuous information flow between the stages. They’re all important, though — for instance, if you marginalize design and let marketing dictate directly to product management and engineering, you can get a disaster like Buzz.
With engineering-driven development, the flow is linear, and rather different:
- Engineering comes up with a bunch of cool technologies, and throws them together into a big framework.
- Product management comes up with some ideas for what the whole mess might be able to do, based on comparing functionality with already successful products.
- Designers apply some lipstick to the pig, often by making it look like something else that’s familiar.
- Technical writers look at the source code and the minimal design notes from engineering, and try to come up with some kind of documentation.
- The whole mess gets thrown to Marketing, who try to sell it to the end user as the next great revolution in something-or-other.
- After a year when almost nobody is using it, it’s quietly buried and never spoken about again in polite company.
- Any technologies that people seemed to particularly like are incorporated into other products, usually after renaming them to disguise their embarrassing past.
A special case of the above is when engineers decide that an existing product needs to be reimplemented using a new and more fashionable programming language or software technology.
I’ve seen quite a lot of engineering-driven development over the years. Without naming names, there’s a division at IBM that has a long history of it; you might be able to think of a few of their dead technology-driven products.
It’s not that engineering-driven development results in products that are useless. They usually do perform useful functions, it’s just that they don’t do any of them particularly well — or at least, not as well as products that were actually designed to solve specific problems.
So it was with Google Wave. It was a pretty good way to collaborate on documents, but it was much more complicated and harder to learn than Google Docs. It was a neat tool for D&D games, but not as good as (say) Fantasy Grounds. It was a replacement for e-mail, except nobody really wanted their e-mail replaced. It could help you plan when to have a meeting, except it was much more complicated than (say) Presdo. It was a good way to chat with friends, except it didn’t connect to XMPP and you had to log in to it. It was a useful tool for project planning, but lacked the focus of (say) BaseCamp. The live simultaneous updates feature was cool for working on a document, but the UI was much more cluttered and intrusive than Google’s own EtherPad.
The last of these comparisons indicates another sad feature of engineering-driven products: they often result in better products being killed, because the older narrowly-focused product with last year’s technology is perceived as competing with the big new project with all the cool stuff in it.
If you ask an engineer why an engineering-driven product failed, they’ll usually say that it’s all because marketing failed to communicate the product’s awesomeness to the world. They understand the product, and they’re sure that if only everyone else could understand it, they’d love it too. They vow to make the next product even more awesome, by sticking even more disparate technologies into it. And so the cycle continues for as long as engineers are allowed to design products, until the company goes bust.
There are rumors that Google are working on a competitor to Facebook, perhaps focused around social gaming. I do hope that this time, they’re not letting engineers design the product, because Facebook could really use some open competition.