0

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)

Dollarslice
  • 3,420
  • 6
  • 30
  • 49
  • Knowledge of the graphics pipeline, if you are working with non-managed code – liamzebedee Jan 18 '12 at 11:18
  • 2
  • 1
    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
  • It's shocking really. I'm just glad I didn't have to pay the new UK tuition fees. I genuinely could teach the course I did better myself, and I say that with no ego and knowing full well I am probably a slightly below average programmer at present. – Dollarslice Jan 18 '12 at 13:03
  • Actually make something, the more the better. Find out what special field you are interested in. Game Play, AI, Network, Performance/Low Level Programming, sharpen your debugging skills, start working with crash dumps and solve issues using them. Long story short, jump into it as deep as you can, don't wait for somebody telling you what project to do, just do it, the rest will come. – Maik Semder Jan 18 '12 at 13:39
  • Last but not least, read other people's code and use it. Use things like Bullet and study the sources, try to add featues to it, there are tons of possibilities to learn.. – Maik Semder Jan 18 '12 at 13:44
  • @MaikSemder good advise for sure. I actually am doing that http://www.ashereinhorn.com - (ignore the current source code, I have a much cleaner version I need to upoad). still I think this list of technical know how would be good. – Dollarslice Jan 18 '12 at 14:13
  • @Asher Einhorn that looks very good, keep going, that is excactly what you need, don't worry about a complete skill-list. Nobody has all skills, most of the programmers in my studio know little to nothing about graphics stuff, others know nothing about LowLevel Programming or AI. Rather dedicate your time to some skills that you like best, as you already do. Good luck :) – Maik Semder Jan 18 '12 at 14:37
  • @MaikSemder thanks! worst comes to the worst I'll make my own damn studio. If you can't join them, beat them! – Dollarslice Jan 18 '12 at 14:39
  • 3
    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
  • 1
    @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? – Dollarslice Jan 18 '12 at 15:41
  • Your resume looks good from a practical standpoint by the way. I'de follow KlashnikovKid's list of books to get the knowledge that most applicants will have coming out of a computer science degree. – brandon Jan 18 '12 at 15:44
  • 2
    @AsherEinhorn I was coming at it from the perspective of somebody who plays a role in hiring people. http://www.amazon.com/Smart-Gets-Things-Done-Technical/dp/1590598385 – Tetrad Jan 18 '12 at 16:45
  • 1
    I think this question is too broad. I also think (meaning no offense to KlashnikovKid or his nice answer) that asking college graduates what essential skills are for an industry they may not even have a job in yet, let alone the requisite experience to usefully answer your question, is a bit misguided. If you're looking for answers that will get you hired, you want them from people who do the hiring. Even then, as Tetrad says, you'll get very varied results. –  Jan 18 '12 at 19:19
  • @JoshPetrie would you be able to recommend some areas that the industry generally considers important? – Dollarslice Jan 18 '12 at 19:37
  • hang on, just checked back here and this has been closed! Seems a bit odd since there's a really helpful answer. – Dollarslice Feb 02 '12 at 10:13

1 Answers1

4

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.

KlashnikovKid
  • 1,377
  • 1
  • 15
  • 24
  • 1
    +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 http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135 – brandon Jan 18 '12 at 15:39
  • +1 great list but MY GOD THESE BOOKS ARE INSANELY EXPENSIVE! – Dollarslice Jan 18 '12 at 15:51
  • Yeah, I agree. Game Engine Architecture is a great book. – KlashnikovKid Jan 18 '12 at 15:54
  • Wow, I literally can't afford these books. God, sorry to rant but this makes me so ANGRY! And people like authors wonder why people pirate books and software! I'm just trying to learn and they want to charge me over a hundred pounds for most of these! We're in a recession and I can't afford books I need to learn and get a good job, thanks a lot authors of the world... ARGRRGGHHHH!!!!! – Dollarslice Jan 18 '12 at 15:59
  • @AsherEinhorn buy one at a time. in that order actually – brandon Jan 18 '12 at 16:09
  • 1
    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
  • 1
    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... – Dollarslice Jan 18 '12 at 16:32
  • 1
    @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
  • 1
    @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. – House Jan 18 '12 at 19:34