A point of humor among people I’ve worked with over the years is my well-known dislike for anything produced by Microsoft, especially their operating systems.
While it may get a chuckle from those who know me, I’m quite serious in my dislike for Windows and it’s kin, and I like to believe I have good reasons for it. Every now and then I get the serious question, why don’t I work with Windows, or Microsoft products in general, so I thought I’d collect my answers, then I can just point people here when it comes up again.
I didn’t just wake up one day and decide I didn’t want to work with Windows, it’s been a long-standing decision on my part for a great many reasons, all of them experience-based. Its not like I don’t know Windows, although I’m not familiar with several of it’s most recent incarnations. Back in the day I worked extensively with Windows and it’s ancestor MS-DOS. Fortunately, though, I had initially done most of my work on Unix variants, so I had a basis for comparison. And the comparison was not favorable, to put it mildly. While Windows, thanks in part to Microsoft’s near-monopoly, was very popular on personal computers, most of my early software development experience is on what I like to characterize as “real” computers. That is, systems meant for doing business, for crunching numbers, for making accounts balance. These systems often ran some variant of Unix, as they were intended from the start for multitasking multiuser loads. Even the venerable PDP series from DEC, on which much of what we now call Unix and it’s ancestors was invented, ran circles around the PC’s of the day when it came to overall business suitability. Personal computers were fine, if what you wanted to do was write a letter or play a game, but don’t get them confused with a real computer, which is what you used to do real business.
Now, that may seem like an entirely antiquated viewpoint. Today’s PC’s have more power in their graphics and network cards than a PDP-11 had in it’s central PCU, and my iPhone has more memory in it’s audio buffer than they had on the whole machine. Very true – but I’m still not going to run my business on my iPhone. UI technology has come what we refer to as “forward” an entire generation, with GUIs and mice and windows and touch screens and all the rest. Back in the dark ages came a technique known as “cient-server”, which was basically where we’d run the UI bit of an application on a desktop machine, quite often a Windows one, and the actual application logic on a backend machine, very often a Unix one. This technique supplanted the old-fashioned “dumb terminal”, which lacked any kind of real GUI support.
Now fast forward 30 years, and … well, it’s pretty much the same. We’ve come full circle, with a web browser in many respects becoming the modern replacement for a “client” portion, and the server bit frequently running on a machine in a data center somewhere. What’s that machine on the back-end running? More often than not, some variant of Unix, or it’s modern near-successor, Linux.
So how does all this have anything to do with Windows? Well, Windows was born and raised to be a “desktop” operating system, even though many ill-fated and ill-advised attempts have been made to pretend it’s capable of being “server-class”, with varying degrees of success. It is tricky to take a system designed for a single interactive user and make it compete with a system whose heritage was expressly designed for heavy concurrent load, time-slicing and context switching, and the management and handling of multiple users. So why do we keep trying? I know why Microsoft keeps trying – they want a larger slice of that much more lucrative server-side pie. But why do we, the technology professionals, keep aiding and abetting them?
I for one chose not to, long ago. Since that time, many viable alternatives have arisen to Microsoft’s products even for the desktop, and they are all demonstrably superior to Windows, in virtually every way. Therefore Windows simply doesn’t make any business sense to me. The ROI isn’t there, the payback is nowhere to be seen. Every time I’ve been forced, kicking and screaming, to participate in an effort to put it to real business use, it’s been either a total or relative failure – and no, not because I just didn’t want it to succeed, I don’t sabotage projects I’m involved in. I gave it a fair shake, not just once, but many times. I paid the license fees, I paid for all the extra stuff you actually need to make Windows work (virus protection, compilers and IDEs, etc etc), and I stuck it out until we had developed a product that was less stable, less performant, anemically featured and far more expensive than if we’d just tossed everything Microsoft and started again. Been there, done that, no interest in going back.
Beyond simply having bad technology, Microsoft backs it up with business practices that can best be described as unpalatable, and perhaps more accurately described as illegal, as many major lawsuits over the years can attest. I prefer to deal with organizations for which I have at least a certain level of respect, if not admiration. Microsoft’s efforts over the years have, in my opinion, seriously interfered with the development of much better software in the entire market, not just for Windows.
Most other counter-arguments take the form of “yes, it used to suck, but it sucks way less now!”, which is again not sufficiently compelling for me to absorb the business disadvantages. It’s all about the latinum, after all, in business.
I’m quite sure people with a vested interest in their Microsoft-based knowledge will be screaming “infidel” by now, telling me that I’m simply closed-minded, that I don’t know what I’m talking about. That may be so. I’ve only been making a living in the software industry for about three decades, and one thing I know for sure is that I’ve still got a lot to learn. But one eventually has to make judgments and form opinions when exposed to different technologies over the years, and I relegate all things Microsoft to the same heap as EJB Entity Beans – an interesting idea with a terrible implementation that I don’t want anywhere near my business projects. It’s just not worth it.
In the last few years, its starting to look like a fair chunk of the industry is starting to agree with me, if Microsoft’s market share is any indication.
For some other opinions on the subject, you may find some of the following interesting reading:
Why Not Windows?
Principles and Practices