My god! It’s full of Coders!

Someone from the UK emailed me this –

I’m in my 2nd semester in 1st year at uni studying for a Computer Games Programming degree at Staffordshire Uni, so far so good and just been learning C and Java which I am finding pretty easy at the moment (useful being a programmer and all..), but I just was wondering how the promotion thing goes.

I have been looking around a few games jobs and you have the junior programmer, programmer, senior programmer, lead programmer etc. Are these all? Or are there more? Just trying to figure out what sort of direction I would be going in when in the games industry. It doesn’t help there are all sorts of different types of programmers, physics, AI etc. although I did choose an extra module so I can study AI methods as I do find it more interesting.

I thought my response might be of some interest..

“OK, so programmer career path, such as it is.

Generally it goes
Junior Programmer – all checkins over seen, entrusted with certain smaller systems or modification to larger system
Programmer – entrusted with mid level systems – usually game side. Stuff like joystick input systems, glue code between systems, pipeline tools and so on. May well design systems with oversight from the senior programmer.
Senior Programmer – Entrusted with engine level systems / large game side systems. E.g. Animation, Networking, rendering- root systems like that. He’s an architect of systems, and how they fit together along with usage cases.

All disciplines tend to be covered in this area – junior programmers don’t tend to be specialists, mid level programmers move into a specialization and senior programmers either get in much deeper into their specific discipline, or they make a concerted effort to get out and become a generalist.

Now then it deviates into several area’s once you get to a senior level – you can move into a Lead position or into Technical Direction.

A lead programmer is one direction to go in that effectively means management experience. You’ll generally have a team of programmers reporting to you and you have to start dealing with stuff like schedules, code dependencies, and interfacing with other departments in terms of delivering what they need when they need it, as well as saying no to some feature requests.

A lead programmer is basically responsible for handing the finished game on a disc to the publisher. He’s going to sit with the designers and work out what the feature set is for a game, what is possible, what is not, what the areas of risk are and how important / likely they are to get done. It’s all give and take in terms of what’s required and what’s possible and likely that can get done with the people he has and the time he has.

He’s going to set the delivery schedule of what gets delivered when (in conjunction with the seniors who are going to be doing the design / implementation of the big risk items) and attempts to make the team to stick to it.

Realistically if you get to Lead Programmer then if you have more than 8 people reporting to you, you aren’t going to be writing any code, nor should you be responsible for developing any critical path systems – that’s what other people are for. You _should_ be reviewing all the checkins, but not actually writing much yourself (unless it’s a tool or some firefighting is required).

Now Leads generally end up managers, and their coding skills often go to crap. With the speed that our industry moves at, a Lead Programmer from 5 years ago probably wouldn’t have a clue how a shader is written, nor the deeper deferred rendering tricks you can do with them – he’ll have an overview understanding but I doubt he could implement it; this is just something you have to accept as a Lead Programmer.

Some companies split the lead programmer role into two actual positions – one that is purely management of the schedule and having the programmers report to them for personnelly things (EA does this – they call them Development Directors). These people do have to have a technical background but really are all about management of the people and making sure the jobs get done.

The Lead Programmer in this case is now free to concentrate on the codebase, architecture decisions and the generation of tasks for the coders who report to him to do. In this situation I would expect the Lead Programmers skills to not atrophy as much as in the traditional model. However this model is not the norm.

Going into the Technical Director role is slightly different.

Generally Technical Directors don’t have anyone reporting to them (or if they do, it’s purely a Lead Programmer) – they act as oversight to the lead programmers architecture choices, they make recommendations on external 3rd party software, they set the development process of how the game is made (what the check in policy is and so on), and generally act as riding shotgun for the lead programmer. If something goes down in flames it’s the Technical Director who leaps in there to help fix it all up. So he’s got to be a generalist by definition.

Technical Directors move up into the CTO role, which is the overall company technology strategist – they set the technological rules the company runs on “We are using Unreal 3″ or “There will be no STL in our codebase” or whatever. Basically a higher level Technical Director.

Now that’s an internal Technical Director. There are also 3rd party TD’s – these work for the publishers and they are basically the publishers technologically tuned eyes and ears on a given project. They usually have several projects they are working on, traveling to different developers, working with them on trouble spots, offering 3rd party assistance and also giving a technical judgment on those developers back to the publisher. A TD can totally have a game canceled if he doesn’t believe the team is able to actually deliver on it’s promises because of it’s bad tools pipeline or lack of technical ability in a given area.

Now CTO is as high as you can go, and generally there’s probably 200 of those positions in the world. And the competition is fierce. Most programmers either decide to just stay at a senior level, rack up the salary as high as it will go and just stay there. The alternative is to move into a lead programmer position, and from there move into production as a producer or as a Development Executive.

Really it depends on how comfortable and successful you can be at management.

I hope that helps.”

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>