These thoughts were originally posted at http://ardentdev.com in 2011. I’ve moved them here in order to repurpose that domain for a software development podcast.
For much of the last decade I have received varying amounts of grief from colleagues for being so invested in Microsoft development technologies. For a professional demographic that prides itself on a mastery of logic, developer attitudes toward Microsoft can be downright bizarre. They are regularly inconsistent and frequently irrational. Developers can be almost religiously pitted against Microsoft technologies with little grounding for their vitriol.
I will admit that at times I have jumped to the Microsoft stack for a project without giving serious thought to alternatives for the sake of expediency or practicality. If you have a Windows Server running IIS and SQL Server on hand already, it just makes more sense to build an ASP.NET app than a LAMP app. If you want to build a large natural language processing cluster, it probably makes more sense to use C++ or Java on Linux boxes. If you want to write a native iOS app, use Objective-C.
What repeatedly surprises me is how quickly developers will embrace an open source project with barely a thought to whether it’s been thoroughly tested, the license attached to it, or the future plans of the project founder/coordinator. But anything that comes from Microsoft is dismissed out of hand or viewed with a great degree of skepticism regardless of the substantial resources Microsoft has thrown into product planning, development, and testing.
The anti ____, pro ____, no ____, only ____ mentality has become exceedingly tiresome. Imagine how much more collaboration we would foster if we respected the preferences and choices of our colleagues instead of treating them like misinformed degenerates who don’t deserve our full professional respect. It is time we get down off our high horses, bandwagons, and soap boxes to interact with our peers in the trenches where good work is getting done with many different tools and approaches.
In response to this, my friend Dirk at IBM says his problem is primarily with the values represented by Microsoft as a software company and “behaviour that go[es] beyond the ‘they need to please their shareholders’ arguments people often use to defend corporate ethical lapses.” And indeed he brought up some murky situations including Netscape, WordPerfect, the SCO trial, and the Microsoft JVM.
I do agree that Microsoft has had its share of corporate ethical lapses, although my original email to the Ardent Dev list was about developer vitriol toward the Microsoft technology stack rather than the behaviour of the corporation. To avoid technologies based on questionable corporate behaviour would be to discard most mainstream technologies including those from Microsoft, Apple, Google, IBM, Adobe, Oracle, and other large software companies. But Dirk had an important follow-up:
I don’t think MS is unique in getting crapped on by sectors of the development community. I see plenty of stuff that’s anti-Apple (platform lock-in — flash), anti-google (privacy), anti-IBM (patent whoring and before the PC era — anti-competitive behaviour), etc, etc.. MS has been a focal point of a lot of hate — more than the other companies you listed for sure — but I don’t think it’s irrational. I think it’s very good for developers to be thinking critically about the stakeholders behind the technologies they’re forced to use. I don’t think it makes much of a difference in investment decisions, but maybe it provokes discussion internally in the companies being criticized.
If a developer wants to criticize or boycott Microsoft for ethical reasons, I can respect that. What I cannot respect are the asinine statements like “IIS is garbage” or “C# and .NET suck.” Those kinds of statements alienate developers from each other instead of fostering positive interactions and collaboration.
On a More Personal Note…
The past year or so has seen a steady decline in my use of the Microsoft development stack. The past 12 months has been more Python, PHP, and Java. I’ve also been using MongoDB and MySQL.
I was not renewed as a Microsoft MVP for 2011 because I was no longer actively participating in public discussions around .NET development. I also resigned from the Microsoft Regional Director program and from the INETA Membership Mentor program. Those decisions have a lot to do with some changes this past year in my professional trajectory and not any disenchantment with the Microsoft platform. I will share a few details if you’re interested (I won’t be offended if you stop reading here since the rest is pretty self-focused).
In 2002 I dropped out of graduate school and started a software company. The idea was to bootstrap product development with consulting revenue. But as has happened to countless other bootstrapped companies, we got addicted to the consulting revenue stream and the product development side of the shop floundered. We did release a product and it still has a loyal customer base but it didn’t grow the way we hoped.
Fast forward to the spring of 2010. I was still doing consulting work and managing the same software product. After 8 years I was tired of the recurring cycle of consulting engagements and too many nickel-and-diming clients. I was ready for a change. Through a fortuitously timed conversation, I found myself agreeing to become an employee of Radian6 and working on a technology stack other than the Microsoft platform that had been my bread and butter for 80% of a decade. (I also sold my house and moved my family to a new city so it was also a significant life change.)
I joined Radian6 in large part because of the cool web-scale challenges it tackles. Out here on the east coast of Canada there aren’t too many choices if you want to work on world-class web-scale technology. And conveniently I had a few friends and acquaintances already working there.
So why am I posting this here? Well, in part because I want to share my change of professional trajectory with you. But mostly I want to declare a few things:
- Ardent Dev continues to be my meager catalyst for conversation with fellow developers, architects, and IT professionals. The views expressed are mine alone. This entire experiment / evolution of blogging will remain fully independent.
- I won’t shill for Radian6 or salesforce.com here. If there is something amazing happening for developers at large, I may share it at my personal discretion but that’s it.
- My technology portfolio has expanded and while I continue to be a big fan of the Microsoft development stack, I spend far less time with it these days. I am more excited about the coolness of the technology I am building than the coolness of the technology I build it with.