The cardinal error of design

The cardinal error of design is to survey your users, observe what they do, gather your use cases, understand the use cases in detail, and then design your artifact to embody each of those use cases as directly and faithfully as possible. It’s to design your artifact explicitly according to the way it’s supposed to be used.

Wait, what? Isn’t this how you are supposed to do design?

It’s not. People will not use your system the way you designed it to be used. It’s a mistake to assume it will be used one way, or five different ways, or as many ways as you’ve explicitly enumerated. However many distinct use cases or paths you identify, people will use it in more ways. They’ll use it their way. They’ll combine different ways and jump between one use case and another. Or they’ll interpose a different product in the middle of using yours. A well-designed product accepts that actual use patterns are emergent. You cannot list them, but you can hope to facilitate as many patterns as possible beyond the ones you’ve envisaged.

Continue reading

Time for one OS – Android

It’s time to have one operating system, and it will be Android. Yes, on everything. Google’s world domination will succeed.

There are two sets of things an OS does. It’s a user interface, app sandbox, and hardware abstraction. Android does these really, really well. It’s a fresh UI for fingers rather than mice. It’s the first to offer proper sandboxed security, so we can install apps written by random strangers, like we wanted to do since the 80s. It runs on everything and it’s free.

The other job of an OS is to be a deployment target for apps. A few years ago, the bulk and complexity of these APIs ensured the dominance of Windows. Now, the lock is breaking. Software is becoming a service. You don’t buy software, you download the app to access the service, or it’s just a Web page. Legacy software like Microsoft Office can run in VMs, or in the cloud.

Continue reading