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.

For the past 4 years I have worked in c# doing web development. I have really enjoyed it, learnt a lot and have a worked hard to get to a position where I am earning good money and enjoy the work.

However lately - I have wanted a change. What with the "native renaissance" I would like to change my career from being high level application and web development to more down to the metal native development.

I haven't done any c or c++ since Uni over 4 years ago and so I have begun reading text books and websites to brush up.

However - one major issue I have is that I have no practical experience with C++ and although I am brushing up on it, there will be a lot I don't know.

Most of the jobs I have seen in native code around me all require native experience. The only positions I can find that don't explicitly ask for native experience are junior level positions. In my current role I am a mid level developer and although there would be a lot to learn in a c++ position, I wouldn't class myself as a junior.

I guess my question is, how do people solve this issue when changing programming languages for their profession and / or how would you approach this hurdle? Like I said, I would really like to try out native development professionally but I wouldn't want to move back to a junior role. Would employers consider years of managed development and native hobby projects enough experience?

share|improve this question

closed as not constructive by Walter, ChrisF Jul 9 '12 at 12:19

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

don't get me wrong but "I have no practical experience with C++" you are at a lower level than "junior" actually, simply because you are not productive with C++ at all. –  user827992 Jul 8 '12 at 20:28
I think most of the time the junior/senior is not a boolean, it's a continuum. So, you could be a junior, but still get higher pay and more challenging tasks than what you would get straight out of college. –  svick Jul 8 '12 at 20:32
@Jack Black, have a look at meta - meta.stackexchange.com/q/5234/187724 –  Yusubov Jul 22 '12 at 20:10

2 Answers 2

This is actually a usual pass for software developers, who gets interest in different areas. I will try to compile a list of steps to follow in order to achieve this goal.

  • Choose a programming language : you already did that !
  • Find learning resources. Google for web resources , wikis, tutorials
  • Start small. Start with basic constructs and write small programs (10 to 30 lines) to test your understanding of the concepts. Stretch yourself, but don't try to run before you can walk. In addition, there are also books with title like "Teach Yourself C++ in 24 Hours" or something similar. Looking at them how to organize your learning schedule would be a smart approach.
  • Put in the time. It takes many hours of practicing problem-solving skills
  • Keep at it. Learn by seeing. The Code snippets, found on many programming resource websites, not only make programming quicker by providing ready-made code but also give examples of how something is done in that language
  • Implement trial projects
  • Review your progress. Once you have completed one or more trial projects are complete, take a step back and review what you've accomplished. Briefly inventory what you have learned. You may also notice if there are areas you don't understand well or that you just haven't explored. Review your original objective in learning this language. Then make new goals and a plan for moving forward.
  • Keep learning and exploring.

There is a similar post on how to learn another programming language to look - How much time it takes to learn ASP.NET AND c# for experienced programmer

share|improve this answer

In addition to EIYusubov's excellent answer.

  • Have you checked for openings within your current employer? An internal transfer is sometimes given more leeway regarding meeting the specific job requirements. Switching to another department that uses C or C++ (or XYZ lang that you are interested in) is an easy way to instantiate that switch.
  • Many firms have some degree of latitude with what level and salary they hire someone at. While a position may be advertised as a "junior developer", they likely have the ability to bring someone in as a "mid-level developer" for the candidate.
  • There are a number of P.SE answers regarding improving your skills, and they are relevant to your questions. Start some searches with "ProjectEuler" or Google's "CodeJam" and you'll turn up some gems like this one.
  • Since you are wanting to get closer to "bare metal", I would recommend looking into Arduino. There are tons of DIY projects out there for it, so you'll have plenty of suggestions on what to build. It is just one of many types of embedded controllers, but has a pretty decent (not super steep) learning curve to get into the world of embedded.
  • Identify some companies that you want to go work for. Dig through their job reqs and identify the commonality behind their postings. That will let you know what to start working on so your skills are more relevant to them.
  • If your target community has a users / technology conference, consider attending it in order to go to the networking events. Strike up some conversations and you may find someone that can help you get into your next career field.
  • Consider working with a technical recruiter. Recruiters are able to bypass the 5 second resume screening process, and they increase your odds of consideration. They can explain that you are working on expanding your programming language skills and are seeking XYZ (C or C++) instead of ABC (C#).
share|improve this answer

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