Brought to You By: • Antithesis – verify your system’s correctness without human review or traditional integration tests – and avoid bugs or outages. • Sentry – application monitoring software considered “not bad” by millions of developers. • turbopuffer – a vector and full-text search engine built on object storage. It’s fast, cheap, and extremely scalable. — There can be few people around who care about software performance more than today’s pod guest, Casey Muratori. He’s a programmer and videogame developer, founder of Molly Rocket, and creator of Handmade Hero – a long-running series about building a game from scratch. He also evangelizes about performance on his Substack, Computer, Enhance. We got to know each other about three years ago, first via messages, including this one from Casey: “Why does the industry zeitgeist place so little emphasis on software performance when there seems to be overwhelming evidence that performance is critical to their bottom line? Like you, I run a Substack for professional programmers, but I focus exclusively on software performance. Although we are quite large by Substack standards, so a certain subset of programmers must believe performance is important, I nonetheless hear lots of dismissive excuses when I post on social media. This happens so frequently, I devoted an entire article to cataloging the extensive pro-performance evidence we already have from the world's leading software companies: Performance Excuses Debunked. Strangely, nobody has a rebuttal to why performance is important. When I point people to this, they actually tend to agree. But the prevailing attitude nonetheless stays the same.” I’m delighted we finally have Casey on the podcast because it’s overdue! In this episode, we discuss why software performance matters, why it’s overlooked, and how developers can get better at writing performant code. We explore why performance should be considered during design, the value of learning to read assembly & understanding how CPUs work, Casey’s critique of ‘clean code’, and why he believes testing shouldn't drive software design. We touch on how videogame development has changed, and influential game engines. Casey also tells us why he prefers to write code by hand, not with AI, and more. — Timestamps 00:00 Intro 05:17 Games at Microsoft 12:52 Building games 16:00 Why performance matters 27:12 Why you should learn to read assembly 30:36 Designing for optimization 42:51 How to get better at writing performant software 49:04 Understanding how the CPU works 55:53 Building games then and now 1:05:56 How game engines changed building games 1:10:48 Why new games compete with old games 1:13:25 GTA 6: why is it taking so long? 1:16:59 Casey’s critique of clean code 1:21:48 Casey’s take on TDD 1:24:30 What is good code? 1:27:32 What makes a good software engineer? 1:33:56 Why Casey doesn’t code with AI 1:39:01 AI’s impact on the game industry 1:44:43 AI and burnout 1:50:21 Why you should read papers — The Pragmatic Engineer deepdives relevant for this episode: •Pushing software engineering limits with “napkin math” with Simon Eskildsen •How Games Typically Get Built: prototyping, game engines, and a different type of QA •Game Development Basics: deepdive on how game studios differ from standard software teams •Inside Linear's Engineering Culture: building a performant product with a tiny team •Building a best-selling game with a tiny team – with Jonas Tyroller. A two-person team built a game that sold 1M+ copies More on premature optimization: read or watch Casey’s extended take on “premature optimization is the root of all evil”: https://www.computerenhance.com/p/theroot — Production and marketing by https://penname.co/. For inquiries about sponsoring the podcast, email podcast@pragmaticengineer.com. Get full access to The Pragmatic Engineer at newsletter.pragmaticengineer.com/subscribe