views:

193

answers:

4

After about a two-year hiatus, I'm brushing up on my .NET skills to find a .NET job (my previous two positions have very little development, or development using legacy technologies, so apart from a few very minor apps I have not touched .NET in close to two years).

I'm aware of things like ASP.NET MVC, and I have previously read on things like NHibernate and DI/IOC, albeit I have yet to use them apart from very trivial "Hello World" type applications. I have a subscription to Rob Conery's Tekpub website and occasionally watch these videos when I have free time.

My concern is this: I don't live in a very technical area. I would be surprised if any but the most tech-savvy companies have heard of, let alone use, ASP.NET MVC, NHibernate (or even LINQ/EF), or know about IoC. I would be willing to bet a large sum of money that 95% of the possible jobs I could obtain will use the following:

  • Visual Source Safe, if any VCS at all
  • ASP.NET 2.0 Webforms (3.5 if lucky)
  • Raw ADO.NET on top of a very thin implementation of the Gateway pattern
  • Stored Procedures in the database for most CRUD operations
  • Gratuitous use of code-behind, with a Service layer if I'm lucky

If I were extremely lucky, I might find a shop that has heard of ORMs and either uses one, or has wrote their own data abstraction. Also if I were lucky, the company would be using Model-View-Presenter.

In light of this I'm not sure what I should focus on learning. Personally, I would prefer to be using the latest stuff - ASP.NET MVC, NHibernate, jQuery, WCF etc. Reality says I should go back to the basics, since it looks like most potential opportunities aren't going to be anywhere near the cutting edge, or anywhere close to it. And, as much as I would like to find a position and start to show the other developers the benefits, in my past experience this has usually resulted in my being fired for "not being a team player" and doing things the bad old way.

So, I am curious how you would approach a situation like this? What should I focus on, in order to A) Reaquaint myself with .NET, and B) Prepare myself to obtain a .NET job again that is more than likely going to use techniques that I and most other knowledgeable developers will scoff at?

+1  A: 

First, start by determining what kind of work you want to do. I'll give you some tips based on my background (which is centered around web development).

On the back end, WCF is essential. Learn how to build (and use) RESTful web services. These will be in high demand as more and more companies move to cloud computing (Windows Azure is mostly REST services), and as platforms expand to include mobile as well as online. If anything, just learn what REST means.

Even if your area has no forward-looking companies, WCF web services are an easy thing to implement without having to re-architect a legacy website (since you can selectively replace MVC or code-behind calls on the back-end with WCF calls). The benefit of WCF is you can then reuse the services for other applications (e.g. mobile). For example, the same WCF services could be used by a Blackberry application as well as by a web application.

Learn how to build generic HTTP handlers in ASP.NET, as these come in handy whenever you want to do things like resizing images, or merging multiple CSS or JS files, or doing URL rewriting (to make URLs more friendly).

Learn about standard web communication formats like JSON, JSONP, and XML. As an exercise, try to build a WCF service that returns results in both XML and JSONP.

OK so I mentioned WCF and REST quite a lot, so I guess your primary focus should be on RESTful WCF services. If you understand the benefits of REST, you can then communicate those benefits to potential employers and make yourself stand out from the crowd.

Dan
A: 

Dan above had a good answer where he focuses on WCF, and I TOTALLY agree with that part! However, I would strongly encourage that, with the web world, ASP.NET MVC and Silverlight are picking up a LOT of steam and are VERY valuable skills to have.

While not entirely .NET, take a look at Sharepoint - developing web parts is done in .NET. And even less-related, Business Intelligence (SQL Server SSAS + PowerPivot + some other stuff) is going to be in humongous demand now that so many companies are getting buried under their data and/or are realizing the potential of what they can do with their data.

Jaxidian
A: 

2 suggestions to get more info:

  1. Check with local recruiters - Have you submitted your resume to places that place contract people? Back in the day there was Excell, Volt, Robert Half, Snowdogs, TEKSystems, etc. to name a few and some may still be in business or got acquired in one form or another.

  2. Is there a local .Net User Group that could help you with some of the new fun stuff to play with in the .Net 4.0 and VS2010? That would be another route to check what employers want from those in positions.

I look at this like there isn't enough information to make a good call at this point, so go gather more details. Or at least give it a shot.

JB King
+1  A: 

I'd say start with looking at the revisions to the languages like LINQ and lambdas. Things like lambdas might only be .NET 3.5+ features but they're just compiler magic & Visual studio 2008/2010 can use them in any .net2+ app.

More specific to 3.5+ is LINQ. That relates to a lot of things like Entity Framework, XML, even nHibernate has a provider.

More important than IoC in isolation is concepts around Test driven development, continuous integration and methodologies like Scrum.

As for particular technologies, there is unfortunately no one killer thing and understanding them all in depth is a mammoth task. Get a basic high level on WCF, Workflow, ASP/MVC & Silverlight and specialize once you know what a particular roll involves.

Doobi