views:

485

answers:

5

My affair with C# has run for about 3 years now, and I'm quite happy with it, at work I generally code web and console applications with MS SQL as the DB. But technically, I'm not advancing at a pace I expected to, the projects given to me are so simple that they don't require me to delve deeper into the programming language, I just know 20% more of what I knew three years back in the area of C#/ASP.Net/SQL. Recently, I have been offered an entry level VC++ developer position, and the recruiters tell me that the coding will be fairly complex and I would have senior developers to learn from.

Now, at this point of my career, is it a sane decision to take up an entry level position in a different programming language? What would you do if faced with a similar decision?

+2  A: 

Going from a managed language to an unmanaged one is definitely a challenge, but it comes down to what you want to be doing. If you love C++ more than you like C# then it's a good deal. One thing to keep in mind though is $$$ (money). Ask yourself these questions:

Which one pays more?

Which one has better benefits?

Which one language would I rather work in on a daily basis.



Good Luck!

Lucas McCoy
+8  A: 

I learned most of what I know today from working on my own projects or contributing to open source. I did the day-job thing for a while, but used the safety of the paycheck to spend some of my free time learning other stuff. Today I freelance on things that interest me, occasionally involving new languages/platforms I have had only marginal exposure before. This keeps thing interesting.

The key thing is to not look for your employer to provide the incentive to learn a language--you may be looking forever. Go out and find projects that need help and you will quickly learn new things.

A note on the paycheck issue: If you do things you really like and get good at it based on your own initiative, the money will come; that is my experience. If you focus too much on the cash-out/benefits package in the beginning you may miss out on opportunities to grow into areas that ultimately pay a lot more.

To your specific question: I personally would do it, but only for the opportunity to learn C++ as a production language. Of all the languages I know, my C++ skills rank only somewhat above my FORTRAN skills. That's a shortcoming (because I recently had to work on a C++ project). Learning C++ will offer a lot of opportunities compared to people who really don't want to deal with non-managed/non-GCed languages (like me for example).

Thomas Jung
+4  A: 

If you're able to handle your current projects with relative ease, and you're not seeing a commensurate increase in complexity and responsibility, I think the larger problem is with either

  1. Your current work environment
  2. You asking for more responsibility

The programming language contributing to your growth as a developer is a distant third (if a factor at all).

If you're looking to get more responsibility, get in a position to ask for it by proving competency (you seem to already be here) and then ask for it. If your current company doesn't have more challenging work, then you may need to find other opportunities, but again notice: this has nothing to do with the programming language.

Also, don't necessarily believe everything that recruiters say. If you tell them you're looking for more challenging work, guess what they'll say: "we have more challenging work!" (Some) recruiters have a nasty habit of saying what you want to hear to get their commission.

You're better off determining on your own whether you've exhausted all of the opportunities at your current position. If you haven't, there's no guarantee that a change of scenery won't provide more of the same (even if it is in C++).

micahtan
A: 

I wouldn't stray from c# to c++ if you've got 3 years invested. I check the job boards every few months or so to make sure I am current with what is in most demand and on the Microsoft side of the picture, it's c#.

You said "career choice" so I will assume your #1 priority is an enjoyable job making the most money you can. If you pick one discipline and master it, I think your chances of achieving this are better. If you work 5 different jobs in the next 10 years with only 2-3 years of experience in each language, you will be more a jack-of-all-trades & master-of-none; this would lead you in the direction of jobs where you are a 1-man engineering team supporting a bunch of legacy apps written in god knows what language and making less money. You know the ads I'm talking about, you see them all the time: "Must know c++, c#, vb, javascript, html, flash, sql - $60k/year." On the flip, I haven't seen many "Senior Developer with 5 years of c# and sql experience" for less than $80k.

If you feel you're in a rut, either find a job that will allow you to use more advanced c#, or come up with your own personal projects to work on in your spare time or during downtime at your current job (which it sounds like you might have a lot of!)

Dabas
A: 

Looking at the Tiobe Index, you can see that C++ has about 4 times the market share as C#. However, you can also see that C# is climbing, while C++ is staying stable.

The question is really personal. Do you want (relatively) long term stability with a respected language (C++), or the risk of a rapidly growing, less widely used but also respected language (C#) ?

John Weldon