I recently took a trip to Boston with some fellow coders for Boston Code Camp, held at Microsoft’s New England Research & Development campus (aptly acronymed NERD) in Cambridge. Despite the name “Code Camp” there’s nothing “campy” about it; it’s a day-long conference about Microsoft products, research, ideas, and coding paradigms. Now, I’ve never been pro-Microsoft. I’m not exactly anti-Microsoft, either, but all you have to do is take a look at the devices to I have to see that Microsoft products are definitely a minority. I have a Samsung Galaxy S3 (Android), an ASUS Transformer Infinity (Android), an ASUS T101MT/Multitouch Netbook (Ubuntu Netbook). My laptop (MSI GX740) is dual-booting Windows7 and Ubuntu 12.04, while my desktop is running Windows 7.
I find that I keep Windows around for two distinct purposes: Gaming, and programming. And programming in Windows is almost strictly relegated to Windows architecture/languages (.NET languages). I’d argue that 90% of my Java, assembly, and VHDL programming is done in Ubuntu on my laptop. I probably haven’t programmed in .NET languages for well over a year and a half, now. As for gaming, well. That’s not going to change any time soon. PC gaming is practically married to Windows, so unless I want to game on consoles only it looks like I’d have to keep Windows around just for that.
So, my non-Windows devices outnumber my Windows devices 2:1. And I, like many others, thought that Windows 8 was a mistake. A huge mistake. Between having WindowsRT run strictly on ARM processors, and Windows8 basically containing two operating systems (the “metro” UI, and a more traditional UI), it all seemed like overkill. Running Windows8 on a laptop or desktop made no sense to me.
One of the panels at BCC was a “Crash Course In Windows 8″ and covered some of the core Windows8 fundementals, as well as programming issues and how to solve/avoid them. I walked away from this having seen the light. The problem isn’t that Microsoft has made a bad product — the problem is that Microsoft has made a good product that we haven’t figured out how to use yet (and now they have two good products on the market competing against each other). However, they have made a few missteps along the way.
First thing: Windows8 Tile interface and WindowsRT are perfect for tablets. One of the things that Microsoft is really stressing is uniformity. They’ve taken a page from Apple’s book and are enforcing app standards in the Windows Store. They’ve published documentation and guidelines for apps, right down to the size and font families for headers, subheaders, bodytext, and footnotes. They’ve taken the notion of traditional Windows apps and thrown them out the window, instead focusing on full-screen apps, like Android and Apple both utilise on the iPad and Android tablets. They’ve published guidelines on how to utilise whitespace as separators, instead of using boxes to separate content. And they’re pushing for intuitive and unified control via context menus instead of buttons and other form controls that sit in-app. I think this is really a great step forward. I do think that the Tile UI is intuitive and easy to manipulate (both from a programmer’s point of view and a user’s point of view).
Now, the misstep: Windows8 Desktop. It makes no sense to have Windows8 Desktop UI and Windows Tile UI rolled into one product. They really should have been branched off into two separate products. If you’re on a tablet where the Tile UI makes sense, in most cases you don’t have the processing power (or battery power) to run regular Windows8 apps for very long, if at all. So there’s no need for the Windows8 Desktop UI. But — if I’m on a desktop with no touch interface, than having the Windows Tile UI isn’t very useful. They really should have been split into two concretely separate products. However, if they had done that I’m not entirely sure that Windows8 Desktop UI version would have even been necessary; I don’t forsee many people (private or enterprise) moving away from Win7 anytime soon. Windows8 Desktop UI does have it’s own set of kinks that still need to be worked out, too.
I don’t think I’ve ever walked away from anything in my life wanting a Microsoft product. I’ve never said to myself, “I really wish I had it just so I could play around with it”, but I found myself wanting Windows8, or at the very least WindowsRT. I want to play with it, roll it around in my hands and see what I can come up with in the Microsoft Store. It looks fairly intuitive to program for…
Speaking of which… Windows8 is a GREAT stepping stone as far as convergent programming goes for Windows Phone 8. With this iteration Microsoft developers are one step closer to having ONE set of API calls for both Windows Desktop OS and Windows Phone OS. I’m really excited about this! Assuming that Microsoft Phone OS manages to gain a larger footing and holds on in the handheld market, it looks to be only one or two iterations away from a fully unified API set. This is really pretty cool… Code once, distribute across two (or three, if you consider tablets to be an entirely different machine type and not a subset of PCs) different device structures.
I would definitely keep an eye out for the next iteration of Win8 (Windows Blue?) because I think that by then Microsoft will have learned from their mistakes and have a really robust platform with some pretty cool features.