Why I don’t use Microsoft technology

Posted by Luke | General, Programming | Saturday 28 March 2009 4:36 pm

Everyone who knows me knows that I’m big on Linux, well Ubuntu to be more specific. I also have strong tendencies towards Java and open source when it comes to programming. But, it wasn’t always like that… Long ago, when I was still a lad, I was BIG on Microsoft. I guess because that’s all I knew. I’ve been programming since my early teens and simply never been introduced to anything else than DOS and, a bit later on, Windows.

Naturally I started using Visual Studio to program in C and C++ during the late 90’s after swinging a bit with Watcom and Borland for a while. But Watcom ceased to exist and Visual C++ was the next best thing because of the C++ optimizing compiler it used. Intel’s C++ compiler was to expensive other than the fact that none of my friends had a “free” copy of it (if you know what I mean).

When I became a professional, full time, programmer I started to learn things. Slowly that is. The first couple of years of my career I was pretty mindless. I didn’t know what to do, so, I just did what I did best, I programmed. I programmed in C, in C++, in ToolBook, in GRASP, in Lingo (Director), Java, and some more C++. Then the web became very popular so I did some HTML and Javascript. I hated HTML and Javascript in those early days of the web, to chaotic and messy. So, I did more Java and C++. Then Flash became really hot in 2001/2002. So I did ActionScript and started to specialize in the Flash Platform.

I did all of this in a Microsoft world using Windows as a platform.

Then, in the early 2000’s I started to notice something. At the time I was working for a large consulting/outsourcing company in Europe. I was also swinging between Java and C++ at the time. All C++ work was done with Visual Studio for the Windows platform. Actually, to be more specific, it was all MFC. I loved MFC. Because I did Java and C++ projects I switched between two different departments. And what I started to notice was that whenever I was with the ‘Java guys’ I just learned so much more. Even though I was working on a Windows box when developing Java, these ‘Java guys’ where all running Linux desktops and Linux servers. I saw them type in magical commands into consoles that vaguely reminded me of the commands I used to type in when I used DOS when I was a kid. But somehow, these commands where much more complex with weird characters and what’s not. I learned about regular expressions, design patterns, databases, client server models, reverse proxies, tunneling, security, the list goes on and on. I thought my head exploded.

Then, when doing C++ with the ‘Microsoft guys’ I noticed that I didn’t learn anything significant. I mostly worked with guys that I now like to call “drag & drop programmers”. They hooked up ActiveX controls and dragged and dropped some UI controls onto a gray canvas and called it an application. These guys where clearly in it for the money and the title on their business cards. They didn’t give a crap about programming or, beautiful code. Of course, there where a couple guys who’d know their stuff but most of them where the product of Microsoft’s latest Visual Studio features. Just drag and drop, click and point. In my opinion Microsoft had singlehandedly created an whole generation of programmers who didn’t care. Microsoft had made programming accessible to just about anyone with a university degree and an interested in a big paycheck every month.

At the time, programming in Java was something that you could only do if you really really wanted it. To work with Java you had to get over quite a threshold. There where no fancy editors (Eclipse was just emerging) and there was a lot of command-line stuff with build scripts involved. I guess this culled of a large amount of the drag & drop programmers and only the motivated programmers where left. The sad thing is that this has nothing to do with the quality of Microsoft’s products. I’ve used them for years and know it to be very good. It was just the people I was working with that weren’t that interesting and made me switch.

I guess this is also the reason why I never picked up any of Microsoft’s .NET stuff. .NET became popular just around the time I was losing interest in Microsoft. I know C# to be an excellent programming language. It might even be better than Java on some points. But the lack of choice is just not appealing to me. If I choose Microsoft I would feel locked in. There is no alternative if you find yourself unhappy with it for some sort of reason. This is why I love e.g. Java. If I choose to use Java technology to power my business and applications I can actually choose. Not only can I choose my runtime but I can choose my platform like JBoss, Geronimo, JRun or even just a servlet engine like Tomcat or Jetty and there a numerous frameworks for Java available. The list is endless.

What it basically comes down to is, instead of not choosing Microsoft I chose freedom. The freedom of choice. The good thing is is that I’m still free to choose Microsoft if I wanted to.