Microsoft vs. Java

Microsoft vs. JavaMany people hate Microsoft and they have good reasons for doing so.  After using Microsoft’s products for close to 20 years I am still continuously baffled by horrible UI decisions and lack of quality control.

As a PC user, I long ago realized that the only way to deal with constant issues brought forth by Microsoft’s products is simply to avoid them.  About 5 years ago I installed Fedora Linux on my laptop; 3 years ago I bought my first MacBook; 3 weeks ago I bought a MacBook pro.

Unfortunately, my professional life requires me to deal with Microsoft’s shortcomings on daily basis.  The software development lab where I work is a pure Microsoft shop; I am deeply ashamed to admit that we even use Microsoft SharePoint.

For the last 3 years I’ve been doing .Net programming and kind of developed a love-hate relationship with both ASP.NET and .NET framework.  Rapid prototyping and fast development are so easy if you are using standard .NET controls.  You can build sophisticated applications in weeks instead of months; bosses love it, clients adore it and newbie programmers think that it is the best thing since sliced bread.

Everyone loves .NET framework until they start testing their shiny new web applications in web browsers other than Internet Explorer and realize that the report that they created using .NET grid control in 2 minutes does not render the same in FireFox; the cool AJAX control from Microsoft AJAX toolkit does not work right in Safari; the StringBuilder class concatenates strings in “utf-16” encoding which most XML parsers cannot read.

At that point one’s love for .NET quickly turns to hate.  It takes weeks, if not months to rewrite those AJAX controls because simply fixing them is not an option; they are “black boxes” and no one knows what makes them tick.  Your boss hates you because it took you three days of frantic CSS coding to make that report look the same in every browser.  Your clients refuse to talk to you because they are pissed off that the XML you promised them was unreadable.

To sum up, Microsoft sucks.  Even if you are forced to use their products and their development environments, I highly recommend avoiding their build-in controls like the plague – it might take you a bit longer to develop your own controls, but at least you’ll know how they work and what the code looks like.

There are a few things that Microsoft got right.  Over the years, I have worked with pretty much every major relational database in existence, and Microsoft SQL Server is by far my favorite.  Another thing that Microsoft really got right is their implementation of web services.

For those who don’t know what web services are, read a highly technical and confusing article on Wikipedia (http://en.wikipedia.org/wiki/Web_service). Recently, I had to develop a series of web service-based API (Application Programming Interfaces) for a web-based application that my lab has developed.  As part of this project I had to write examples in all major web languages (ASP, ASP.NET, PHP, Perl, Java, Python) on how to consume the web services and integrate the data that they provide with various LMS (learning management systems).  Prior to this project, I have only worked with web services in .NET and have always assumed that since SOAP has been pretty much ubiquitous for a number of years other languages and platforms provided good libraries and API for calling external web services.  Boy, was I wrong.

ASP.NET, Classic ASP and PHP were easy – I wrote examples for all three languages in under an hour.  When I started on a Java example, I hit a wall.  Now, let me admit that it’s been years since I worked with Java, and even then I never wrote any large serious projects in that language.  I asked every Java developer I knew about consuming a web service and no one seemed to know how to do it.  I found a bunch of examples on the web, and managed to get them to work on a Linux machine using Apache libraries, but could not get it to work on my Windows desktop to save my life.  That’s when I began to feel some sympathy for Microsoft.  I still don’t like them much, but at least they are not claiming that .NET framework is cross-platform and anything written on a Linux will work on a Windows or a Mac computer, and vice versa.  I realized that Java sucks as much as .NET and that Sun sucks as much as Microsoft.

Come to think of it, programming sucks in general.  Unfortunately, there are no perfect programming languages – they all have their shortcomings and advantages.  I also realized that I got into programming because I love to solve problems.  Unfortunately, 12 years later, I rarely get to work on challenging problems.  Very few companies are willing to pay someone to kick around ideas and see if something sticks.  Almost no one wants to write a check to figure out if you can do something; money changes hands only when the person with the checkbook is assured that they’ll see desired results.

I need to get a job with Google – I hear they actually let their programmers think.

Comments

blog comments powered by Disqus