This week, news comes that one of the most influential programmers in the videogame industry, John Carmack, will be receiving a lifetime achievement award at next month's Game Developer's Conference in San Francisco. Carmack joins luminaries including Will Wright and Shigeru Miyamoto. Carmack is known for popularizing the first person shooter genre with innovative games such as Wolfenstein 3-D, Doom, and Quake. I spent months interviewing him for my first book, Masters of Doom, and was always impressed by his commitment to his craft - and his dedication to sharing his knowledge (and code) with others. In honor of his honor, here's an unpublished excerpt from my Masters of Doom interviews (this one took place in 2000) in which Carmack tells me why he enjoys programming.
JOHN CARMACK: It is one of those things where it really has this wonderful sense of rightness. There’s something about working on the programming where you’re able to create things out of thin air. It's so flexible and such a creative medium. You’ve got these almost limitless possibilities. If you could think about it and figure out the right puzzle piece way of fitting it together, then you could then make it happen. [I enjoy this] sense of being in this self-contained world where you don’t need a machine shop full of tools or you don't need to order supplies from different places. You've got your computer and your basic development tools and you can just sit down there and it’s up to you. It’s not anybody else’s fault if it doesn’t work. It’s all you. And I guess that’s part of the thing. I’ve never been a team player, I don’t like team activities or anything like that. That’s probably a good chunk of it. You don’t have to rely on anybody else when you’re working on the programming stuff. It’s very cut and dried. If it follows the logical progression of the rules established, it will work. Everything makes sense. Even when tracing out the hardest, most awful bug and it’s kind of random and it doesn’t seem to follow any rhyme or reason, you can always come back the bedrock of this: it does make sense, you just don’t understand it yet. It's great when you find something that seems so horribly random and you find out that you really understand it. That does happen in all forms of engineering, but it’s just so much more fluid and rapid in computers. Comparing against some of the people that I deal with in the auto racing stuff or rocketry stuff, they still have the same types of things when they finally understand why something didn’t work right, But the difference between that and the computer stuff is it may take so much longer, the tests are so much cruder, you can’t repeat the things and in the end you may have burned and broken various other things or had to wait weeks for new parts to get in. But with a computer, you can just work at it until you can’t work anymore. Eventually, it is always possible to get it. There is hardly any time when you can say 'this is not possible to find.' Computers are deterministic things. At some point you can go in and start emulating the entire machine, cycle by cycle, and find out exactly what’s happening. That’s probably the big thing: in the end it all makes perfect sense and it’s accessible sense. It’s not like some form of high energy physics or something where you spend a decade of your career preparing for that one big blast of the particle accelerator - and then work for five more years analyzing this stuff. You can find the truth in programming on a much more rapid scale.