This month's Reader Q&A was sent to me in response to the post I wrote about how to handle a coworker 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!
What suggestions would you add?
Now that you've read my advice to this reader, please feel free to add any additional suggestions in the comments. While this reader has already started his new job, I'm sure that many other readers could benefit from tips on how to transition to .NET.
J.JaDisclosure of Justin's industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides.
---------------------------------------------------------------------------------------Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!
Justin James is the Lead Architect for Conigent.