I read this article from Rick Strahl, ASP.NET gets no Respect – Rick Strahl’s Web Log, and the comments that follow with great interest because just like Rick, I don’t understand why everyone isn’t using ASP.NET. It was while I was reading the comments that I think I finally got it.
Back in the day, Microsoft and Borland both came out with a C++ framework for writing Windows applications. One looked a lot like the Win32 API that everyone was already using but suffered from not really being a good object model. The other had a great object model but suffered from being more difficult to understand. The one everyone already understood is the one that most people decided to use, even though it was a poor object oriented model. Technically superior or usable? Which would you choose?
Fast forward to 2002. Most of the developers at the time have been programming now for the web using primarily batch-processing-based language. PHP, ASP, Perl, to name some of the more popular languages of the time. Are any of these languages object-oriented? (OK, some are barely, but not like .NET or Java.) Are any event-based? And what does Microsoft give us? An object-oriented, event-based programming environment for the web.
This was great if you were an old-timer used to programming for Windows. But what if all you ever did was program for the web? This programming model is SO far removed from what most people think web development is supposed to look like that they drown in the “complexity” before they ever get to a point where they can appreciate the elegance and productivity it provides.
If you go read the comments on his post, you will see a list of several “problems.” Many of these “problems” people are having are because they just don’t understand how to use .NET.
For example, one problem someone mentions is that they have to wait for the compile process to complete before the web site comes up so you can test it. I guess they don’t realize that they can turn that feature off.
Others complain that trying to make the web page do “something out of the ordinary” gets complex and is a hack. But I would suggest that is only because they don’t understand the event model. Once you know what events fire when and how to tap into them, you can make the web page do anything you want.
Still others complain that the viewstate feature and the Page model bloat the application. OK, but you can turn off viewstate if you want and you can use JSON and MVC frameworks if you really want light. I would suggest though that it would be better to set up a web farm to handle the extra load (if there really is one) and just get the app up and running.
And yet another complains that Visual Studio is too slow. C’mon, man! Get a new computer. Anything less than 2 gigs for a developer is just CHEAP! It ain’t slow with the right hardware!
Some of the other problems are more religious in nature. Security, etc. There’s no helping that.
The real problem is that this model is so far removed from what most people understand web development to be that they have nothing to leverage as they learn this new model. That’s a real problem. Because it doesn’t matter how much better the platform is technically–if enough people don’t understand it, it is doomed.