Microsoft: Designers, Designers, Designers

The now infamous Steve Ballmer tirade of "Developers, Developers, Developers" has turned into one of the worst tech jokes around, however Microsoft seems to have tweaked it a bit for the launch of Windows Phone 7 Series with the inclusion of a 69 page PDF. They now seem to care immensely about designers.

Windows Mobile Apps have always been ugly and navigational nightmares. Microsoft's native apps sucked and 3rd party apps sucked even more. With the launch of the Windows Phone 7 Series SDK Microsoft has obviously been studying Apple's tactics as they just unveiled a 69 page document alongside the SDK launch entitled "UI Design and Interaction Guide" (http://bit.ly/bHGWOF). The document is strikingly similar to Apple's "Human Interface Guidelines" it publishes for the Mac and iPhone OS designers and developers. These documents outline how to design intuitive apps for the platform. They outline the design goals for the platform and user expectations to be aware of, but they also dive into the nitty gritty details for good UI design like the correct margin and padding around buttons and which font colors are to be used in particular situations.

Why does this matter? Because people want polished thoughtful apps. Aside from one hit wonder apps like iFart, the majority of the longstanding top selling iPhone apps are impeccably designed and executed. They follow Apple's conventions by default and stray only when it will actually enhance the user's experience. Microsoft is going for the jugular with Windows Phone, trying to create the first true iPhone competitor.

They are dictating screen resolution, GPS, accelerometer, memory, CPU, even the number of physical buttons that can exist on a device. This level of control allows for manicured apps that will run well on every Windows Phone. This is critical. Android has struggled with this. They have not established a strong design language, which has led to a hodgepodge of app quality and interaction metaphors which makes it difficult to just "know" how a new app works. iPhone users generally know how a new app will work and this is good for users, developers, and Apple.

Microsoft signaling to designers that they care enough to author a document outlining the specifics of the platform at launch is big. It means they are serious about world class apps being developed, not just knock offs and shoddy ports. The question is, will designers and developers deliver?

Will Your Next OS be Cloud Compatible?

Louis Gray recently posted about the future of Apple's OS efforts in his piece, Will The Mac OS X Dial Go All The Way to Eleven?. He points out how little attention has been given to answering the question of "What's Next?" for Apple in particular and OS's more broadly. Louis accurately points out that Apple's recent OS upgrades focused on polish, adding a few consumer facing features, and UI tweaks. They have not been challenging the core assumptions of interacting with your computer in the age of the internet and true web applications. This got me thinking about what will be next. What should a modern OS do for people?

There is so much hyperbole around "the Cloud" these days you could nearly choke yourself, but that doesn't mean it is all unwarranted. People are getting too juiced up, yet there is a change happening. More and more of my information is being stored by the likes of Google, Facebook, Flickr, Twitter, and the rest of the current web darlings. Also undeniable is the fact that more and more apps, once relegated to live a solitary desktop only life, are finding their way to the web due to advances in web technologies such as Flex, Javascript, and the nascent HTML 5 combined with the steady increase in computing power available in an on-demand model.

The OS's of today have little to no knowledge that this shift is occurring. Their only real connection to all of this is through the browser. As we spend more and more time in the browser the question arises, "Do I need anything other than a browser?" Google's Chrome OS certainly (from what little we know) is a direct response to that question, but I think there is more to it than that.

We use the browser so much more now because many of the apps we want to use are better when connected to our friends, our other data, and accessible anywhere in the world. The browser has been the client app that has bore the burden, but that is due to a deficiency in the core OS, not other apps. The point of the OS is to abstract the hardware of a particular machine and make it easier for developers to spend time building specific value, rather than coming up with ways to get pixels displayed on screen or recognize mouse clicks. The OS of the future needs to abstract away the complexity of distant storage and distant compute resources. 

What we really want is the OS to not only abstract the local hardware, the machine sitting on your desk, but the hardware of distant datacenters. Allowing application developers to seamlessly and effortlessly deal with storage and compute without having to make a distinction between local and distant. There is no reason the OS can't do this.

It is already being done, not for consumer OS's, but by companies like Google and Facebook. They have created software to abstract their enormous number of servers, freeing their own developers from worrying about the hardware apps like Gmail or Newsfeed are deployed too. I realize it is not as simple as I make it out to be for developers at these companies, but they are no doubt benefiting from a platform their respective company is building to help reduce the effort required.

These companies are trying their hardest to make their massive cluster of servers look like a single computer to their app developers. This same model should be adopted by Apple, Microsoft, and others for the consumer OS. How can you treat my single machine as a part of a larger cluster gaining the benefits of the Cloud, while still maintaining the advantages of local resources, mainly the fact that latency is orders of magnitude less on my own machine compared to communicating with servers around the world.

The OS of the future is not about providing the solutions to consumer's problems, that is the responsibility of app developers. The OS needs to provide the hooks for app developers to build compelling experiences. Even though the current OS's we use everyday are severely handicapped in their web awareness, we still have apps that work better on the desktop then in the cloud. Imagine when these apps can have the best of both worlds.