Recently, I have been asked to think about what I want to be when I grow up (Read: What type of programming job do I want?) So I began to do a bit of research in regards to what programming jobs currently exist. In my research I came across the following positions:
From what I have gathered these guys and girls care the most about the player feel. They generally work on “The code that directly touches on the gameplay experience”, are are considered to be the most versatile of the different occupations, as their job within the development of a game can differ from company to company, with some companies ranking it as a junior position and others as senior position.
Tools programmers make “tools” to make the development system slightly less annoying. To use an example that was used in one of my classes, the process of adding clutter to a game piece by piece is often repetitive and annoying. It would be up to a tools programmer to create some kind of system that would make that job as easy as possible for the person adding clutter. Basically its their job to identify a problem, and fix it.
Pretty much as it sounds. They would be the people who make sure that a sound plays properly, without any errors and sounds the way it should from a given position in world space (3D Audio specialization)
The person who does the collision detection stuff. Apparently its very heavy in complex maths.
In charge of networking components (eg. Multiplayer) for a game.
Again as it sounds. These guys are concerned with he code behind making stuff look good and is very optimization and maths heavy
Concerned with the engine the game runs on and the systems it uses.
To be a lead programmer you need to be able to do any of the other jobs or at the very, very least know the best approach in fixing a problem. You need to be able to works very well with other peoples code in order to find bugs and merge code. You also need to make sure that the programmers themselves are working well together and are on track. It also involves a lot of the annoying jobs such as optimization.
Knowing all this, my ideal position would be gameplay. I really like the idea of being versatile with my area of knowledge and being able to work on a game directly. Specifically, I have been very interested in AI for awhile now so being able to do that and work on various systems within the game sounds amazing.
I also like the idea of being a tools programmer, as it’s still a way I can work on multiple aspects of a game, but I would rather be a gameplay programmer. My final choice would be an Engine programmer.
Ultimately, I think I would like to be a lead programmer, but not necessarily THE lead programmer (if that’s even a thing at lager companies).