Most of us have experienced a moment of less-than-exciting Windows failure. Be it a monitor that comes up at the wrong resolution, or a control panel that hangs when you open it, Windows bugs can be frustrating—though admittedly, that’s true of every other desktop operating system.
But there is one major difference between fixing a problem in Mac OS X or Linux, and fixing a problem in Windows: On those other two operating systems, there’s probably only one very specific way to fix the problem. With Windows, there are many paths, from fixing DLLs to hacking the Registry.
From the developer perspective, Windows has long offered many—far too many—ways to develop applications. Too many API sets, too many application frameworks. This problem will be compounded by Windows 8, which includes WinRT, .NET, C++ and HTML5 application support—and more besides, such as Silverlight or even native Win32. At the beginning of the project, the developer must choose a direction. Which is right?
While coding, programmers may run into severe limitations with some of those choices. Developers who choose WinRT will be able to build Metro-style native Windows 8 apps, but they’ll be restricted from fully touching the hardware, and even from touching all of the Windows features, because WinRT is limited by design. Build an HTML5 app for Windows 8 and you’ll be ready for moving to Windows Phone, but you’ll miss out on the native Windows look and feel, and again be shut out from some core functionalities.
Choose .NET or C++, and you’re basically negating all the advantages of Windows 8’s new user experience, but you’ll maintain compatibility with Windows 7 and earlier systems. Of course, using those two technologies also limits your access to the new UI controls offered in Metro, like the swipe bar, the app bar and the semantic zoom. You can’t win.
Anyone who’s ever troubleshot Windows knows that just about every administrative and maintenance task can be done in a half-dozen ways, and only one of those ways is the “right” way. Now it seems developers are still saddled with this “100 ways to do it” thinking. Microsoft: Pick fewer ways to build applications, deprecate the other methods, and make sure that one-way-to-rule-them-all is super optimized, super intuitive, super compatible and never complains that “you’re doing it wrong.” Show leadership by picking a direction—and sticking with it.