There has been some discussion lately in the blogosphere and on DotNetKicks around the subject of "What is wrong with the ASP.NET Community?". There has been alot of discussions goin on, and it has really gotten me thinking.
Before reading on, please read the following two posts in order.
What is wrong with the ASP.NET Community? - by Dan Hounshell
The ASP.NET community's only real problem is education - by Jeff Putz
Now that you've read the above two posts, I'll go on...
What's the Real Problem?
In Dan's post, "What is wrong with the ASP.NET Community?", he goes on to say that the problem is that the ASP.NET community is rather immature for its age, and he gives a pyramid example that explains the community is driven by a select few Community Leaders. These community leaders are people such as: Scott Guthrie (MS Employee), Rob Conery (MS Employee), Phil Haack (MS Employee). I would even say that Scott Hanselman (MS Employee) also falls in to this "Community Leaders" category. Dan also explains that Microsoft needs to pull its hand out of the cookie jar, in order for the community to mature on its own.
In Jeff's post, "The ASP.NET community's only real problem is education", he explains that Dan and the others are asking the wrong question. In fact Jeff thinks the real problem is that people (the community) are asking the wrong kinds of questions. People keep asking, "What's the command for [this]?" and "How do I save a cookie?". They are looking for a quick fix, without an inclination of how to actually perform the task. He explains the reasoning for this is because most of the community comes from a simpler VB6 and Classic ASP background where everything wasn't Object Oriented, and there were alot of quick fixes for everything.
Dan identifies that there is a problem, and Jeff hits the problem on the head:
The .NET development community is under educated.
I'm not saying that Dan was wrong, I only think that he wasn't looking in the correct place to find the real problem. Dan was looking at the select few, the community leaders, thinking they're the ones limiting the real growth of the community. When in fact, the reall problem lies with the majority, the average developer, and the fact that they are just plain under educated about the .NET development plaftworm.
I also think that both Dan and Jeff are looking at things from the wrong angle; the problem isn't just the ASP.NET community, it's the entire .NET development community.
What's the Solution?
The solution to this education problem is plain and simple: The average .NET developer needs to spend a little more time learning the platform.
Here are a couple different areas that I can see need improvement:
- Get a better understanding of Object Oriented Programming (OOP)
- Get a better understanding of Event Driven Programming
- Get a better understanding of what the .NET Framework already provides
- Get a better understanding of Design Patterns
- Learn to read/write both C# and VB.NET
I'm sure there are other areas the .NET community needs to focus on, and if you can think of any, please post them in the comments.
Why "Get a better understanding of Object Oriented Programming (OOP)?"
The .NET Framework is completely Object Oriented. Without a good understanding of OOP, you will be lost at sea without a compass.
This reminds me of the following analogy: If you're a Classic ASP/VB6 developer, and you just jump in to writing ASP.NET code without learning anything (or enough) about the environment and platform, then you'll just be writing a Classic ASP/VB6 program in ASP.NET.
Why "Get a better understanding of Event Driven Programming?"
The .NET Framework is very heavy on Event Driven Programming. All three of the Windows Forms, ASP.NET and WPF programming models make use of Event Driven Programming.
Developers that come from VB6 Desktop development will have a basic understanding of Event Driven Programming, but developers from Classic ASP most likely wont.
The same analogy I wrote above for OOP, applies just as relavent to Event Driven Programming.
Why "Get a better understanding of what the .NET Framework already provides?"
There is so much functionality already baked in the .NET Framework that it's impossible for a single developer to fully understand and know how to use it all. This is why I'm saying "Get a better understanding" instead of "Understand it all".
By getting a better understanding of what's already in the framework (best to focus on stuff relavent to your area of expertise, be it ASP.NET, Windows Forms, WPF, WCF, etc.) you will become a much more productive developer. You wont be constantly rewriting code that's already there for the using. For example: The VirtualPathProvider in ASP.NET has alot of usefull path related methods, but most ASP.NET developers aren't familiar with it.
Why "Get a better understanding of Design Patterns?"
You may be wondering why I'm including Design Patterns in this list? Because, Design Patterns are architectural best practices in programming. Much of the code within the .NET Framework itself makes use of many different Design Patterns. Simply put, by learning Design Patterns, you will become a better developer since your code will be more reusable, extensible and easier to read.
Why "Learn to read/write both C# and VB.NET?"
The development community is still very split in the middle as to whether they prefer C# or VB.NET. Because of this, the plethora of code examples on the web aren't written in both. In my experience, I've found it appears that more examples are written in C# than VB.NET.
I'm not saying to necessarily become an expert with the nuances of both languages, but being able to read and write both will definately benefit you in more ways than one. Especially when looking for a new job, some shops want C# developers and others want VB.NET developers, and if you know both then you wont be elliminating job opportunities for now reason.
Where do you find the time to learn all this stuff?
You may be wondering how one would find the time to learn all this stuff in between working and life. Well, every developer spends some time reading blogs, articles and/or books. All you have to do is shift some of your time over to focusing on these specific goals. The more each individual furthers their understanding of the .NET Framework and Development Best Practices (no matter how small the amount), the more the .NET development community will improve as a whole, especially if that individual also participates on forums and/or blogs.
After all, it only takes at least a couple minutes a week.
Now that we've (the community, I'm not crediting myself with figuring this out) figured out what both the problem and solution are; we must act on it and fix the problem.
This is the reason I blog and participate on the various developer forums (ASP.NET Forums, MSDN Forums, Silverlight Forums, etc.). I, just like others, are trying to help the community move forward while I move forward with the community. The "community leaders" that Dan speaks of in his post are just like every other average developer; the only difference is (to quote Scott Hanselman from when I met him at Deeper in .NET 2006) "they speak louder".