Earlier this month I wrote an article about the Six Things Every ASP.NET Developer Should Know By 2010.  It was one of the most highly visited articles (through the history of my blogs) that I have ever written.  I think that deserves a thank you to everyone who took time to read, and in some cases reply, to the article. 

There were a few topics, drawn to my attention by the responses, that really did deserve to make the list but didn't.  I have included them, mainly MVC, further down in this entry.

Some Clarity..

Before we get to the list, I wanted to touch on a few things from the previous article.  There were some very excellent remarks made in response, a few which stood out to me.

Re: Cloud Computing w/ Azure
Every few years someone comes up with a centralized model for this sort of thing that gets alot of hype and then dissipates as it becomes clear that noone is really adopting it. I am not saying this is the case for cloud computing, but there is a very good chance it will be.
-Matt Briggs

Re: WPF
DON'T learn WPF (!!!). You're a web developer, right? This means you don't have to learn the Windows toolkit. While I'm here, DON'T learn Windows Mobile, and DON'T learn XNA, and DON'T learn Cocoa#, and DON'T learn Gtk#, for the same reason you're not learning WPF.
-Peter Seale

Re: Firefox and Chrome
You have a mistake here in #2... "While Firefox and Chrome use a similar rendering method". Actually it's Safari and chrome that share the same webkit rendering engine.
-Lamin Barrow

All of these replies were fantastic and helped churn some great thoughts for me.

On Cloud Computing..

I realize that not everyone is going to want to use Azure.  Some have already become accustom to Amazon's services.  The main point was that in some shape or form, development is moving in that direction and it is a trend you should be adopting in some shape or form.  It is fair to call out that I have not worked with Amazon's services and I am sure they give the Azure framework, while still very immature in it's life cycle, a good run for it's money.  If you would like, you can further delve into this battle...

On WPF..

Peter's comments struck me a bit harder than the rest; stating "DON'T" learn WPF, WF, or Azure.  While I can chalk up Azure to the debate above, I think the other two deserve more argument. I think this hits more to the core of what we, as developers, do on a daily basis.  We aren't just asked to fix problems rather, we are asked to build solutions.  The vagueness of this takes us into many different debates over what it includes.  My good friend Mike Park examines the difference between designer and developer a bit further.

My point, and why I created this article, is that the more you know the better.  I did not title the entry as "6 Technologies To Master" for a reason.  Your ability to adapt and develop applications depends on your knowledge of what you have at your disposal.  By learning these technologies, you open up so much more possibilities than if you narrow yourself to a select few set of components.  Sure, the argument can be made: "Well Dave, in that light, we should just know everything and master nothing."  I think, to some degree, this is true.  My point is that I believe you are better off knowing as much as possible and mastering a select set of core skills - whatever they may be.  These technologies are my suggestion for moving in that direction this year (if you are an ASP.NET developer).

Now, without further brevity, here are the three I missed...

3. ASP.NET MVC

Why?  As Microsoft outlines, the key benefits are:
  • Clear separation of concerns
  • Testability - support for Test-Driven Development
  • Fine-grained control over HTML and JavaScript
  • Intuitive URLs
What?  The ASP.NET MVC framework enables you to use the Model View Controller pattern when developing ASP.NET applications.  The Asp.net website has a host of great videos and tutorials to get you started.

2. Automated Unit Testing

Why?
When should I test?  All the time!  Integrate your unit testing into a continuous integration practice and your release quality will improve noticeably.

What?
Take your pick - xUnit, nUnit, or for you MVC folks - Lightweight Test Automation Framework.  There are plenty of others out there as well.

1. Content Management Systems

Why?
Because you do not need to be creating 45 admin pages to give the users the ability to manipulate content.  You should be familiar with at least one common CMS and be able to integrate custom code into them.  Save yourself some time and expense.

What? Take your pick - Sitefinity, Ektron's CMS 400, Graffiti CMS, DotNetNuke, and the list goes on...

Hope you all enjoyed the article.
Cheers!

kick it on DotNetKicks.com