My friend and colleague Zach Johnson posted a great article on beginning web development. His post is mostly focused on PHP/MySQL due to his background, so I thought I'd expand on his excellent advice by talking about beginning .NET development.

Firstly, let's get something out of the way: .NET is not a programming language, it's a programming framework. The .NET framework supports three languages that can be used for web development: C#, VB.NET (VB 8), and J# (which no one uses).

Why Should I Develop Using .NET?

The answer to this question has a lot of facets. I chose .NET because I was not only interested in web development but I also was interested in Windows development. The great thing about .NET is that it's not hard to move between client and web development since you can use whatever language you prefer for both environments. Additionally, with the recent release of Windows Presentation Foundation with .NET Framework 3.5, client development is like developing a rich web application because the UI is all XML (or more properly: XAML) driven and supports rich graphical features like timeline animations, transparency, and much more than what Windows Forms can offer you. Silverlight is the technology most people associate with XAML interfaces but WPF lets you create native Windows applications using the same UI tools like Microsoft Expression.

If you have no interest in client development, ASP.NET still has enough going for it to warrant your notice. I've found that ASP.NET is great at making database-driven sites in a short amount of time. There are no templates, modules, or code that you have to set up to dive into making a data-driven web application. It's as simple as opening a new ASPX page, dropping an SqlDataSource control and linking it to a table to pull whatever data you need and filling a ListView control to show a list. No DB connection code, you don't even need to code unless you want to customize the results that are returned.

So How Do I Get Started?

Developing using the .NET framework has come a long, long way since I started. Not only is it all free now, but in recent months there's been a lot of awesome add-ons to speed up data-driven web sites.

If .NET development interests you, here are my recommendations:

  • Go and get Visual Web Developer 2008:  It's free and is just as good as the full VS 2008, minus support for built-in team source code development.
  • Go and get SQL Server 2008 Express: Again, it's free and is good enough for development environments.
  • Start learning C# and then get at least familiar with VB. Many people still use VB applications and it could be useful to know both, I do. They aren't extremely different but C# is smoother and more efficient (VB is slower). It's also similar to JavaScript's syntax so while you're learning JavaScript, C# should come naturally. Besides, there are some great translation tools that make moving between languages simple.
  • Buy some books. You can learn a lot on the Internet but I learned more through the books I bought. Any of the Pro series (yellow and black) books are usually good.
  • If you're low on cash, I recommend looking at sites like:
  • Get familiar with the newer .NET technology. LINQ, Dynamic Data, and recently released ASP.NET MVC, are all three extremely powerful ways to make high-powered web sites fast. You can literally build an admin panel interface in minutes with a database using Dynamic Data because it will automatically generate scaffolding (you'll learn) and the forms for you. It's just like PHP: if you want to be awesome you'll need to learn some kind of framework whether it's Ruby on Rails, Drupal, CakePHP, or others.
  • Look into source code versioning systems like SVN, CVS, and others. Personally, I use the AnkhSVN plug-in for Visual Studio and TortoiseSVN for my source code repositories. It can come in handy when you want to keep track of your changes, back-up your code, or start doing team development.

Whether you use PHP or .NET I would highly recommend learning about the MVC design pattern and 3/n-tier architecture (they are different). If you work in the web environment you will likely come across these terms a lot.

In the end it's up to you. I've been doing .NET development for about 6-7 years now and the past 4 years I've been learning PHP where I work. It really helps with my freelance work because I can do everything from quick small PHP sites to large .NET-driven sites. Sometimes I find myself hating PHP for making me do form logic and other times I hate .NET for not having some of the powerful PHP array functions.

Good luck on your future web endeavors!