If you want to be a game programmer, or for that matter any sort of programmer at all, here's the secret to success in just two words: Ship it. Finish the product and get it out the door, and youll be a hero. It sounds simple, but its a surprisingly rare skill, and one thats highly prized by software companies. Heres why.
My friend David Stafford, co-founder of the game company Cinematronics, says that shipping software is an unnatural act, and hes right. Most of the fun stuff in a software project happens early on, when anythings possible and theres a ton of new code to write. By the end of a project, the design is carved in stone, and most of the work involves fixing bugs, or trying to figure out how to shoehorn in yet another feature that was never planned for in the original design. All that is a lot less fun than starting a project, and often very hard work--but it has to be done before the project can ship. As a former manager of mine liked to say, After you finish the first 90% of a project, you have to finish the other 90%. Its that second 90% thats the key to success.
This is true for even the most interesting projects. I spent the last year and a half as one of three programmers writing the game Quake at id Software, doing our best to push the state of the art of multiplayer and 3-D game technology ahead of anything else on the market, working on what was probably the most-anticipated game of all time. Exciting as it was, we hit the same rough patches toward the end as any other software project. I am quite serious when I say that a month before shipping, we were sick to death of working on Quake.
A lot of programmers get to that second 90%, get tired and bored and frustrated, and change jobs, or lose focus, or find excuses to procrastinate. There are a million ways not to finish a project, but theres only one way to finish: Put your head down and grind it out until its done. Do that, and I promise you the programming world will be yours.
It worked for Dave; Cinematronics became a successful company and was acquired by Maxis. It worked for us at id, as well. DOOM was one of the most successful games in history, and we wanted to top it. For the programmers, the goal was to set new standards for 3-D and multiplayer--especially Internet--technology for the DOOM genre, and Quake did just that.
--Michael Abrash, id Software, 1997
(from the collection of articles within the following PDF, hosted on GameDev.net: http://www.gamedev.net/reference/articles/abrash/abrash.pdf)