video Game programmer prerequisites

Started by
43 comments, last by TerrorFLOP 15 years, 11 months ago
Hi I'm 14 and was thinking of going into a video game programing career but don't know the prerequisites, fully understand what I am going to be doing or how much I am going to be making, and I'm not sure if i should have experience with programming before i go into collage or university.I have programed simple things like a calculator and a thing that tells you the time and date and have found programming interesting although I'm not 100% sure this is the job i want to have it is one that i may want to do in the future.
Advertisement
Hiya.

Besides programming ability, industry programmers usually have some knowledge of college-level math and physics.

As for how much you'll be making, it varies, but search for "salary survey" on gamasutra.com.

Personally, I would recommend having some programming experience before college. I'm two years through college myself, at the moment, but have been programming since early high school. I've liked having the leg up: I can spend my time working on decent-sized projects instead of struggling with language basics.

Good luck. Explore the non-forums part of this site -- it's a great resource.
Basically, for a middle/high schooler like yourself, its important to take as much Math, Science and Computer courses as you can, and to do well in them, taking AP classes where possible if you're really serious about becoming a game programmer.

When I was in high school, I took all of the available high-school-level maths (algebra I && II, geometry, etc) as well as AP Algebra, Calculus & Statistics, and Physics. I also took the few available Computer courses, most were basic but I did complete a Cisco networking (CCNA) course and my final computer class was a self-directed project for which I wrote a game. I also tutored and was an assistant to the IT guy for my final two years.

Games are pretty math heavy, for 2D games you need at least Algebra and possibly calculus and/or physics. 3D games are largely Linear Algebra (Vectors, Matrices and transformations, among other things). The kind of physics you see in games are largely an application of Calculus. General logic, reasoning and problem-solving skills are always required.

Previous experience is not required for University, but it never hurts to have some familiarity with it before-hand -- Just be ready to be told that some of the things you may have learned on your own are wrong or could be better, because you will inevitably form some poor habits or have fundamental misunderstandings without guidance.

Programmer salary is pretty good compared to the rest of the population, though the games industry is on the lower-end of programmers salary, particularly when the worker is freshly out of college. Certainly within 2-3 years working as a game programmer you should be making 3 or more times the average American salary of ~20K.

throw table_exception("(? ???)? ? ???");

I've already shared my thoughts on what I think of Computer Science degrees... They're kind of ridiculous. It depends on the university of course, but usually, if you have prior programming knowledge, you won't learn anything new there... You'll learn the equivalent of 2 weeks of googling each semester. It's a daunting experience. At the end of the program, what you'll have is a degree in making console applications and java applets, with a useless side of systems programming or network programming that you didn't really understand because it was explained poorly. Even worse, by the time you're done, you'll probably have lost sight of what you used to find so fun about programming in the first place.

The worst part is, unlike other industries, just having the degree won't guarantee you a job, far from it... And interestingly enough, the people who make the most money aren't people with degrees but people who do freelance work from home... They can work 6 months a year and make more than enough to get by.

Programming has become this kind of "skilled worker" thing... It's like being a plumber or a car mechanic -- you don't need a degree to get a job as one, but if you don't have experience fixing pipes or engines, you won't be hired by anyone. You can get certified in particular areas without having to go through full academic programs.

All this is why I ended up dropping out of computer science in my second year, with all computer science courses completed except for the "final project" one (the one where the university claims all rights to your work).

Right now, I'm finishing up a degree in translation while programming on the side. I still have my eyes set on a game programming job. And if I don't manage to find a game programming job, at least I have something good to fall back on, something I enjoy, and something that pays better.

What I recommend is that you keep following the "science" path -- as others said, mathematics, physics, chemistry, etc -- because those are the ones that will open most doors. Once you get to the point where you have to pick a university program, you can truly choose anything you want. Until that time comes, keep learning as much as you can about programming, see how far you can take your passion. If you feel that an academic program can truly help you, then go for computer science... But if you think you're doing well enough on your own, that you're understanding things well, becoming an expert in a particular area, don't bother. Pick something else that you can fall back on if the programming idea doesn't work out... It'll save you a lot of frustration in the long run.
Thanks for all your help it is all very appreciated!
I'm going to disagree with kiwibonga here and suggest a CS degree. This might be beyond the scope of the OP's question, but at a good school, courses won't be "the equivalent of 2 weeks of googling." At my college, we're getting a good theoretical background, stuff it would be hard to learn on your own.

Sorry to hear your experience was so bad, though, kiwibonga.
CS degrees are a mixed bag really, from experience here in Aus, the emphasis is more on Java programming with a little C then C++.

A problem i found with some of the Java programming that i did as a part of an engineering degree, is that the lecturers (much like authors) tell you what is good programming, and in some cases that attention to detail is missed and more emphasis is placed on planning techniques such as psudo code, charts and other tools to figure out what you are planning to do.

Meaning you know what you want to do on a high level, but getting to the code you are often on your own, or with a text book.

Another bone i've had with them is the idea that the book is god, so if an answer does the job in a completely different manner to what is expected (as per the book) then it cant possibly be right... (note to self: don't make a full gui for a project asking you to only put it into a command shell)

The good thing i found about it though is that if you were having trouble with some code there was always the immediate help you could seek. In stead of coming to online sources who have no background as to where you are, you can ask people in your course or your tutors for ideas/help and they are fully aware of what you should know... as apposed to coming on here where at best people think you know nothing and at worst people think you know everything.
Quote:I've already shared my thoughts on what I think of Computer Science degrees... They're kind of ridiculous. It depends on the university of course, but usually, if you have prior programming knowledge, you won't learn anything new there... You'll learn the equivalent of 2 weeks of googling each semester. It's a daunting experience. At the end of the program, what you'll have is a degree in making console applications and java applets, with a useless side of systems programming or network programming that you didn't really understand because it was explained poorly. Even worse, by the time you're done, you'll probably have lost sight of what you used to find so fun about programming in the first place.
Sounds like a burnout to me. Which is understandable. I approach that point at the end of spring semesters myself.

What I am going to say next cannot be underestimated: you get a computer science degree to learn how to think. Not how to code. Any monkey can string statements together--a properly educated computer science student can pick up a new language in an afternoon. Computer science is about the whys. Your trivialization of it aside--and I strongly doubt that your degree program is like that, but if it is, transfer--a good computer science program attempts to instill in the student a rigorous, analytical mode of thought that just happens to be expressed in the terms of a programming language.

You want to learn to program? Go to a community college. You want to learn how to think? Get a CS degree.

Quote:A problem i found with some of the Java programming that i did as a part of an engineering degree, is that the lecturers (much like authors) tell you what is good programming, and in some cases that attention to detail is missed and more emphasis is placed on planning techniques such as psudo code, charts and other tools to figure out what you are planning to do.
I don't think good programming can be taught, honestly. You can only provide examples of good programming. Learning to do it is on you, like finding your literary voice when writing prose.

Quote:Meaning you know what you want to do on a high level, but getting to the code you are often on your own, or with a text book.
Not to be a dick (and I honestly mean no offense), but by the time you get past maybe your first programming class, you should not be having any trouble doing that by yourself. Instructors aren't there to teach you to program. That's what TAs/tutors are for, as you alluded to later in your post.

Quote:Another bone i've had with them is the idea that the book is god, so if an answer does the job in a completely different manner to what is expected (as per the book) then it cant possibly be right... (note to self: don't make a full gui for a project asking you to only put it into a command shell)
This, regrettably, is true enough, and I haven't found a way around it yet, either.
http://edropple.com
While I agree that Universities and their coursework can be a mixed bag, I'm going to have to disagree with the poor picture that's been painted by some in this thread.

It seems to me that some of the above posters went in to University expecting to learn nothing but programming. The funny thing about "Computer Science" is that it's not really the science of computers at all, but the science of computation; programming and even the "computers" we are familiar with in our everyday lives are largely inconsequential to its study. Computer science is all about being able to understand the process of computation on a fundamental level, free of specifics such as machine architecture or programming language. In it's "pure" form Computer Science is very theoretical, while more, shall we say, "practical" forms will devote more time to matters such as computer programming concentrating on a given language (the "purer" programs often have students "sample" many programming paradigms and languages rather than a focussed study of one or two languages.)

Finding a program with the proper balance of theory and practicality that's right for you is important. While it's hard to put into words, I would say that a program is out-of-balance when one side of the theory vs. practice coin actually begins to detract from or impair the other. The best advice I can give is to find a program that seems balanced, and if you find that you feel something is missing from the course-work, devote time to study it yourself. This might mean delving into theoretical subjects, or it might mean devoting time to mastering a single programming language or paradigm that is a marketable skill.

A student shouldn't look to their program to teach them everything or they will *always* be disappointed. A student should look to their program to teach them what they need to know for continued study and growth.

throw table_exception("(? ???)? ? ???");

I think you guys are taking what I said out of context and applying it to your own experience... I'm talking about what happens when you already have something like 4 years of C and other languages under your belt before you start a CS degree (which is most likely what will happen to the OP, since he's 14 right now)... You already know how to think, you already have a strong theoretical background, you already have the ability to pick up any programming language "in an afternoon" or over the course of two weeks of googling -- and you won't learn anything new in class.

I'd really like to know how you guys can justify paying thousands of dollars to do in several years what you could do in several weeks or months for free in your own home. But make sure you consider a scenario where the student already has ample experience, which is what I was referring to.

This topic is closed to new replies.

Advertisement