My partner asked me recently why people hate Microsoft so much and it's a question I've been pondering for a while, as well as thinking about my own attitudes towards the world's largest software company. I consider myself to be in an unusual position in that I'm a Java developer who does actually like Microsoft. This is considered heresy by many in the Java world where the assumption made is that you can't like both. I may just have lost some readers who visit this site for the occasional Java content, but I don't take such a binary view of the world. I think that Microsoft is just about the best place to work if you're passionate about developing software and even those who work for competitors grudgingly agree. I should love to work as a developer at Microsoft if I were a lot cleverer and if I could stomach living in America (no offense intended if you do).
It's not accidental that a large proportion of the brightest people in the business work for Microsoft. Some would claim that this is down to the lure of MS cash. I don't buy that argument because for people this smart remuneration would be generous at any company, besides which the acquisition of wealth is not their prime motivation. It's the opportunity to do great stuff and reach a large number of people. As I'm writing this I'm deliberately trying to be as objective as I can and I'm trying not to just come across as an MS fanboy because I don't think I am. I'm certainly not reticent about criticising Microsoft when I think they need to do better; indeed you can find several examples on this site.
I welcome diversity in the computing arena and I actively take opportunities to learn about non-Microsoft technology. For example, today whilst I should have been working I read quite a lot about Apple OS X—which I think is a great OS—and I also burnt a CD with Knoppix Linux on it (more about that another time).
What really annoys me is when people are so blinded by their hatred of Microsoft that they lose all objectivity and go about spouting drivel to others, when they haven't even thought about what it is they're actually saying and why they're saying it. Often they're just repeating the anti-MS mantra because that's what you do. When so-called IT professionals display this prejudice in an official capacity in meetings, I'm afraid I lose all respect I may have had for them. I flip the bozo bit. The same goes for those who refer to M$ or Micro$oft.
I believe that competition is healthy and improves the breed. I'm glad that Linux exists and continues to improve because it keeps Microsoft focused on improving the Windows operating system that I choose to use. Witness Windows Longhorn, which is shaping up to be the most exciting and interesting realise of Windows for a decade. I may not always choose to use Windows (or whatever its successors are called) but it serves my present needs well. Similarly, Java and J2EE forced Microsoft to do something about its mediocre developer tools offering at the time of Visual Studio 6, which led to the creation of .NET. This in turn has forced Sun to wake up and improve its technology. It's no co-incidence that Java 1.5 is the most interesting version of Java in years and features language improvements—such as generics—that are also debuting in C# soon.
Talking of Java, it's often claimed that Microsoft tried to destroy Java because they added Windows-specific extensions to their J++ variant. It's easy to see how Microsoft would feel threatened by Java, which is after all a platform in its own right that to an extent makes the underlying operating system irrelevant, no matter what it happens to be. There were/are undoubtedly executives within Microsoft who made or make it their top priority to neutralise the Java threat. However, people don't generally see the other side of the coin, which is that there are developers within Microsoft who are Java enthusiasts and who wanted to make it a great platform for developing Windows applications. And to do that, they had to add in some platform-specific features which you could take advantage of if you knew you were writing for Windows only and if you wanted to. It's also worth remembering that for a time the Microsoft JVM that shipped with Internet Explorer was the fastest one around that actually ended up on user's machines. Of course it's hopelessly out of date now, which benefits no one.
Anders Hejlsberg, the powerhouse behind Borland Turbo Pascal and one of the brains behind Borland Delphi, was involved with the creation of J++, which in many ways laid the groundwork for what was to follow with .NET. C# is often called a rip-off of Java, but it's not a shameless clone because it added some neat new tricks of its own. And Sun Microsystems aren't the origin of everything original within language and framework design any more than Microsoft or any other single company are; Borland helped Sun design their JavaBeans component architecture because Sun were impressed by Borland's VCL created by…Anders Hejlserg et al.
I don't view Microsoft as some monolithic entity, with 50,000 employees focused on the one aim of destroying their closest rivals. It's hard enough trying to get tens of people pulling together in the same direction—believe me I know—let alone tens of thousands! Time and time again the accounts coming out of Microsoft from insiders are of a company that in many ways is run along Darwinian lines, with different groups competing against each other and not co-operating. Hardly an environment conducive to nurturing grand conspiracies.
I think that the two biggest threats to Microsoft right now are previous versions of its own software and its reputation. The two are closely linked because Microsoft's current reputation is largely formed from what it's done in the past and not what it's doing today. I'm thinking in particular about Windows and its reputation for being insecure and unstable. I'm not saying that reputation is undeserved because both of those things have been true about Windows for a long time, but I genuinely believe that the situation is getting better and that's happening because Microsoft's customers are demanding it. Windows XP Service Pack 2 does a lot of right things in the area of security and Windows has been a stable operating system for years now. I haven't seen a blue screen of death on either my home or work PC for at least three years. Really.
Windows has got such a bad reputation that there are those within Microsoft who are even suggesting the unthinkable: that Microsoft throw away the Windows brand name plus all that's invested in it, and call the next version something else. I don't think it will happen but it's an intriguing idea. It's very easy to criticise Windows over security and stability without really thinking about why it's the way it is. What many of the naysayers don't consider is the fact that the direction of Windows is driven by consumer demand. The top priority at Microsoft when developing software has almost always been to preserve backwards compatibility, because Microsoft knows full well that customers won't tolerate not being able to run their existing software using a new version of the OS. This has informed the design direction of Windows and has led to many complex trade-offs involving compatibility, security and stability. If you don't believe me then go and read Raymond Chen's blog—it's a real eye-opener. This stuff is damn hard to get right. Don't forget that Apple have completely broken backwards-compatibility more than once and a fraction of the software that Windows has to support runs on the Macintosh.
It's amazing how many jokes Windows has become the butt of, particularly when it comes to stability. It's even entered mainstream culture. We've all heard those jokes, some of us have probably made them too. I regularly get exposed to them at work. There's a Java related website I visit that features a different programming question every day in the style of the Sun Certified Java Programmer exam. I came across this question recently:
“Your chief Software designer has shown you a sketch of the new Computer parts system she is about to create. At the top of the hierarchy is a Class called Computer and under this are two child classes. One is called LinuxPC and one is called WindowsPC. The main difference between the two is that one runs the Linux operating System and the other runs the Windows System (of course another difference is that one needs constant re-booting and the other runs reliably). Under the WindowsPC are two Sub classes one called Server and one Called Workstation. How might you appraise your designers work?”
—Amongst the possible multiple choice answers were:
“3. Ask for the option of WindowsPC to be removed as it will soon be obsolete.”
These aren't official questions from Sun and I didn't dignify this one with an answer. Yes, Windows 9x wasn't a paragon of stability but then it was never designed to be. It was designed to be as stable as possible within the constraints of the other requirements that it had to meet. The top requirement was that it had to run all your old 16-bit Windows and MS-DOS software as well as the new 32-bit applications. Of course, no customer actually asked for instability in Windows 9x, but they ended up with some because it's a trade-off. The vastly superior Windows NT was always planned to replace it, it's just taking years for that to happen.
In terms of security, of course Microsoft have to do a lot better and I believe that they will. Their biggest headache is the masses of machines out there connected to the Internet that are running a legacy version of Windows that was developed when the explosion of the Web caught Microsoft by surprise. Consumers weren't demanding security then. I draw parallels with the automotive industry, which is also driven by consumer demand. In Europe, for years only the luxury car manufacturers offered safety features over and above the basic. I'm thinking of technologies such as airbags, side impact protection and anti-lock brakes. Now safety has become a major selling point and differentiator that can make the difference between the car buyer closing the deal or walking away. It's the same with computer security, which is now Microsoft's stated top priority.
There's no denying that things that used to be turned on by default in previous versions of Windows are turned off by default in Windows Server 2003. The focus has shifted 180 degrees from ease of use with positive action required to make things secure, to secure by default with positive action required to make things less secure. Interestingly, I was in a meeting last week where someone pointed out that the Oracle 9iAS J2EE application server comes with a lot of features turned on by default post-installation, some of which could be exploited and used to compromise the system. I know it's a different order of magnitude from millions of computers running Windows but I don't hear Oracle getting it in the neck even slightly over that.
Windows is often mindlessly criticised for being bloated, as if its EXEs and DLLs are somehow padded out with zeroes in a grand conspiracy to use more disk space and sell more hard drives. The code taking up the space does actually do something you know! The people who whinge that Windows is a bloated behemoth would be the first to complain if they couldn't run all their software under a Diet Windows or if using it was unfathomable to them.
Over the years I've noticed that those who hate Microsoft often fit into one or more of the following categories:
- People who hate Microsoft because of their size. Microsoft is a high visibility target. There's a nice quote I like by Windows spelunker Andrew Schulman that says that Microsoft aren't the biggest fish in the ocean, they are the ocean. It wasn't always thus. Lots of people hated Apple Computer in the 1980s at the time when Apple was the giant ruling the computer industry with an iron fist and bullying the lesser players with endless lawsuits.
- People who hate Microsoft because it's the thing to do. In other words, lots of other people do it. Microsoft bashing has become a popular pastime. Just as no one ever got fired for buying Microsoft, so no one ever got beaten up for hating Microsoft. Well, maybe in Redmond.
- People who hate Microsoft because they think the software is rubbish. I'm sure if you asked the Windows developers at Microsoft if there were things they'd have done differently given the opportunity to start afresh with no backwards compatibility constraints, they'd have been giving you suggestions all week. In fact, that's what happened with the Windows NT architecture. And it worked, because it's been with us eleven years now (sixteen years if you include development time).
- People who hate Microsoft because of the antitrust actions. You can tell these people because they take great delight in using the terms “Microsoft” and “convicted monopolist” together whenever they refer to the company. Did the antitrust actions really achieve anything apart from make some lawyers richer and produce a funny video clip of BillG looking awkward whilst testifying?
- People who hate Microsoft because they're just whingers. After all, complaining is far easier than actually taking positive steps to improve their own software. This is also known as The Larry Ellison Syndrome. Scott McNealy was also a sufferer of this but has recently been cured by a large injection.
- People who hate Microsoft because of Bill Gates. Everything I've read about Bill Gates indicates that money is not his prime motivator. That doesn't mean that he doesn't care about it and he certainly doesn't appear to squander it! It would seem that Bill's passion is improving people's lives through software. Microsoft software, yes but then what do you expect? That's his company! It's called c-a-p-i-t-a-l-i-s-m, get over it. Someone has to be the richest man in the world and I'd rather it was someone like Bill Gates who gives an awful lot of his money to charity. It's easy to be cynical about these things but I'd rather live in a world where philanphropists pour huge sums of cash into AIDS research (for example) than not.
- People who hate Microsoft because Microsoft are phenomenally successful. I've never understood the notion of excessive profits or the idea that businesses should somehow be penalised for being too successful. Who sets the bar on these things? Great fortunes can be built in business and great fortunes can quickly be lost by businesses when they take their eye off the ball. IBM ruled the roost for years. I genuinely believe that you can be successful if you build a better mousetrap and persevere.
And me? As I stated at the beginning, I like Microsoft and its software. I don't think Microsoft are perfect and I know that their software isn't, but I think that they get more things right, more of the time than most of their competitors do. The important point is that I make up my own mind about things and try to keep it open.