Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I graduated from university with a computer science degree (BSc), having done some C, C++, Java, Python, and Oracle along the way. I did some freelancing while I was at university and carried this into a full time job when I graduated, and I've been working full time for a year now.

PHP isn't really what I want to do, and I think it's limiting my opportunities the longer I stay along this path. It's not a language I like to use on a daily basis, and I would like to work in a larger organization, where it doesn't seem PHP has much use.

I want to stay in web development, and there seems to be plenty of jobs for the Microsoft stack: C#, SQL Server, and ASP.NET MVC. But beyond a half semester writing common-line C++ in Visual Studio, I have no experience with Microsoft technology.

Where do I start to make the transition to landing a job in a Microsoft shop? Are there any specific certifications I should be focusing on, or university courses I should be taking? What are employers or recruiters looking for?

What can I do besides creating a pet project in my spare time?

share|improve this question
    
Hi Keyo, I've copyedited your question as part of a general cleanup of the career tag. Your update about your new job is great to hear: can you leave it as an answer so others may up-vote it and use it as a reference? –  user8 Aug 19 '11 at 22:30
add comment

11 Answers 11

Certification is unlikely to get you any notice. Actually, your best bet may simply be to build something cool using the MS stack and throwing it up on the web, sort of like a portfolio project. Another thing would be to start answering Stack Overflow questions in C# and ASP and then apply through SO Careers (I notice that you've mostly answered PHP and JS questions).

share|improve this answer
    
SO Careers has zero jobs in Australia. I guess all I need is enough on my cv so it doesn't get thrown in the bin. The programming test is what really counts. –  Keyo Dec 19 '10 at 4:51
    
@Keyo, Atlassian advertised through SO Careers and they are good place to work (different skills though). Never say never. SO Careers is a new project as well. –  Alexandre Rafalovitch Aug 16 '11 at 19:07
    
This is soooooooooo completely false. I know 2 fortune 100 companies where an MS cert plus a degree is an almost-guarantee of an interview... and if you can sell yourself, a job. That doesn't make it right per se, but that's the way things are. –  red-dirt Aug 19 '11 at 22:58
    
It is practically a disqualification in some .Net shops in FTSE 250 if the header of your CV if FirstName LastName MCP, it is definitely a disqualification if its FirstName LastName Bsc MCP. Its show instantly what you value. –  sa93 Aug 31 '11 at 3:22
add comment

Keyo, I think you should not be concentrating on what headhunters want. Frankly, if they want PHP or some language that in your opinion is even more poorly designed then will you be able to stick with it for a life time?

My suggestion is not to fall for the technology trap by just learning programming languages and techniques without any understanding of a domain. Look around a bit -- see what interests you. Could be game programming, high performance computing, device drivers, kernel development, compilers... the list goes on.

Once you have chosen a field or 2, look into what's there in the open source domain on these areas. Contribute heavily, you would be noticed believe me.

share|improve this answer
    
That would be Django/Python, but I can't find many jobs for that. Maybe I have a chance with Ruby/Rails or C#, either is much nicer than PHP. –  Keyo Dec 19 '10 at 6:03
add comment

My advice: find a job as a C# developer. You don't have to have the exact skillset listed in a job ad to get a job: if you show that you're a capable developer you should be able to land a job on the assumption you'll pick up the language.

I'm talking from experience here. My background is mostly Lotus Notes and Oracle PL/SQL, with bits of .NET, Java and Adobe Flex. I decided I wanted to focus on .NET, so I went and interviewed for .NET jobs. I hadn't done any .NET in 3+ years, but now I'm up to my neck in MVC, WCF and lambdas :-)

Basically: don't under-value your existing skills, and don't be afraid to learn on the job. Really, there's no substitute for real-world dev experience.

Edit: I'm also in Aus. There are opportunities if you go after them.

share|improve this answer
    
Do you think there are more opportunities in Sydney than Melbourne (where I live now)? It can't hurt to try land some interviews. –  Keyo Dec 22 '10 at 3:39
    
Not sure. I'm in Canberra and once I decided to focus on .NET, there seemed to be jobs everywhere. I imagine you're checking seek etc, but I'd recommend the Whirlpool job board as well. It's where I found this job, and usually people advertising there are pretty techy. –  Ben Hughes Dec 22 '10 at 4:01
    
Good point with Whirlpool. The companies that post on there are probably switched on having good development practices in place. –  Keyo Dec 22 '10 at 5:47
    
+1, fresh out of college I got a job at a Microsoft shop with no prior knowledge of the MS stack. As long as you can demonstrate you are competent and willing to learn you will be fine. –  Justin Ethier Dec 23 '10 at 19:53
    
PS, if you happen to be considering Canberra, we're now hiring. Here's a write-up of what the work's like: benrhughes.com/blog/2011/01/come-work-with-me –  Ben Hughes Jan 6 '11 at 3:09
add comment

Since you are really only just starting out in your career, it may not be as hard as you think to get a job using the MS technology stack with very little experience. You just have to be willing to shoot for the junior jobs.

I've hired a lot of people, and I have different expectations of their experience based on the position I'm trying to fill. If I'm looking at a senior or architect level role, I'd expect to see a fair amount of experience. But not all of it has to be in the exact technology or skill set I'm looking for. If I want someone with C# experience but they have 5 of Java and 3 of C++, I know they aren't going to have much difficulty picking up a new language. By the way, as you get further into your career, you will quickly realize that learning a new language often isn't a big deal. Learning all the libraries and idioms of the language is what takes time.

When I'm looking at a junior position, I give a lot less weight to their experience. I really want to figure out of they have the capability to learn. Getting your CS (or whatever) degree is a good step in that direction, because it shows that you were able to learn something. If you have work experience in the CS field, great. Someone thought you were smart enough to hire. I'm going to throw some programming questions at you (maybe on paper, maybe on a whiteboard) and ask you to solve them in your favorite language. Yes, in the language of your choice. What I'm trying to see is if you can work your way through a problem, and I'll be able to follow enough your whatever language you pick to see whether you got the answer right or not.

Obviously if you know something about the technology the job will require, all the better. Spend your off hours boning up on the subjects so you will at least be able to recognize the important keywords they might throw at you.

To give you some more hope, I hired a guy who had some C experience but not a lot. It was for a junior C job. The guy was obviously smart, well spoken, and could reason through the problem. Unfortunately, he was still a bit weak on the C side. We said, "tell you what, work on your C, come back in a couple of weeks, and we'll try this again." He did, we asked him different questions (obviously), and he was definitely better. Not knock it out of the park better, but a definite improvement. We decided to hire him, and didn't regret it. He worked hard, and when he wasn't sure, he asked questions.

So the upshot of this long winded ramble is, if you want to change what you are working on, go for it. Especially this early in your career. Shoot for the jobs and see what happens. If you can, get some feedback on where you did well, and not so well. In the end, it will be worth it.

share|improve this answer
add comment

If you want to move in that direction you want to focus on building you experience with the technologies. You can do this in a number of ways. First is to work on your own projects using the Microsoft products. Fortunately they have at least provided a number of free tools like Visual Studio express, so you can at least get your feet wet. If you do not have anything in mind that you want to work on, just find some books and read and go through any exercises or examples that they provide. You can also look to see if there are any .NET user groups in you area and start attending those and networking. If there are no user groups, maybe look for conferences near you. Thirdly see if you can find a company that makes use of multiple technologies where you can use your existing skills, but have an opportunity to be exposed to other technologies and gain some additional experience on the job. Many of the skills you have learned will still apply regardless of the technology and language you are using. So also continue to focus on continuing to develop those skills.

share|improve this answer
add comment

As others said, w/ 1 year experience you should be able to find a new job that allows you to code in .Net. I also moved from PHP to ASP.Net/C#, but my path was different. After working in PHP for about a year, I did my Masters, interned in a company, programming primarily in .Net and then I am now working in .Net full time.

Else in case your company is a startup (or not a corporation as you say), why not persuade them to start/look for ASP.Net projects too? Of course, this depends upon the fact that there are people who are proficient in managing/working in .net projects or your company should be ready to hire people w/ .net experience for the new projects? This answer may sound unrealistic too...

share|improve this answer
    
I don't think anyone else at work is as passionate about programming as I am. My company is small (7 people). One of the main reasons for switching away from PHP is to work in more corporate (larger) companies where there is more opportunity to learn and advance. There are a lot of other organizational problems at my company too. I've decided it's easier to change company than fixing all the problems I have in this company. –  Keyo Dec 22 '10 at 5:04
add comment

I think the answer is in multiple parts: skills, certifications and self-promotion/branding.

Skills: It does not sound like you know which part of the 'web' you are interested in. So pick something not too many people work with yet (because it just came out) and start playing with it using C# stack. For example, razor engine just out in MVC3 beta. Or something around Deep Zoom technology, though that is mostly tied to Silverlight :-( This will give you all the baseline skills, but also all the latest thinking and opportunities.

Self-promotion/branding: Learning newest (beta) technology is not always easy. Bugs, misunderstood features and other fun will happen along the way. Create a blog (on your own domain) to document those adventures and especially your solutions. Write little tutorial or walk through, maybe little sample projects to download for other newbies. This shows to others that you are working with latest technologies, that you are learning and that - hopefully - you can even teach something to others. If you can, create little demo portfolios to show off your work

Certifications: Look into things from acm.org or O'Reilly. The memberships there offer access to multiple learning courses and in some cases certifications. I don't know too much about these, but that would be my direction to investigate.

The specific project in a way does not matter, but try not to reinvent the wheel (yet another CMS or Tetris clone). Either pick a simple new thing around your other hobbies to do or try helping an existing open source project. Or just redo an existing .Net demo project from Microsoft (or from a popular .Net book) using the newest technology and HTML5/jQuery approaches. Notice that redoing an existing specifically demo project is different from 'yet another XYZ' as you are constrained by the original demo's feature requirements and therefore can actually be compared to the original implementation as apples to apples. Also gives you a chance to point out where something is now more/less efficient/clear/readable.

With open source projects, you don't have to earn commit rights to be useful, you could just pick a scenario and create sample project demonstrating a particular setup/configuration/etc. Just trying to explain it to others will teach yourself a lot too. And probably discover lots of missing information in that open source project's documentation which will teach you a lot about reading others' code to get answers.

Basically, start thinking beyond just code and more on how you can be a useful member of community even at your level of knowledge and how to make that ongoing contribution to the community more visible. The employers are looking for people who are already useful and if you start these skills early they will pay keep paying back throughout your career.

Cheers mate.

share|improve this answer
add comment

Its always difficult to make that switch after working on a specific technology for a few years. Your day job wouldn't let you focus on learning the new technology and you wouldn't get a job on it, not at least with a same pay scale as you don't have much experience on it.

Gladly, making a switch to MS technologies shouldn't be too difficult as there are plenty of good resources available to learn from and plenty of jobs available for it. But, you would have to work on small projects get some real knowledge, that is the best way to learn. Not that I know too much, but whatever I have learnt is due to the challenges I faced, working on the projects.

Other than working on a pet project yourself, you can probably try and hookup with a developer friend, who is already working on dotnet. Ask him to assign you small tasks to assist him with his work. You can also help him find solutions to the issues he gets stuck with. That way, you would learn about the features of the language and how and when to use them.

Reading books is another activity that you should do, but that should always be topped up with some hands on, no use otherwise.

I would also like to add, Certifications may look like a nice addon to your resume, but that does not really help you enhance your skills, and recruiters know that.

share|improve this answer
add comment

Since you already have PHP experience many of the web development skills you acquired will be of great use, if you move asp.net web development. I personally prefer asp.net mvc because it is more structured and Microsoft almost recommends it over Web Forms. So your CSS, JavaScript and HTML etc skills will not be lost in this transition.

I would recommend certification, with a word of caution that a certification does not entitle you with any thing. But, it would be a proof that you have understanding of asp.net/microsoft stack. You can easily justify your job search in microsoft technologies. On the top, a Certification preparation will expose lot of concepts to you. Getting a certification is better than sitting and biting nails, unless you have a interesting pet project in asp.net or anyother tool in microsoft stack.

If you are employed by a company they do expect you to be productive the level varies but the whole idea is now how proficient are you in Microsoft stack? I personally like www.tekpub.com for lot of good screen casts and the good work of Rob Conrey, for dissecting things into simple understandable units of tutorials. This would expediate your learning process. I would strongly recommend that even though it has a monthly membership which is nominal if you live in OECD nations.

Got to amazon and chase the books on asp.net/microsoft.net typically choose a book with 5-star rating and commit yourself. Last but not the least, learn to install all the required software Visual Studio, SQL Server and other things required on your personal computer (express edition should be fine). Do that by yourself, either by searching internet or a book. This is very important skill, that would be handy and simple in most cases, but there are some lessons that can be learned there.

At least ensure you have implemented that little shopping cart or blog-engine mini-project to see how the whole thing falls into place.

share|improve this answer
add comment

You don't like PHP, so avoiding jobs in that area is pretty easy. Lot's of jobs in the web/Microsoft area, but are these the types of companies you want to work for?

There are three types of jobs:

  1. Software / Web Service Company
  2. Consultancy
  3. Company in some other industry that want to hire in-house programmers.

Not sure #1 does a lot of C#, but you'll have to find that out for yourself. Have you considered Python or Ruby?

You have a job, so you shouldn't be too desperate. Pick a company you want to work for and see what they require. With your education and experience, self-study is the best option. Shouldn't be too hard convincing employers you know what you're doing and are capable of picking up new languages. There are no definitive paths; be prepared to sell your skills.

share|improve this answer
add comment

I've successfully made technology jumps more than once in my career. The first project I worked on was a ColdFusion application (just think of everything wrong with PHP, magnify it, and now you have ColdFusion). I hated that application, which was driven to loathing when I had to deploy it on a hardened Solaris box.

We had to come up with a tool to do some background processing, which is something ColdFusion definitely wasn't up to the task on. Since it was a small company, and I wanted to learn Java, I wrote the utility in Java. I learned a lot about programming in the process. I also built up my reputation for getting the job done right.

Since Java was object oriented, and I had exposure to C++, was asked to maintain some of that company's C++ applications. Again a technology shift.

For a while I went back to Java on both the desktop and the server. That paid my bills for a good long time. Recently, I had another technology shift to the .Net stack. The knowledge that I built up regarding application design and problem solving is what landed me the job even though I hadn't written one line of C# code. C# was similar enough to Java I picked it up to a level where I could be useful while I was waiting on HR paperwork to go through.

At the end of the day, you have to demonstrate that you have technology skills outside the pidgeon-hole where you feel you are now. That demonstration is most effective with a working application or utility. The more people who can see that application, the better. However, as my last transition demonstrates, you don't have to have that application to land a job. You have to know how to solve problems in a way that's compatible with the company's technology.

When I'm sitting in the interviewer's position, certificates don't really impress me. The reason is that I have had 50/50 luck with certified developers. Some were really good, and some were really bad. There was no appreciable trend either way so it's a non-issue. What's more important is how well you can understand problems and articulate solutions.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.