Some musings on Microsoft

Over the last few days I have been thinking. A dangerous habit, but an important one. In this case, I've been thinking about why people continue to use Microsoft products. The old adage "Nobody ever got fired for buying Microsoft" is hardly relevent, because it only shows that the people doing the firing are not the same people as those who are supposed to be technically capable. There are three things that have brough on this round of thinking.

Vista Gets It Wrong

First target is, of course, Vista. There are various things right with Vista, from a consumer's perspective. It's pretty (well, I don't think so, but others do), it's new (for some reason that's always a plus point?) and it's touted as the "next big thing" (it isn't). However, there are also a lot of things wrong.

First up is the horrendous networking subsystem. Somehow, the MS techs have managed to make a simple file copy take up 41% CPU. This in itself is obscene, and not something I've ever had a problem with on the various *nix work-a-likes I use. However, the Microsoft solution also defied belief. Rather than fix the horrendous network support, they have instead opted to throttle network performance when the multimedia layers needs CPU time.

Not only is this a breach of abstraction, a short-sighted, hard-coded hack and a sure fire way of shooting yourself in the foot later, it's also a sign of how blinkered Microsoft really are. All users' primary requirement is that multimedia playback (which may or may not include the Aero interface) is uninterrupted and network performance can take a dive, right? Right?

Right ... ?

Second up I won't bother wasting time on, because most people already know. Just type "What's wrong with Vista?" into Google to get the gist of it. From the overarching reliance on DRM for every operation through to the irritating user access controls and horrendous performance, right down to the fundamental lack of decent support for "non-MS sanctioned" hardware, the problems are well in evidence.

Micosoft Is Not Your Friend

A recent outage of the Microsoft WGA servers has highlighted a major flaw in the way Microsoft "fights piracy." Of course, it's long been known that piracy is the least of their worries and it's all about control of the mythical quantity known as Intellectual Property. Put simply, Microsoft wants to own your machine.

The fact that a remote disable exists, and that the default state is "pirate," shows a lot about Microsoft's basic treatment of its customers. Without their explicit say-so, that software you're running? Pretty much worthless (I am, of course, discounting the possibility that it's already worthless.) Of course, MS aren't alone to lock down its OS to the vendors whims. Apple does actively prevent OS X being installed on non-Apple hardware, but they have no way of accidentally disabling your system because of a simple service failure ...

Microsoft Software Just Isn't Good

I'm sure this is the most controversial rant, and I'm sure many will think that it's a matter of personal opinion more than anything, but the problems with working with MS software run deep. There are a few key areas that cause issues.

First is the overreliance on the rather mish-mash approach to just about everything. From the registry to DCOM to .NET to WGA, everything is so over-complicated that it can't help but make life difficult. Ostensibly, things like COM and .NET are supposed to aid cross-platform development but, and this is a kicker, they still only support Windows. Different versions, for sure, but still just Windows. Each new layer of cruft just adds to the previous layer and makes working with it at anything lower than "use who only checks emails via Hotmail" an absolute nightmare.

Second is the mindset required. I've always found that extensive use of overly complex GUIs to be a pain, because they make proper automation a pain. You are limited in automation to what the developer thought up beforehand. The way I tend to think about it is that Microsoft tools help make it easier for you to do the work. *nix tools make it easier for you to get the machine to do the work for you. This might seem a trivial difference when you're compiling a single project, for instance. Then you have some batch process, or some non-trivial file processing that would be simplicity itself with a bit of sh and a bit of Perl, but you have to install a *nix compatibility layer to achieve it. Of course, if you do that, the other Microsoft based developers won't understand what you did.

Third is the horrible array of tools. I've recently been introduced to the joys of Team Foundation Server. Oh my. I've been using source control tools throughout my career because they predate me being on the scene, and still Microsoft manage to get it wrong. Too often you hear things like "Oh, it sometimes fails to get all the latest revisions, just do it again" or "Oh, it sometimes fails to merge files and causes breakage even though you didn't touch that file, just manually fix it." Are you kidding? Work around a source control system? I don't think so. I'll just install CVS or Subversion instead. Oh, except I can't. The mindset I previously mentioned means that, once you work for a Microsoft shop, you can't pick the best tool for the job. You can only pick the Microsoft tool that comes closest.

Hypocrisy?

Yes, I do work for a Microsoft shop. It doesn't mean I have to drink from the teat of Bill. I am painfully aware of the inadequacies of the Microsoft mindset and toolchain because I have to work with it daily. Visual Studio is a very thorough piece of software. It has to be to work around the mass of incompatible layers of crud that have built up over the years. To mangle an old saying, "Every problem looks like a nail, but all I have is a stilleto heel."