June 17, 2009
On the Intelligence of Our CustomersThe other day somebody showed a slide that said "Our customers are not stupid". I objected to this, which led to some laughter. But I was actually serious.
I don't mean that our customers ARE stupid, of course. It's just that with one billion or whatever customers, one must assume that they fall at various points along the intelligence scale, for whatever definition of intelligence you choose.
Although you might feel virtuous in declaring that our customers are not stupid, it's actually dangerous. I suppose it's better than looking down on your customers. But if you say "Our customers are as smart as us, they are just think differently", then you will be tempted to view their lack of understanding about how our software works as a sign that things just haven't been explained well enough. Once they see the model, you expect them to figure it out.
On the contrary, if some of our customers really aren't as smart as us, then you have to design the software so they can understand it. If they can't figure it out, it's not an explanation problem; it's a design problem. Explaining it again may be easier than fixing the software, but it won't help.
Now, I think what the person meant was something like "Our customers needs aren't stupid" or "Our customers' understanding of how our software works isn't stupid." That is certainly correct; you have to know your customers so you can design software that works for them. But if you get to know them and discover they aren't all geniuses like yourself, then that's the way it is.
June 05, 2009
Client+Cloud > Software+ServicesI recently heard somebody use the term "Client+Cloud" to refer to that combination-of-smart-clients-and-the-Internet which is often called "Software+Services". I've decided I like that term much better.
"Software+Services" doesn't differentiate the two parts clearly enough. The Services part clearly has a lot of Software involved in it. And I've realized that a typical "Software" piece really is a Service also. Whether it is sold as packaged software or a download, something that runs on my machine has all the attributes of a service, especially from the viewpoint of a developer: users expect it to be available all the time, they don't like to have to restart it, they want install to be seamless, they expect that problems can be diagnosed and patched remotely. I may not expect 99.999% reliability from Windows, but I basically want it there when I need it (for example, the part I hate about reboots due to Windows Update is not the fact that the computer reboots overnight; it's the five minutes of disk thrashing that happens after I log on, which is effectively "downtime", even though an old-school developer may protest that the machine is up). The fact that developers expected users to patch Windows by hand, to do manual backups, to stop using their machine while we debugged problems, to reproduce bugs on demand--that's all just engineering laziness that we got away with because in the old days we could. All the clever things that developers do to make quote-unquote services highly available and remotely diagnosable can all be rolled back into standalone Windows, and all of them will make it a better product.
Meanwhile "Client+Cloud" really captures the idea much better. You have a piece of software which a rich client of some sort, be it slurped down automatically in the browser or installed standalone, and it runs locally but also communicates with the cloud. So Hotmail, Windows, Xbox, Office, and almost everything else Microsoft is working on fits "Client+Cloud" designation--which means it make much more sense to say that it is the future of Microsoft, since it is also the present of Microsoft.