First of all, I'd like to note that this question is not about what language is better because I do not want to start a holy war here.

I am currently learning and using C++ and for work I am studying C# + ASP. I like C++, but it seems to me that this great language does not have much of a chance to win the race with C#, though the tiobe index in March told us otherwise. As we can see, C# has already built up a great market and programmers in that it has more job advertisements than C++ programmers.

So, the question is - is it typical for programmer to earn money for living by writing in a language that is not his/her favorite? And what language would you pick up as a better for career development - C++ or C#?

12 Answers
12

C++ is still relevant and there are still things you just can't do anywhere else (device driver development is a good example, there are many others.) If you enjoy working with C++ you will remain highly employable for some time, though it is slowly becoming a niche skillset.

That said, C# is becoming de rigeur for systems programming such as ERP, CRM, CMS, and many other three-letter acronyms.

Don't throw away your C++, but keep it up with the C#. Both will help you in the long run.

I would also recommend tying your career to a single language or platform. When hiring a developer I am interested in who understands how to pick the right language/platform to solve the problem presented. It is always good to understand the pros and cons of the language you pick. I believe that a strong knowledge of C and/or C++ is an important addition to any developer's experience. Really understanding memory management is key, even if you are working in a garbage collected language.

Of course. A language is simply a tool, and a good programmer will choose the best tool for the job. If you were a carpenter and were asked to build a house, you wouldn't use all the same tools you'd use to build a small wooden statue at home, would you?

As far as actual language choice goes, pick one that is as close to superset of C as possible. While neither C++ or C# fit this distinction perfectly, C++ is much closer, and therefore provides greater benefit upon learning than C# would (in my opinion, of course). I say this because knowledge of C is the foundation upon which all programmers should build their skillset, and C++ will give you a better feel for C than C# will, without doubt.

In general, the engineers that I know use the language that their job requires them to use to do their work. You can't really twitch from language to language to solve most system development, of course.

At home, however, people use whatever tool is most convenient to get the job done. That said, not everyone carries a toolbox full of various languages around with them.

And, of course, if you go purely by tiobe, you have to admit that Java is up there at the top. That happens to be my personal preference for almost all development except for crazy problems where I need LISP or awk. That said, I use to teach C++ programming so my preference tends to lean in that direction....

I don't think C++ is a sinking ship, although I am generally against pigeonholing myself into a specific technology. My advice would be to make sure that your skills at learning new languages are exercised so that whatever technologies you're using at the moment don't restrict your options in the future.

I think most developers who are dedicated to their craft are doing lots of programming on the side in other languages. As for myself, I use mostly C# in my day job, but at home I experiment with things like PHP, Python, Ruby on Rails, and lately iPhone development.

As far as choosing C++ or C# to focus on for career development, from what I've seen in the current market, C# would be your better choice. There is certainly still a lot of C++ development going on out there, but it seems that C# is where the real growth has been lately.

Of course. When working on a commercial product, you pick a set of technologies and you basically have to stick with them forever. With hobby projects, you can start and stop them anytime you like, and you can use whatever technologies you like.

Unless you're a contractor who specifically picks projects that appeals to them then yes, it is typical to code in a language other than your favorite since you'd have to code in whatever the boss or client requests. Of course if you had a choice you could choose to use your favorite.

And although I don't know C++, I do enjoy C#. For career development there are a lot of opportunities for those like me who are just starting out.

If a programmer is working a terrible job where he has to use VBScript to maintain a legacy intranet application, I'd say he should definitely use C# on the side, in order to prepare him for getting a better job, and to keep his sanitity.

Also, JavaScript is something we should all be trying to keep our chops up on.

I have generally used a language/technology for "hobby" work for two or three years before getting a job where I was paid to use it. These have been (among others) Windows (hobby 1988, work 1991), C++ (hobby 1992, work 1996), C# (hobby 2000, work 2003).