Microsoft is from Mars, open source is from Venus

I’ve been spending tremendous amounts of time recently perusing the weblogs of various Microsoft developers, testers, project managers, and other folks. Aside from the fact that they work for Microsoft and some work on the same projects, they all have one thing in common: without exception, every single one of these people comes across as incredibly intelligent, insightful, and knowledgeable. Many of them frequently post long and very well written essays on various programming-related topics, from UI design to security to performance to the intricacies of the .NET common language runtime. They often post from a perspective of educating a user or developer who wants to know more about why things work the way they do and how to write elegant and well thought-out Windows applications.

“Elegant” is a word that floats through my head often. I try to hold myself to a standard of elegance and simplicity in the code I write and the software I design. Sometimes I think I’ve done a good job, other times I know I’ve created a muddled mess. But one thing that struck me about these Microsoft bloggers is that a lot of them design and develop some pretty complex software, and the sheer elegance that shows through in their explanations of how certain design decisions were reached is absolutely mind-bogglingly stunning to me. These folks are good at what they do.

Even more interesting to me is that every single one of these people seems to have a very selfless attitude. These are their personal weblogs, yet personal posts seem to be few and far between compared to coding examples and essays on design practices.

This is strange to me. Most of my software development experience has come from writing and collaborating on open source software. I’ve found that open source software is rarely well designed or elegant unless it has either a huge user base and a very small team of extremely experienced core developers or a small user base and a single developer, although those two things don’t, by themselves, guarantee a good design philosophy. I’ve also come to perceive many open source developers as hostile, which is unsettling. Considering the unselfishness inherent in giving your code away for free, you’d think that all open source developers would be kind, generous, considerate people, but this couldn’t be further from the truth. It’s not uncommon for a bug report, feature request, or support question from a user to result in flames or angrily-worded variants of “RTFM”, which hardly indicates a selfless disposition. And yet, I can certainly sympathize, as I myself have developed a habit of ignoring support requests from users who obviously haven’t read the documentation, or bug reports that aren’t reproducible, or feature requests for features that I would never personally use.

Even worse, the number of badly-written open source projects vastly outnumbers the well-written ones. Even some of the open source software I use every day seems have been designed from the ground up to be unnecessarily complex. It may still be marginally better than the closed-source alternatives, but merely being better than the worst doesn’t make you the best. And from what I’ve been reading, it looks like Microsoft’s closed-source software, at least, is getting a lot better all the time. Open source zealots love to point out how quickly open source alternatives are gaining market share, and I’d love to share their optimism, but if these Microsoft bloggers are any indication, the open source community is going to be facing some pretty daunting competition in the near future.

I’ll tell you a little secret: I’ve always had a deep, dark, guilty inner desire to work for Microsoft one day. That desire just got a little bit stronger.