Abstract
Problem: Why do some developers stagnate while others keep growing and succeeding throughout their careers?
Approach: Tim Cain traces his own trajectory β from a kid with eidetic memory through college, grad school, and a multi-decade game industry career β showing how each phase required stepping into unfamiliar territory.
Findings: Success correlates directly with willingness to challenge yourself, take risks, and continuously learn new skills, even when there's no guaranteed payoff. Preparation meets opportunity.
Key insight: Try something new. You don't have to be good at it β you just have to try. Either way, you learn something and become better.
The Eidetic Memory Foundation
Tim begins with an unusual advantage he had as a child: eidetic (photographic) memory. He could glance at a page for 30 seconds and recall it visually for hours. This made elementary school trivially easy β for spelling tests, he'd simply stare at the word list and ace the test without studying.
But his school counselor warned him it would fade, and it did. By seventh and eighth grade it was weakening; by high school, it was gone entirely. He had to learn like everyone else. However, the foundation it gave him β not just facts, but the habit of engaging deeply with material β served him well.
Big Fish, Bigger Ponds
Tim describes a recurring pattern of outgrowing his environment and stepping into harder ones:
- High school β "Big fish in a little pond." Counselors told him so. The last two years, school was just something he had to attend before going to his game development job at Pegasus (later Cybron), which paid for college.
- College β "Big fish in an ocean." Suddenly surrounded by other talented people, some far ahead of him. He loved it. A fond memory: being the only computer science student in an honors engineering project class, coding the robot arm because he was the only one who knew the language.
- Grad school (UCI) β "Big fish in an ocean of mostly other big fish." He estimates he was in the bottom third of his cohort in raw ability. The classes were brutal β no fundamentals review, you were expected to remember everything. But this pushed him to think more deeply than ever before.
The key observation
Each jump to a harder environment made him dramatically better. He learned more computer science in grad school than in college, and thought he'd learned a lot in college.
Never Stop Learning Languages
Throughout every phase, Tim continuously taught himself new programming languages:
- High school: BASIC (self-taught from his sister's college textbook), Pascal (school), then C and assembly (self-taught, to write games)
- College: C++, Snobol, COBOL, Fortran β a dedicated programming languages course
- Grad school: Prolog and Lisp for AI work β "wildly different" declarative languages where you specify goals rather than steps
- Post-school: Perl, Python, Java, C# β all self-taught
He never stopped. He never said "I know enough."
The Chickenpox Engine
In 1992, a particularly nasty chickenpox strain hit Orange County. Tim caught it along with strep throat simultaneously and was bedridden. Unable to code, he spent the time thinking about game engines he wanted to build.
When he returned to Interplay and finished Rags to Riches, he started building engines: a voxel engine, a 3D engine, and finally the sprite engine that became Fallout.
Around the same time, gaming was transitioning from DOS to Windows. Tim taught himself Windows programming, noticed the overlap between the two OSes, and wrote a wrapper library called GNAW (GNW) that abstracted the operating system away. This is what enabled Mac Fallout β Christa Alvo and later Tim Hume simply wrote a Mac version of the wrapper.
Wearing Many Hats
Tim's career growth came from continually taking on new roles:
- Interplay: Started as a programmer, then added a design hat, then a producer hat β three hats simultaneously
- Troika Games: Added an owner hat
- Carbine/Obsidian: Wore a director hat, which he learned was very different from a lead hat β sometimes it meant stopping the work you loved (coding, design docs) because your job was now telling others what to do
Each new role was another challenge, another thing to figure out what he was good and bad at.
The Core Message: Take Risks
Tim distills his advice:
- Challenge yourself to be successful. Challenging yourself means taking on risk.
- Even small risks count. Spending your own evening time learning a new engine, language, art package, or tool (he mentions learning DaVinci Resolve) β even if it never pays off directly.
- Figure out your risk tolerance. You need to know how much risk you can handle so you can push yourself appropriately.
- Preparation meets opportunity. Success partly depends on timing and luck, but if you haven't prepared yourself, you won't be able to capitalize when the opportunity arrives.
- The games you love exist because someone took risks. And your games won't get made if you don't do the same.
His closing line: "Try something new. You don't have to be good at it. You just have to try it. You might be good at it. But either way, you're going to learn something, and either way, you're going to be a better person."