views:

325

answers:

5

I have a B.S. in computer science and have been working as a PHP developer for about three years. I don't want to be a PHP developer and would like to move into .Net development. I don't expect it to be easy, but I am prepared to do whatever it takes to make it happen. I'm confident in my ability to learn the tools, languages, and design patterns necessary to do the work, but I'm worried about getting my foot in the door. Most jobs -- even junior-level jobs -- require X years of .Net experience. But if I need .Net work experience to get a job, then how am I going to get .Net work experience? I have a couple of ideas, but I don't know how solid they are:

  1. Start building a portfolio of .Net applications that proves I can do the work. I'm worried that this won't be effective, since building software in one's free time isn't professional experience in the eyes of HR folks and recruiters.

  2. Try to find a way to get into QA work and hope that, someday, this leads to a development job.

Do you guys have any recommendations?

+7  A: 

You don't mention what your current .Net knowledge is so I'm unsure if this is a question about how to learn .Net, how to get a job in .Net with no commercial experience or both. I'll treat it as both.

The first thing to do is learn one of the .Net languages and that should really be C#. Most .Net jobs are in C# (and VB.NET). This has been covered here:

As to how to get a job, there are two basic strategies:

  1. Get a job at a company that does something you already do and then try and transition jobs. This could be a programming job or not; or
  2. Learn enough such that you can get a relatively junior job.

Both of these strategies can be successful.

I would say your best bet is to focus on Web application development. As a PHP developer that's almost certainly what you've been doing. If you know HTML, CSS and some Javascript (including frameworks like jQuery) then that's all useful. Your goal should be to learn C# and then ASP.NET / ASP.NET MVC development well enough to write decnet applications in it.

Those clientside skills are portable. Emphasize and use them.

As for going the QA route, you could do that but it wouldn't be my recommended approach. Testing is a different discipline to development. It has its own training, tools, methodologies, etc. So if you're not a tester already you'll be trying to get a job as someone with basically no experience.

Support is probably a better route in. In fact I've seen some dev teams that don't recruit developers at all. They recruit developers from people who have done their support for at least 6-12 months as that's about the only way anyone will learn the application well enough to contribute to it.

Now that could be support in a helpdesk or call centre type position but you should hopefully move up a level beyond that (L2 support) where you get more into diagnosing non-trivial problems and even getting into simple support programming tasks. Of course how a company structures it's support functions and who does what will vary greatly from company to company.

cletus
A: 

For a start, apply for plausible looking jobs. Junior level jobs that require X years of .NET experience are very likely the work of idiot recruiters. (These are the same people who posted ads requiring five years of Java experience when Java had only been out for six months.) Be reasonable, of course: no point wasting your time or that of potential employers going after .NET lead or "must be able to hit the ground running" jobs. But if you don't ask, you don't get.

While you're doing this, build reputation. Create a portfolio and make it available online. Blog about your experiences building that portfolio. Go along to your local .NET user group and contribute if you can. When potential employers google your name, let them think, "Well, he may not have commercial .NET expertise, but he's smart / committed / keen as mustard / etc."

Sure, be prepared for disappointment, but keep plugging away. Many employers are looking for skill, adaptability and passion, not for X years with a specific technology. In my time I've been taken on as a Delphi developer despite having no Delphi experience and a BizTalk developer despite having no BizTalk experience. Not all employers have recruitment agencies and HR departments trying to fend off everybody who doesn't fit their boilerplate criteria.

itowlson
A: 

I graduated with a BS in CS recently as well. My company recently switched from PHP to .net. I've been learning the ASP.NET MVC framework at home, and working with the traditional asp.net web forms at work. I would recommend strengthening your OO with a book like The "C++ Programming Language" or the "The Java Programming Language" (love this book). I am not sure if as good of a book on C# has been written. Most of the C# principles come from Java anyway. I'd recommend the ASP.NET MVC framework as it tries to mirror some of the Ruby on Rails frameworks and several other MVC frameworks out there.

I'd recommend this especially if you already use the Zend framework or another MVC based PHP framework. www.asp.net/mvc also has some really good tutorials that can be followed in a chronological order.

I would suggest not accepting a QA role with the hopes of switching to development.

David
+2  A: 

You might also want to pick up a couple of certifications. I think that this would go a long way in showing a potential employer that you have a serious interest in .NET rather than just looking for whatever comes along.

You can certainly try to go through the QA / support route but I would make it very very clear in any interview what your goal is and listen carefully to how they respond.

CurtainDog
A: 

Quite simply, employers want employees with right attitude, intelligence, and knowledge. I'm sure you have A and B covered, so all you need is knowledge. Go ahead and do a few personal projects or low bid some .net freelance jobs. If you truely want to learn .NET, I'm not sure what is holding you back.

I don't think you'll have much trouble if you are sticking with web development. The syntax is just a little different, but the context is the same. I find switching frameworks more difficult than switching languages. For example, in my experience I've found Java Struts, Asp.net web forms with C# code behind, and various php mvc frameworks have such different structures.

I'm curious why you want to switch. Of course, there are many valid individual reasons. Personally, I prefer php with a good framework and best-of-breed libraries. It's a dynamic language and that decreases my development time.

rick