This month I was asked for advice from a reader due to the post I wrote on Builder's sister site TechRepublic about how to handle a co-worker who was resistant to new ideas.

The TechRepublic member has an impressive 17 years of development experience spanning a wide range of technologies, including some more "modern" items such as web services, AJAX and Java. The job he is moving into requires that he work in .NET a little bit more intensively than he has in the past, and he wants advice.

My tips on transitioning into .NET

Here's the advice I provided the reader:

If you have a background in Java, it will help you to move to .NET. I learned Java before .NET, and I found that many, many items have the same names or work the same in the .NET Framework. C# as a language is extraordinarily similar to Java in terms of using the basic language (there are a lot of differences with the advanced stuff).

If this were 2005 or 2006, I would tell you that you are good to go, but in the last few years, the .NET world has undergone a silent upheaval. While it is still possible to write code as if it was Java or VB6 with a slightly different syntax and set of library calls, there have been fundamental changes in how .NET code can be written. For example, the new ADO.NET stuff with the Entity Framework provides an entire ORM system that did not exist before. LINQ offers a universal method for querying/updating data, regardless of whether it came from a database, XML file, or is just an object in memory. And while WinForms are still around, Windows Presentation Foundation (WPF) is clearly the wave of the future; looking at some apps that I have used that run on top of WPF, I am really impressed with it. For Web Services, the Windows Communication Foundation (WCF) system has been very useful, from what I hear.

Even in terms of how you write code, there have been a lot of changes, particularly in C#. In the last year or so, a lot of the C# people I know are suddenly declaring their variables as "var" instead of explicitly stating a type, for example. There have been some new ideas (which I don't wholly agree with) around "programming to the interface" not "programming to the class". Quite honestly, I have not kept up with these changes; when I learned C#, I basically was still writing code like I did in Turbo Pascal but with C# instead of Pascal. Does my code work? Yup. Is it easy to read and maintain? Yup. But at the same time, I suspect that I really need to learn C# from scratch with the most current ideas and techniques and take what I like from that. I think a lot of the recent innovations may have a lot to offer, but I can't fully judge them yet.

The first thing you need to do is find out what version of .NET that you will be working with in your new position. If you are going to be working with .NET 1.1 or .NET 2.0, there are less special areas of functionality to worry about choosing from. But if you are going to be using .NET 3.0/.NET 3.5, then you have a lot more choices about things to learn. You also need to know if you will be using VB.NET or C#. While the next versions (coming in 2010) close the gaps between the two languages nearly completely (and they are already quite similar in functionality), there are significant differences. Also, find out if you are going to be working on a web application or a desktop application; the .NET web model (ASP.NET) is very in depth and confusing to a lot of people. From there, find a good, rigorous book that will teach you good habits (try to find one that is detailed enough to show you variable naming conventions, for example), make up some nonsense apps (you know ... CD collection databases, recipe applications, etc), and spend a weekend or two getting some "hands on" with .NET. Best of luck!

Cast your .NET This was published in Cast your .NET, check every Thursday for more stories

Log in


Sign up | Forgot your password?

What's on?

  • Optus Deal

    Broadband + home phone + PlayStation®3 in a single package price!