From Game Engines to Rockets to AI
5 Tips for Doing Great Work from Programming Legend John Carmack
Recently I’ve been gravitating towards inspiring nonfiction and read Masters of Doom, which tells the story of how the iconic first-person shooter videogame Doom was created by a small American developer called id Software. Lead creators John Carmack and John Romero are painted as yin-and-yang heroes of the story, Carmack as detached technical genius and Romero as charismatic designer and rockstar face of the company.
Unsurprisingly, I became a fan of Carmack rather than Romero and ended up watching his conversation with Lex Fridman, an incredible five hours packed to the brim with insights on game development, software engineering, rocket science, radioactive energy, and AI, his latest venture.
Even with my limited programming knowledge, I can tell that John Carmack has deep understanding of the topics he speaks about. His expertise has been honed over a lifetime of learning, creating, and iterating, obsessively studying and working out innovative solutions in every field he tackles. I wanted to analyse what makes him so inspiring. As a result, here are five tips for doing great work from his words and his life.
1. Doing more gets more done
Carmack is famous for working 12-hour days. In the Lex Fridman interview, he implies that he would work even more if his output didn’t decline in quality after 12 hours.
Despite recent discourse around burnout and anti-work, he emphasises the value of hard work and pushes back against arguments. “If you’re really passionate about what you do, doing more work gets more done.” By putting in long hours, you temper yourself and become a true master of your craft. And here lies the difference between Carmack and your neighbourhood productivity guru: Rather than work for the sake of productivity or even success, it’s a question of: Do you enjoy what you do? Do you want to improve your craft because it brings you joy? If you answered yes, you probably already put as much time and effort into it as you possibly can.
Carmack says he’s lucky to have never experienced burnout and that being able to switch between different tasks helps (research vs. writing code vs. meetings).
The following quote from Masters of Doom shows that Carmack craved long stretches of uninterrupted deep work in order to advance the underlying technology of id Software’s games.
Carmack knew well and good what he enjoyed–programming–and was systematically arranging his life to spend the most time possible doing just that. Beginning with Doom, he had decided to adjust his biological clock to accommodate a more monkish and solitary work schedule, free from Romero’s screams, the reporters’ calls, and the mounting distractions of everyday life. He began by pushing himself to stay up one hour later every evening and then coming in one hour later the next day. By early 1995, he had arrived at his ideal schedule: coming in to work at around 4:00pm, and leaving at 4:00am.
This leads me to the second tip: experiment.
2. Never stop experimenting to improve efficiency
Carmack frequently experiments with his routine to improve efficiency. For example, he shifts his daily run to earlier or later in the day depending on the season. As mentioned above, he was a late riser because he liked working at night but started getting up early when he had kids.
Even if you think you have your ideal routine down, it’s worth trying different ones for a week or two each. Change when you get up, when you go to sleep, your morning and evening routines, when you exercise etc. You never know what might work better unless you try.
Change your tools and work setup too. Carmack reports to Lex Fridman that he recently switched to three monitors after using two for a long time. He also spent one week programming in vi1, teaching himself keybindings through Anki flashcards. While he went back to the more conventional VisualStudio Code in the end, I’m sure he would say that the time wasn’t wasted.
3. Keep track of your daily tasks and reflect
In 1996, Carmack started uploading the daily task lists he kept in .plan files to the internet. These files were used by programmers to keep each other informed of their daily work but Carmack was the first one to make his available to fans of id Software so they could follow along with the development of Doom’s sequel Quake. Later, these files morphed from task lists into essays on technical questions or problems he encountered throughout his workday. In other words, he kept a blog before blogs existed.
We all know about to do lists but there’s value in keeping track of what you accomplished in a day too. More importantly, it’s worth reflecting on the problems you struggle with on a day-to-day basis, recording your solutions and any other thoughts. It doesn’t have to be public although that can definitely help with accountability.
I journal whenever I feel a need to sort out my thoughts and emotions. Recently, I’ve decided to add monthly and weekly reflections as well. The frequency and bullet-point structure helps me keep track of and align with my long-term goals and priorities. I would recommend task lists and journaling to anyone with specific goals in life.
4. How to gain deep understanding of a specific area
At id Software, Carmack was what would now be called the back-end lead programmer. For each game they developed, he created and improved the underlying framework such as the engine and level editors. Every time, he would innovate and stretch the hardware limitations they had to work with to its limits. He was only able to do that because he kept deepening his understanding of computers and programming—thanks to which he is now recognised as one of the best, certainly one of the most experienced programmers in the world.
His strategy is simple: Go through a handful of books to familiarise with the theory, then build some projects, and iterate at increasing levels of difficulty—”pure immersive learning”. To this day, he emphasises the magic of books and their use for going deep on a subject. His intense focus on learning might be a bit unusual for a programmer there is no doubt that it has served him well.
He has been known to apply this strategy to areas other than programming as well: rocketry, AI, and even blackjack.
It was February 8, 1998, and Carmack was about to put his brain to the test: counting cards in blackjack. This had become something of a new fascination of his. “Having a reasonable grounding in statistics and probability and no belief in luck, fate, karma, or god(s), the only casino game that interests me is blackjack,” he wrote in a .plan file. “Playing blackjack properly is a test of personal discipline. It takes a small amount of skill to know the right plays and count the cards, but the hard part is making yourself consistantly (sic) behave like a robot, rather than succumbing to your ‘gut instincts.’” To refine his skills before the trip, Carmack applied his usual learning approach: consuming a few books on the subject and composing a computer program, in this case one that simulated the statistics of blackjack dealt cards.
At the same time, he says going deep isn’t the right path for everyone, in every situation. Surface-level knowledge might be enough or even better for some job descriptions.
One remark to Lex Fridman struck me: Almost everything has interesting layers of complexity that can be fascinating if you really get into it. This echoes Cal Newport claiming that rather than quitting your job to follow your passion, you can find joy in your job by getting really good at it. Your knowledge and skill become your source of joy. Judging from his rich career and the way he speaks about it, this is definitely true for John Carmack.
5. You can do anything with a laptop in your basement
Less of a tip and more of an inspiring end note is this passage from Masters of Doom.
Carmack disdained talk of highfalutin things like legacies but when pressed would allow at least one thought on his own. “In the information age, the barriers just aren’t there,” he said. “The barriers are self-imposed. If you want to set off and go develop some grand new thing, you don’t need millions of dollars of capitalization. You need enough pizza and Diet Coke to stick in your refrigerator, a cheap PC to work on, and the dedication to go through with it. We slept on floors. We waded across rivers.”
I hope John Carmack’s story inspires many more to wade across rivers. It certainly continues to inspire me.
A Unix text editor and forerunner of vim.
Always loved reading and hearing about Carmack and id. The Lex interview is awesome.
Great summary, Vanessa, thanks.
Am going to check out the book