After reading this post from Dan Hounshell (via Rob Howard's post), I'm drawn to more questions about "what's wrong with the ASP.NET community," and I'm still convinced that people are asking the wrong questions.
To really understand where we are, I think we need to look at where we've been. There's a history when it comes to this platform, and I don't think you can really get to the meat of the platform's development and community without having that context.
In 2001 and 2002, I was yet another person beginning the transition out of the horrible ASP 3.0 world to ASP.NET. I was immediately active on GotDotNet, and then the asp.net forums. I posted a ton in CrystalTech's user forum, and was designated .NET guy of the year or something on SitePoint's forum. I was all about trying to help people out because, by extension, it strengthened my own experience.
Let met get back to that in a moment though. In the pre-ASP.NET world, as I mentioned, we were in ASP. Visual Basic 6 and other previous versions were about as common as Windows itself in little shops in every IT department. That Visual Basic world was powerful because you didn't have to be a programming genius to make stuff work. And in the world of drag-and-drop, you didn't even need to be all that handy with code.
ASP really required us to know how to write script, but by the very nature of script, we were focused on simply getting things done in the fastest and easiest way possible. These were very task-driven days. Thinking of a Web site as an application was more or less unheard of.
It isn't surprising that a great many people, I'm even willing to bet a majority, came to ASP.NET from one of those two worlds. That's a very different world from those who had experience with C++ or Java. It's something that was apparent in my experience with the various communities I frequently visited. I might have been an early adopter and forced myself to better understand the OOP world, but maybe that's because I was in an unemployment phase and had time to learn. To this day, a lot of questions in these communities are along the lines of, "How do I do this in ASP.NET" or "What's the command that does this." These are the wrong questions. A lot of people, in an effort to make something work, are looking for classes as if they were keywords in the language they're using.
In my book, I say in the first chapter, "The classes you write are not any different from those written by Microsoft in the .NET Framework." I'm surprised when I run into people with questions that they don't really understand this. It's the first problem with .NET education, that people aren't learning what objects are, or instances, or how a class is different from an instance. Most people fast forward to, "How do I save a cookie," without the slightest understanding or care about the moving parts like HttpCookie or the request/response lifecycle of ASP.NET. That's a problem.
I've felt that the lack of instruction involving object-oriented programming and how ASP.NET itself works is a huge problem. It's a problem that I wanted to further write about in my book, but was bullied into the chapter list I ended up with. Honestly, how to do "Hello World" with a Label control is like chapter 10 in my mind, but that's not how it is approached by anyone.
There is a lot of failure to throw around in that arena, none of which is attributed to any specific individuals or organizations. Books are written assuming OOP understanding or to learn whatever in seven days. Web articles, blogs and forums have zero cohesive vision, and it's a Google-and-go world. The only way I can think of to overcome this is the desire on the part of the individual to dig deeper, and you can't force that.
So by now you're thinking, "Dude, this isn't what community leaders and bloggers are even talking about." Yeah, no kidding, that's my point. That pyramid on Dan's blog post, you see that enormous part at the bottom? That's who we're talking about. The conversation, however, gets into whether or not you should use NUnit or the VS testing framework, or whether or not some new framework is open source or community developed or Microsoft developed or whatever. It's like this horrible "inside baseball" conversation that is totally irrelevant for the bulk of the community that the self-appointed thought leaders are talking about.
Before you get all up in my grill, I'm not suggesting that these aren't some important things to discuss. I'm just suggesting that these subjects are self-serving for a very small constituency of the community. To the cookie guy, this is like string theory, and there are a lot of cookie guys out there.
Since we're talking about it, I'm extremely happy with the direction that the platform has gone the last two years or so. Guthrie's various teams are kicking ass and adding value to their products in a way that makes my life easier. Ultimately, that's what I want from a company when I'm buying their products. C#3 and VS2008 were like the ultimate Christmas, and their ongoing open efforts, delivering something early and often (MVC comes to mind) is awesome.
In any case, I think the thought leadership needs to step away from the computer science and development methodology religion and think a little more about how we get those developers up to where we'd like them to be. God knows we'd like to hire more people like that.