A game programmer is the worker of a software company that makes the actual programming of the game. He/she receives the directions from the game designers and then program the game according to their specifications.
The game programmer must know at least one programming language. Games are usually made in C, C++, Assembler and, lately, Java, C# and J#. He must have basic backgrounds in mathematics (algebra). They must also master a game programming API like DirectX for Windows, SDL for Windows and Linux or Allegro for DOS protected mode.
If the game is tridimensional (3D) like most current games, he must also be an expert in linear algebra topics (vectors, matrix operations and so on). He must also know a lot of physics for the simulation of movement, jumping and friction, among others.
He usually has a degree in computer science. But there are also amateur programmers who learn by themselves. On the shareware market, most of the programmers are self-taught. Also, there are few game programming schools, like Digipen, that directly focus game programming and the skills needed to accomplish it.