Finally, nearly an hour into the keynote, the talk moved on to what he called the "big-gun projects" – Rage and DOOM, which, despite all the other projects happening at id, end up garnering most of Carmack's time. "90-plus percent of my time is at my desk, working on things that pertain to Rage right now and will roll into DOOM."
For Carmack, part of the challenge as id Software grows is keeping himself focused on what he does well. "I am in the fortunate position that I do get to choose what I work on," said Carmack. "I'm the president of the company, although I usually bill myself as the technical director, because that's what I do. Todd [Hollenshead] does the business deals; he's out talking with the publishers most of the time. I'm not even the lead programmer – Robert Duffy manages our herd of programmers now, because I'm an engineer. I want to sit there and make things work. I want to build things.
"Clearly, I've never been a very good people-skills person," joked Carmack, "there's the whole [thing] about how people get promoted just past their point of competence -- I'm trying to avoid that by doing the engineering stuff and not trying to be a manager and do a poor job."
From here, Carmack spent some time talking about where work stood on Rage. "We have very few things that are very significant left to be done," Carmack stated. Among upcoming tasks: a major change to the game's animation system, and some work on the megatexture system to connect two major pieces of the game's wastelands area.
Of course, no one's ready to put an official release date for Rage, but Carmack expressed hope that it would get wrapped up sooner than later. "It'll be done when it's done -- we won't push something out sooner – but we really don't to be here two QuakeCons from now talking about Rage again. We want to get it done sooner than that, and we think that we've built most of the things that need to be done."
As he continued talking about the ever-growing complexities of game development, Carmack talked about their ongoing pursuit for better programming practices, and whether perfection is a legitimate goal. He mentioned asking another developer a few years back if they'd run a software analysis tool on their code, in hopes of tracking down possible issues. "He responded, 'Three weeks before shipping? God, no!'" said Carmack. "They don't want to know everything that's wrong with the project – if it seems like it's hanging together with spit, bubble gum and baling wire, ship it!"
Which was Carmack's way of leading into a philosophy of software development. "In many cases, that's the reality of things – if it seems like it's doing the job acceptably, then it is good enough. It's wrong to think that we're on a quest to make perfect code – we're on a quest to make good-enough code," said Carmack. "The idea is not to have zero bugs, it's to have an acceptable level of bugs."
"And some people hate talk like that, that you're giving up, that you [should] want to be perfect," Carmack continued. "But in so many things, you just can't be, and realizing that is the key to making projects that make a real difference. It's about trying to get out there and make something of value, where the costs are acceptable."
Next: Carmack on the platform wars