# Essential skills to be a games programmer [closed]

I recently posted a question about the kinds of things to expect in game programming tests for games companies as I found myself unprepared for some of the topics. There are two things I can say about myself, and I think these probably apply to a lot of people. 1. I went and did a course at university that, although got me interested in programming, was poorly taught and didn't prepare me to really get any sort of decent job.. and 2. I'm still completely determined to get into the games industry.

I'm currently working at a little start-up, but I know that if I want to make the games I like playing I have to keep cramming!

My question is this: Can some of you professionals / graduates from better courses enlighten me as to the things I need to learn to become a really solid candidate for programming jobs.

I'm talking about things like Big O Notation, calculating complex recursion, linked lists , matrix / quaternion maths etc.

The first in that list I was not taught, and the second I didn't even know was something I might ever be expected to do. A list of all these and more, plus a good place to start learning about them would be extremely useful, I think to others as well as myself.

(re-tag and re-word this question as appropriate)

• – sam hocevar Jan 18 '12 at 11:33
• The sad truth is that few (of those who are paying) these days know how little value they're getting when they cough up for college courses. The standards have been slipping for a good 15 years. While a structured environment is crucial for effective learning, I'm not sure I'd be so willing to flush away cash without being quite certain that the institution in question is indeed going to benefit me (or whoever it's for). Education is a product, thus a money-maker; such things require substantial prior research. Caveat emptor. – Engineer Jan 18 '12 at 12:58
• This question is pretty subjective, because what is "essential" to one hiring department may be completely irrelevant to another. What potential programmers have to do for a game varies greatly from position to position and project to project. Some tests aren't good indicators of what skills you actually need in your day to day tasks, and so on. Really the only advice I have is 1) be smart and 2) do stuff. – Tetrad Jan 18 '12 at 15:32
• @Tetrad not meaning to be rude, but "be smart" is not good advise. "Learn about Big O Notation because it's useful and often comes up in tech tests", is. Do you really think there are people out there that don't realise 'being smart' may be useful when applying for jobs? – SirYakalot Jan 18 '12 at 15:41
• @AsherEinhorn I was coming at it from the perspective of somebody who plays a role in hiring people. amazon.com/Smart-Gets-Things-Done-Technical/dp/1590598385 – Tetrad Jan 18 '12 at 16:45

Alright, I actually just graduated with a Bachelor's degree in Computer Science this December.

I'm going to list what I feel were the important classes and the textbooks we used in them. Other than these and some software engineering courses, the rest of my classes were more focused on subfields like databases, AI, web development, and ethical hacking.

Data Structures

http://www.amazon.com/Objects-Abstraction-Data-Structures-Design/dp/0471467553

This class is essentially an introduction to different types of data structures along with their performance characteristics. The class I took was focused around C++ so it discussed STL data structures such as vectors (dynamic arrays), link list, trees, maps, sets, stacks, queues, and hash tables. Touches upon some algorithm analysis stuff too but really only Big O notation for worst case performance scenarios.

Algorithm Analysis

http://www.amazon.com/Foundations-Algorithms-Fourth-Richard-Neapolitan/dp/0763782505/ref=sr_1_fkmr0_1?s=books&ie=UTF8&qid=1326899174&sr=1-1-fkmr0

Explores many different types of algorithms and how to measure their performance characteristics. Some types of algorithms include Divide & conquer, dynamic programming, greedy approaches, backtracking, and branch and bounding.

Distributed Computing

http://www.amazon.com/Distributed-Computing-Applications-M-L-Liu/dp/0201796449/ref=sr_1_1?s=books&ie=UTF8&qid=1326899724&sr=1-1

Discusses networking, interprocess communication, UDP and TCP sockets, and a bunch of distributed computing paradigms (Client-Server, P2P, distributed objects, etc)

Computer Architecture

http://www.amazon.com/Structured-Computer-Organization-Andrew-Tanenbaum/dp/0131485210/ref=sr_1_1?s=books&ie=UTF8&qid=1326899561&sr=1-1

Self explanatory. Explains how all the hardware works and collaborates together.

Program Language Concepts

http://www.amazon.com/Concepts-Programming-Languages-Robert-Sebesta/dp/0136073476/ref=sr_1_1?s=books&ie=UTF8&qid=1326899395&sr=1-1

Covers different aspects and characteristics of different languages. Syntax, semantics, variable scope and binding, data types, expressions and assignmnet statements, control structures, etc.

Operating Systems

http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/0470128720/ref=sr_1_1?s=books&ie=UTF8&qid=1326898989&sr=1-1

Covers from top to bottom all the essential task and concepts behind a operating system. This includes handling processes and threads, scheduling and synchronizing processes, memory (virtual, paging, segmentation, etc), file systems, and IO systems.

• +1 I'de like to note that mastery of the first two books will get you well into where you need to be for interviews. The last few chapters of the algorithms book are especially interesting though the first half is where you will find most of your interview knowledge. Funny, almost all of these are on my shelves from school. One worthy mention after all of these would be "Game Engine Architecture" by Jason Gregory amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135 – brandon Jan 18 '12 at 15:39
• Also these are good books but don't forget how great the internet is. I wouldn't be surprised if you could find a lot of the information you need using Google and the table of contents from the books. – KlashnikovKid Jan 18 '12 at 16:25
• yeah I guess I will. I just feel sorry for all the programmers who aren't pretty enough to be hookers on the side, you know? I'll just close my eyes and think of algorithms... – SirYakalot Jan 18 '12 at 16:32
• @AsherEinhorn I usually try to buy expensive technical books used, as there's hardly a difference most of the time. For instance the Game Programming Gems series are all 70$retail price, but I managed to buy most of them used for between 15$ and 20\$. Try AbeBooks, although you need to check from time to time to see if there's any new deal available. And luck.. :\ – David Gouveia Jan 18 '12 at 16:36
• @AsherEinhorn Also, these look like they're all school text books. Try picking them up used after a semester, the market is flooded at that point and prices usually drop. – MichaelHouse Jan 18 '12 at 19:34