views:

820

answers:

7

My head is starting to spin from all the new stuff that Microsoft puts out, and so I'm trying to get a handle on what the current trends are that development teams are using; there's a very good chance I'll need to brush up on my .NET skills, and I want to make sure that I'm choosing the right things to (re)learn to maximize my employment potential; my current skills are a little over 2 years old and I only really have experience maintaining applications and working alone, not with a team of programmers - that's something that IMO really needs to change for me to have a healthy career.

Are things like WPF, WCF and WF being used, or are they still fringe? What about LINQ/NHibernate/Entity Framework for the ORM layer? My main area of concern is web development since that's what I've done in the past, albeit mainly with Classic ASP; I want to pick up MVC but most jobs I see still use WebForms.

Basically I am looking for advice on what the best things to (re)learn would be right now in order to make myself more marketable when I start looking for .NET positions; my level of experience is really only at junior level and I haven't touched it in 2 years so I have a lot of brushing up to do.

EDIT: I'm looking at trends for both C# and VB.NET, since they seem to appear in equal quantities, and from what I can see the general types of developers and what tools they use differ depending on the language used (e.g. C# guys are more likely to use ALT.NET, while VB guys from what I have seen tend to rely more in Wizards and the built-in tools), although I'm also looking for general assumptions and trends that are language-agnostic.

+1  A: 

The answer to your question is "yes". All of the things you've listed are actually being used in production applications in many different places. I've seen both WPF and WCF being used on a relatively wide scale, as well as Linq and ORM.

Because you're a web developer, I would definitely look at WCF as one area of interest, but all of the areas you've listed are being used widely today.

David Morton
+8  A: 

The main thing in order to get yourself employed might sometimes mean you should have some knowledge not only on the technologies "used" but to be ahead of the game and know something, anything about the stuff thats out there.

That means that even though a certain technology might not yet started to have practical industrial exposure, knowing and having studied that technology will give you extra points (for your own sake, if not to impress whoever will interview you)

It really depends from company to company what is being used, I would recommend you not to pick and choose based on predicting what will be used, but take the time to try it out and see if it fits you and the needs of your future employers.

As an IT Developer you will most surely need to know about all of your referred technologies (WCF, WPF.. ORM), seriously, you shouldn't be looking forward to trimming of whatever you hope won't/isn't used out there.

There will always come a time when knowing about this or that framework will come in handy (or what keeps your work from breaking).

More and more all development techniques get connected, knowing about as much as you can is the only way to go, otherwise you're just a code monkey (or less).

Work hard, read a lot, test and experiment as much as you can, and don't be afraid of anything new Microsoft et al throw at you :)

Ric Tokyo
Good points (plus I have to find one good answer from you to upvote ;) 5 down, 10 to go: http://stackoverflow.com/questions/359727#486543 ).
VonC
+2  A: 

All of the futures videos (I've forgotten where from ... perhaps the most recent MIX conference?) stated that Microsoft sees the future of programming (and .Net) in three areas: dynamic languages, parallel execution and functional programming.

Given those trends, I would suggest learning either IronPython or IronRuby for the dynamic languages. For functional programming, I would suggest learning F# (as it's native, but I think there are better languages for functional programming). Finally, for the parallel execution, start investigating the Task Parallel Library and PLinq.

In the short term, I would read enough blog posts or short articles to get familiar with WPF and WCF, as they may come up in interview questions.I wouldn't worry about learning them inside and out, but enough to talk intelligently about it and offer that you could pick it up quickly if necessary.

Travis
I'm curious. What other functional language would you suggest? Thanks
Luca Martinetti
The two I would recommend would be Haskell and Lisp. Haskell has a large community for a 'pure' functional language, and Lisp because it is very elegant once you get past the parentheses. An interesting introduction to Lisp might be the Structure and Interpretation of Computer Programs.
Travis
A: 

Here in London NHibernate (and Fluent-NHibernate has popped up a few times) is something a lot of people are asking for at the moment; as well as WCF and fairly often WPF as well.

As you say most of the jobs are still advertising web forms; I really want to get away from that and into MVC but the roles are a bit scarce I think.

I think a good approach is to try everything out; work through the tutorials so you know a bit about all the technologies, and go deeper with the ones you like more. That way you can talk intelligently about most things in an interview but you will know which jobs you want to really try and go for.

lennyk
+1  A: 

I think the most commonly used "new" technologies are going to be LINQ (especially LINQ to SQL and LINQ to XML), WCF, the XAML brothers WPF and Silverlight, and maybe EF.

Less common but still useful to know will be WF and ASP.NET MVC. As much as I like the idea behind MVC, I just don't think it will catch on much 'in the enterprise', although it will have some niche popularity with smaller ISVs. Webforms is still very deeply entrenched.

Whichever frameworks you end up working with, though, it'll behoove you to be familiar with some of the newer language features such as lambda expressions, extension methods, expression trees, and such.

Eric King
I have read that LINQ to SQL is being killed in favor of Entity Framework; should I still focus on learning LINQ to SQL then?
Wayne M
"Killed off" is probably harsher than what the reality is going to be. There probably won't be much new added to LINQ to SQL, but my feeling is that it will still be widely used for at least a few more years. Possibly more widely used than EF, which is Microsoft's "official" ORM going forward.
Eric King
A: 

You might also want to look into cloud computing using Azure. Silverlight may also be worth taking a look at for something in the multimedia realm. Sharepoint is big in some areas I believe for another technology to learn how to integrate. Course this is trying to use a crystal ball a little so these may turn out to be totally wrong in a few years.

JB King
A: 

The very nature of .Net is that there is no 'trend' per se. It depends entirely on the house that you are developing for.

That said, one thing that will really help is the licensing. If something is GPL chances are you simply won't ever come across it in a software vendor - you can shave those off.

.Net 1/2 technologies are very important today: most companies have this 'fear' of version 3.0+. I think technologies need to be 2-3 years old before they become mainstream. We certainly use the new technologies, but we are definitely an exception (and despite that I only recently got the go-ahead for using XLinq).

What I have found with ORM layers is that it's pretty much up to the developer. The best ones to use are the ones that have no assemblies that need to be deployed. Just because you as a developer knows that a good ORM layer is needed; doesn't mean management does!

The trend you see with MVC is because it's 'new' (sure it's an old concept, but it has taken a new form), most people are scared of it - especially in regard with what's been happening with Twitter.

The best advice I can give is to get a foothold in as much as you can: be a weak Jack of all trades. If you know the basics you can get up to scratch as you go along - coworkers were (and still are) vital for my WPF ability. Stay flexible.

Jonathan C Dickinson