I'm Brett Slatkin and this is where I write about programming and related topics. You can contact me here or view my projects.

11 December 2013

John Carmack on vastly simplifying assumptions

This retrospective in Wired on 20 years of Doom with John Carmack is a great interview. It goes a lot deeper than building the game and how the industry has evolved over time. For example, take this quote from him:

That's one of the most important decisions: You can sacrifice something to make a net value improvement. We can make something that would not be possible any other way, and add in value for millions and millions of people here by sacrificing some degree of rightness. Putting away something that's great to have, but deciding that it's not as important as what we can get if we are willing to do without it.

I call these vastly simplifying assumptions. When you're writing code or building a product, deciding what not to do is more important than choosing an initial goal. John's advice here is that you find the best cut of your problem space: What obvious things could you eliminate from your project that makes everything else dramatically easier to accomplish?

The downside is you'll get flak for doing less:

You had some of the people in the simulation business that would look at and almost be insulted by things like Doom. Because they could see that it clearly wasn't doing everything right. There was no filtering on the pixels, the colors were banding. And they could tell you couldn't roll your head, and you can't do all these different things. People were a little bit put out about it because they knew all the tricks that I was pulling.

But Doom was a huge success anyways. Those things didn't matter. Carmack's team made the right vastly simplifying assumptions. It was worth it. This is how you apply the ethos of "worse is better" and not let the perfect be the enemy of the good.
© 2009-2024 Brett Slatkin