Wednesday, January 4, 2012

Getting Hired

From: Anurag Patnaik


Hi Jason,

I recently discovered your book about game engine architecture at a friend's place and really liked it. Got a copy for myself from Amazon. Hoping to be able to use this along with my course curriculum soon.

I got admitted into Cornell university this year under their Grad school. I was hoping you could give me some pointers about what skills are expected within the industry so that I could spend my year at school actually learning something that would help me get into games. Other than C++, I have heard that knowing your way around Lisp and maybe Python are some useful skills. Is there anything in particular that you think would be useful for a grad like me who is trying to make it into game design ?

I hope I am not intruding .. but any advice from Naughty dog is worth a shot :)

Regards,
Anurag

_________________________

Hi Anurag,

I'm pleased you are finding the book helpful. Pretty much everything you need to know to break into the games industry as a programmer is in the book. 3D math is super important, so definitely focus on solving 3D problems, working with vectors, matrices and quaternions.  A little calculus doesn't hurt either!

On the programming side, I strongly believe that learning multiple languages helps you to be a great programmer.  I like the Lisp variants, not because they are particularly useful in industry (except at Naughty Dog!), but because they really opened my mind to a completely different way of thinking about computer science. I also recommend Python and C# (both are used extensively in the industry).  Oh, and to stay ahead of the crowd, read a bit about Haskell, Ocaml and/or F# -- functional languages are probably the way of the future, given the move toward parallel computing hardware.  On that note, familiarizing yourself with parallel programming practices will prove super useful in the years to come.

You should also learn a little assembly language... the PowerPC ISA (instruction set architecture) is a great one to learn nowadays, given that this is the ISA used by Xbox360, PS3 PPU and PS3 SPUs, with minor variations.  Again, understanding assembly gives you insights into how higher-level languages like C, C++ or even Lisp actually work under the hood.

One final note of advice: Try to learn by doing, not just reading.  Do 3D math problems on paper, then try to implement the solution in C++ or the language of your choice.  Make some small tech demos and mini games.  The more you do, the more you'll be prepared to wow them at the job interview.

Best luck!
J

______________________

Hi Jason,

I am extremely sorry for such a delayed reply. I was in the middle of moving to Cornell when I had previously mailed you and upon my arrival in Ithaca, your reply was conveniently placed in my Spam Folder !

Thank you so much for such a detailed response. I am really happy to say that I do have a lot of bases covered here. I am actually building a game as a design project this semester, hopefully using my own C++ engine ! That should be an interesting experience. I have also started to tinker around with Python and am cursing myself for not having discovered this wonderful language earlier. Rounding up this semester would be a healthy project in AI and a course in Computer Graphics which I am hoping would help me understand 3D math better. I had no idea about functional languages, thank you so much for pointing me to this new paradigm.

Again, thank you so much for taking the time to write back such a prompt and detailed answer to my queries. I really cannot thank you enough. Your feedback has been of immense help.

Sincerely yours,
Anurag Patnaik

_____________________

My pleasure!  Best luck, and keep in touch.
J

No comments:

Post a Comment