17
\$\begingroup\$

Is C++ necessary to learn if I ever want to get a job in the game industry? I am extremely familiar with C# and have a basic mastery of making 2D games in XNA 4.0. Right now I am only 13 years old and love making games, and hope to someday get a game programming job. I have heard a lot of people say that C++ is the 'industry standard' and that it will hurt your career not knowing it. I am also trying to target more platforms than just windows and i am aware of Monogame but for some reason i am having lots of trouble with the visual studio templates, and i find many bugs with monogame. Since i technically can't get a job yet, and probably couldnt get a programming job until i am like 22 or something (unless im self employed). And in that 9+ year time-span the game industry will most likely change a lot. So here is some questions

  • Will not learning C++ hurt my chances at getting a programming job?
  • By the time i can get a job will C++ still be the 'industry standard' programming language
  • If i am an indie developer does it really matter whether i learn C++ or not, and stick with what i know?
  • Should i even start learning it now seeing as i have many years before i can even get a job?

I am also having a worry that even though i am familiar with object oriented programming, i may spend lots of time on C++, and get very frustated and confused then just quit learning it, and by this time i've forgotten lots of XNA and i have to learn everything all over. So in short: Should i learn C++ if i ever want a programming job?

UPDATE

Thank You All For Your Answers And Suggestions. Recently I Picked Up SFML and C++ and it is going pretty good. I am getting the hang of C++, and starting to open my eyes to not worrying about learning new things because i was able to transfer all my C# knowledge into making C++ easier to learn. Thank You All Once Again.

\$\endgroup\$
6
  • 4
    \$\begingroup\$ It should be noted that there are actually more jobs in the game industry that aren't coding than there are jobs that are coding. Artists, project managers, black-box testers, designers, sales, etc. Also, there's far more jobs in other languages combined than there are in C++ alone. So, statistically speaking, no, you don't need to learn C++ to get a job in the industry. \$\endgroup\$
    – House
    Mar 31, 2013 at 4:12
  • 1
    \$\begingroup\$ It will definitely not hurt your chances. They company I work for now strictly uses C# and Unity for developing games and does not require C++. However C++ is still considered a plus because it teaches a lot of useful concepts which can be applied elsewhere. I'd recommend you focus on a language you know for your indie project but take a little time to learn C++ when you can (just for the experience). \$\endgroup\$ Mar 31, 2013 at 5:29
  • 2
    \$\begingroup\$ If you are a professional developer, you can't always pick and choose your tools. For example, I hate Java and MATLAB with a passion. However, once in a while I just have to hold my breath and get it over with. So, just quit your whining and learn C++. Learn a few more languages too while you're at it. \$\endgroup\$
    – drxzcl
    Mar 31, 2013 at 18:49
  • \$\begingroup\$ Learn C++ while you can. \$\endgroup\$
    – jcora
    Apr 2, 2013 at 19:57
  • \$\begingroup\$ I feel like this post is important reading for this question. \$\endgroup\$ Apr 6, 2013 at 9:24

7 Answers 7

23
\$\begingroup\$

I want to focus on your third question, because it's within my area of knowledge (indie developer):

I haven't written a line of C++ code for many, many years. And, in fact, I have forgotten many of the nitty-gritty details (and in C++ there are a lot of those). I do most of my work in C#. And you absolutely don't have to learn C++.

However, the skills I gained from learning C++ - particularly the low-level stuff, especially how memory and pointers work - have proven invaluable.

Additionally, there have been several occasions where I've had to read other people's C++ code. If you know how to program in C# or Java you can probably guess what is going on - but knowing is much better.


My recommendation to you, specifically, is to learn C++ now. At your age you have plenty of time to spend just on learning. That way you won't need to worry about picking up C++ while you're trying to develop a game or land a job.

Don't worry about forgetting the details, if you stop using C++ for some reason (or XNA or anything else). The concepts are more important. And you'll be able to pick up the details again easily if you have to.


As your other questions hinted at - we don't know what the industry will look like in a decade. Although I'd guess C++ will still be in fairly common use. Speaking for right now - knowing C++ will give you a substantial boost in employability - even at a non-C++ shop.

\$\endgroup\$
7
\$\begingroup\$

If you want to be a game programmer you probably can't avoid learning C++. If you want a different job in the game industry, like producer or artist, then you don't need C++.

C++ is hard. Lots of people don't learn it until college. You have lots of time. Work with some other languages to get up to speed on basic programming concepts. Start small and take it one step at a time.

\$\endgroup\$
1
  • 2
    \$\begingroup\$ I'd argue the other way around. C++ is a language considered close to the hardware nowadays, and you necessarily learn a few things about computer architecture that you wouldn't learn with a higher level language like C#, mostly about memory allocation and addressing. If you learned C# first and got comfortable with it, you'd probably be alienated by the additional hoops you have to jump through with C++ in comparison. \$\endgroup\$
    – Hackworth
    Mar 31, 2013 at 10:08
6
\$\begingroup\$

You have a lot of time to learn yet, so I don't think you should be too worried about which language you use, but I will state some things that you might find helpfull:

  1. C++ is a language while XNA is a framework. XNA is not going to be updated by Microsoft any more, so I find it incredibly hard to imagine it being used 9 years from now in any serious capacity. C++ on the other and has been around forever, has an active standards committee committed to improving it and provides developers so much control over hardware that it would take a giant leap in hardware power to render this control unneeded and thus allow another language to supplant it as the defacto standard for high performance games.

  2. Learning the concepts is the important part, not the language you implement them in. You can "learn" a new language pretty quickly if you already understand its basic principles.

  3. C++ would require you to learn about pointers and memory issues at a much deeper level than C# would, so I would recommend you learn it at some point regardless of its use in industry.

  4. Your worry about forgetting things is probably unfounded. It is true that you will forget things but the specifics are not really the important part. You won't forget how to design a game by switching languages.

You seem to have reasons not to learn C++, I think you are actually just trying to rationalize your want to not learn something new.

Think of it this way: if you learn C++ and it turns out to not be used in the future, you have many years to learn what is and I will guarantee that having learned C++ will help you do this. If you do happen to forget all your XNA and don't manage to learn C++ it would be better to find this out and move forward than to worry about the possibilities. I don't think either case is very likely.

\$\endgroup\$
4
\$\begingroup\$

General advice: don't focus on what you need to learn or what you should be learning. Just make something.

To answer your specific question, Microsoft will no longer be updating XNA, so chances are it won't be around for much longer. C++ is a well established industry standard and won't be leaving anytime soon. If you want to work on AAA games, then yes. C++ experience will be necessary.

\$\endgroup\$
3
  • \$\begingroup\$ Great advice, +1. Although I honestly think that learning new languages is very important as well. \$\endgroup\$
    – jcora
    Apr 2, 2013 at 20:33
  • \$\begingroup\$ Yannbane: But doesn't that come secondary? As the OP makes things they'll discover what they need to learn and learn it in the process. Once you know one language well, learning others is generally pretty easy. \$\endgroup\$
    – Zach Latta
    Apr 2, 2013 at 21:12
  • \$\begingroup\$ Err, no, it isn't. You need a bit of both, or course, but learning languages is more important than having projects. And no, just because you know C# doesn't mean that you know C++. And if it was easy you'd regularly see people who know 6+ languages. \$\endgroup\$
    – jcora
    Apr 3, 2013 at 5:46
1
\$\begingroup\$

Since the question has been answered already, let me just fill a few holes here and there...

I am also having a worry that even though i am familiar with object oriented programming, i may spend lots of time on C++, and get very frustated and confused then just quit learning it, and by this time i've forgotten lots of XNA and i have to learn everything all over. So in short: Should i learn C++ if i ever want a programming job?

Where did you get this idea about C++ being a terrible monster language? It's not! It's actually very fun.

True, you can get close to the hardware, which actually has two benefits: you learn a lot more about how the computer actually functions, and second you have a lot more power in your hands than with, say, C#.

But then again, C++ features great abstraction methods and has very useful libraries, so it's not like you'll actually be communicating with the graphics card directly (you definitely can) - it will just be abstracted away.

Knowing just about any language is very useful, has a good chance of increasing your probability to be hired, and definitely makes you a better programmer.

When you'll have time, check out JavaScript and/or Python. Others would probably suggest Lisp too, but I'm not that knowledgeable when it comes to it, so I wont say anything. But it might be useful to check it out anyway, I think it's pretty neat even with my limited understanding of its concepts. There's Haskell too but bleh.

And in that 9+ year time-span the game industry will most likely change a lot.

True. But guess what: in 9+ years, we'll still be using assembly, C++ and C. I doubt that game developers will suddenly just decide that they have enough resources and stop pushing the limits of the machines. Of course, this is just a guess, but all of those languages are much older than myself, so I think I'm right.

Besides, by learning C++ you'll make it easier for yourself to transition into a potential new mid-level language.

Since i technically can't get a job yet, and probably couldnt get a programming job until i am like 22 or something (unless im self employed).

I'm pretty sure you're wrong here. You'll be able to get a job in a few years actually. Few meaning 2 by my country's laws, I think. But not a full-time job.

There are still options to work when the school is out, and if you're good, and you probably are, then there sure will be a dev company that would want to hire you. A gamedev company? Probably not. But there's no reason you'd actually want to work in one as a starter, AFAIK you could get paid better in a regular company, and work on a game in your free time.

Besides, just look at your name, it's almost as if you've already familiarized yourself with the joy of C++ programming!

\$\endgroup\$
1
\$\begingroup\$

I'm not in business yet (I'm 17 years old), but I think it is really a must to discover new languages and technologies. While you have time right now, learn C++, OpenGL and Java. Mastering these takes some time (I took me 5 years, so I started at the same age as you are now), but the experience you gain is really amazing.

A good thing to try is to make a Minecraft clone in Java and OpenGL. This will give you insight in a lot of gamedev techniques and will learn you A LOT of optimization techniques. That is whay I did at the age of 16. You can have a look at the result of this at: CraftMania. Why I recommend starting of with Java is because it is easy to program in. There is a garbage collector and neat exception handling. This allows you to learn OpenGL very efficiently, without bothering all the difficulties C++ comes along with for an unexperienced developer.

Once you feel like you master Java in combination with OpenGL, have a look at C++ and try to make some easy things (no games yet). Once you think you understand how C++ is being compiled and works on runtime and know how memory is organized in C++, THEN have a look at SDL to make an easy game.

Why do I focus on OpenGL? Because OpenGL runs on every platform except for XBox360. This is: Windows, Linux, OS X, Android, iOS, BlackBerry, Wii, DS, PS3, PSP, etc... When you only master Xna and DirectX, you are bound to Windows and XBox360. I think this is a good reason to learn OpenGL and C++ if you want to get a programming job in game industry.

\$\endgroup\$
0
\$\begingroup\$

My answer would be that it really depends on what you want to do in the games industry. At the moment if you want to make AAA console games, C++ is a must. No other language will allow you to take advantage of the limited resources you have on a console.

For a long time C++ was the lingua franca of the games industry, but with the advent of the iPhone and Unity it's now possible to make decent games using languages like C# and Objective-C. Even HTML 5 is capable of making games now. The simple fact is, there are a lot of options out there.

At your age you still have a lot of time to learn and watch how the industry develops. My advice to you would be this: don't focus on the language. Focus on learning how to make games and/or making mods for games that are out there. One idea might be to get Minecraft and figure out how to make mods using Java. Nothing is better than seeing that you can change the way a game behaves, even if you don't actually release any mods.

At your age I was making games using Basic (on the Commodore 64). RPG Maker and later using Java to mod games. I didn't even touch C++ until I was around 18 years old so you still have plenty of time to grow.

To answer your actual questions:

  • Will not learning C++ hurt my chances at getting a programming job?

At this stage there is no way to tell. It could be up to 10 years before you start looking for a 'real' job and technology is advancing extremely fast.

  • By the time i can get a job will C++ still be the 'industry standard' programming language

See the above answer.

  • If i am an indie developer does it really matter whether i learn C++ or not, and stick with what i know?

No. What matters is how many games you finish and release.

  • Should i even start learning it now seeing as i have many years before i can even get a job?

It's never too early to start learning, nor is it ever too late.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .