tirade contra .net

Just how old Microsoft technologies seem to hold on in the business world long after the public abandons them abandons me. Still there is, to some degree at least, a belief that Microsoft is somehow a better solution for businesses. In fact, the idea was once so thoroughly ingrained that any statement to the contrary was heretical. Yes, one of Microsoft’s original objectives with .NET was to target internal business applications. But that doesn’t mean that Microsoft ever succeeded in that objective. While Microsoft succeeded in building a framework, in their weird way, the result was some very complicated solutions to some very simple problems. Though I don’t know for sure, this is usually the result of a project trying to be all things to all people.

A history of .NET would be too much for a blog post, suffice it to say that .NET was invented in the 90s to address problems faced by web developers in the 90s. However, by the time Microsoft was done building all of the tools necessary to make .ΝΕΤ a reality, many of those problems no longer existed. For instance, the difference in JavaScript implementations between Internet Explorer and Netscape. By the time Microsoft was done with .NET Netscape no longer existed, and the Internet Explorer team, working independently of the .NET team, rewrote Internet Explorer’s JavaScript engine so that it would be more in line with ECMA standards used by Mozilla and WebKit-based browsers.

Regarding its invention in the 90s, this is probably the reason why no matter what you do the quality of a .NET project always seems to be frozen in the 90s. While the rest of the internet is moving along, advancing, simpler, cooler, faster, .NET seems to exist within a stateful bubble in which the modern rules, standards and goals just don’t apply. One does not have to know the inner workings of .NET to know that there is just something wrong with it. Typically, when you go to a .NET site you can see with the human eye that it takes considerably longer to load than your typical (PHP) website. Your cursor just keeps spinning. The “white page of boredom” lasts much, much, much longer.

Since it’s inception companies using .NET have complained that the TCO (total cost of ownership, in “business speak”) is far more than they were expecting. This should be no surprise coming from a framework which must reside on an operating system known to “get tired” and to have “missing dll files.” Speaking as a developer .NET must be one of the most confusing, most poorly thought out, systems for building applications. The learning curve for .NET is mountainous while that of say, PHP, is more like a speed bump. It is not that PHP is somehow “for dummies” or less of a development tool than .NET. On the contrary, a solitary PHP developer can typically build applications far more complex in a fraction of the time that it takes a whole team of .NET developers. The facts are that .NET is just too complicated, requires compiling, depends upon all of the failings of the Windows operating system, and at it’s core, the framework is about “wiring up components to data sources” and not about really understanding what is going on “under the hood.”

For ten years now, ever since its first official release in January of 2002, I have been watching the .NET community, lurking on programmer forums, just reading the posts, and from time to time trying to wrap my head around it. Someone will ask a question which invariably results in numerous .NET developers responding with “try this…” and “try that…” Try? There’s no definite answer? As I wrote, .NET is about “wiring up” and not about building. Which is fine if your goal is to slap something together and cash the check. But if part of your business model includes the objective of being able to make changes to a system perhaps years after Phase 1 then your people really do need to know how it works. Simply “wiring it up” will not suffice. What I’m saying is .NET leads to sloppiness. If clients only had a little understanding of web code and were to take a look at the code files and see how .NET projects are routinely slapped together they would be appalled.

Two thousand years ago the orator Cicero wrote that every time emissaries from the Greek-speaking east would address the Roman senate that there was always one senator who would ask for an interpreter due to a poor command of the Greek language. So too when it becomes apparent that Microsoft is no longer a viable technology company will there be one American senator, who failing to understand how much the technological landscape has changed, will claim that Microsoft is “too big to fail.” This may prolong the inevitable but it will not provide a solution to the dilemma which we are currently facing, i.e. – how American companies are going to disengage themselves from their reliance upon Microsoft technologies such as .NET. Ultimately, they will have to, because it has been fairly obvious for some time now that .NET, and Microsoft as a whole, are not getting worse, but they’re not getting better either. In a way, I’m hoping that Microsoft will hang on just a little longer. Long enough for those American businesses still dealing with “I don’t know why we’re down” and cryptic error messages and needlessly convoluted ways of doing things to realize that Ubuntu can be installed in minutes, or that Macs come with all the software needed for the hardware, or that you can just as easily build a pie chart or spreadsheet on a Chromebook.