In this engaging discussion, Casey Muratori, a renowned programmer and educator behind the Handmade Heroes series, dives into his journey from the tech limitations of the 80s to modern-day gaming innovations. He critiques traditional object-oriented programming, advocating for procedural techniques that enhance flexibility and efficiency. Casey also emphasizes the need to rethink math education, illustrating its disconnect from real-world programming. Listeners will gain insights into the evolution of video codecs and the impact of customer feedback on game development.
Casey Muratori critiques object-oriented programming for its complexity, advocating for a focus on identifying system primitives instead.
He emphasizes the effectiveness of self-directed learning over traditional education, highlighting its role in practical programming skills.
The discussion addresses the shortcomings of the U.S. high school math curriculum in preparing students for real-world programming applications.
Muratori shares his transformative experiences at Rad Game Tools, illustrating the value of accountability and customer interaction in programming.
He expresses concern over the declining creative diversity in game development, attributing it to the over-reliance on existing game engines.
Deep dives
Understanding Object-Oriented Programming
The discussion emphasizes a reevaluation of object-oriented programming (OOP), arguing that it should primarily be viewed as defining API boundaries rather than as an association of methods with data. The speaker argues that OOP can become overly complicated, leading to a misunderstanding of its true purpose. Instead of focusing on objects, developers should concentrate on identifying the appropriate primitives that drive the interaction across system boundaries. This approach encourages clarity in programming structure and promotes better integration of systems.
Educational Background and Self-Directed Learning
The speaker shares his unconventional educational journey, indicating that he did not attend university and learned programming independently right after high school. He points out that he regretted spending extra time in high school and feels that the education system's curriculum inadequately prepared him for real-world programming challenges. Instead, he highlights the importance of self-education in key areas like linear algebra, which significantly benefits programming performance. This self-directed learning experience is often contrasted with traditional education pathways, showcasing its effectiveness in building practical skills.
Critique of the U.S. Math Curriculum
The speaker critiques the math curriculum from U.S. high schools, arguing that it inadequately equips students with practical mathematics necessary for programming. He emphasizes that essential concepts, such as vector algebra and geometric primitives, are often overlooked in favor of memorization of theoretical proofs and postulates that are rarely applicable in programming contexts. This disconnect results in a lack of preparedness for practical applications, which he argues are vital for a practitioner in the tech industry. The focus should shift towards teaching applicable skills that resonate with real-world problem-solving.
Experience at Rad Game Tools
The speaker recounts his time at Rad Game Tools, mentioning it as a transformative period that significantly advanced his programming skills. Within this environment, he highlights a culture of accountability where programmers were responsible for both developing products and responding to customer issues directly. This hands-on experience taught him the importance of interfacing directly with users to understand and fix the bugs in real-time. The combination of individual ownership of projects with customer feedback ultimately led to the successful proliferation of their products in the gaming industry.
Shifting from Object-Oriented to Procedural Programming
After experiencing difficulties with OOP, the speaker transitioned to a procedural programming style, calling it a refreshing change. He explains how with procedural programming, he could achieve clarity in code organization, allowing for simpler integrations and better performance. The switch enabled him to utilize features that are essential in game development without the encumbrances associated with OOP's complexity. He argues that a focus on procedural structures enhances maintainability and clarity, particularly in large codebases.
The Impact of Game Engines on Creativity
The speaker discusses the current state of game development, noting that while many tools have made the creation of games easier, there seems to be a decline in creative diversity and complexity. He points out that many modern games tend to share similar mechanics and design, largely due to reliance on existing game engines like Unreal and Unity. This trend leads to a situation where developers may play it safe by sticking to formulas that work rather than innovating with unique gameplay experiences. He expresses concern that the simplification of game development may lead to fewer groundbreaking games.
The Future of Conferences in Education
The conversation highlights the limitations of traditional conferences in providing equitable access to education and networking opportunities. The speaker contends that conferences often favor those with financial means while neglecting potential attendees from underprivileged backgrounds. Instead, he advocates for a shift towards more inclusive models that offer widespread access to educational resources online. He shares his vision of making learning available to as many people as possible, rather than limiting it to a select few who can afford to attend such events.
Reflections on Handmade Hero
The speaker reflects on his project, Handmade Hero, and its unintended impact on educating aspiring programmers. He shares stories of individuals whose lives have been changed as they learned crucial programming skills through his series. Despite the initial technical challenges and the extensive content created, he acknowledges the potential to condense this information into a more accessible format. The aim is to facilitate learning in a way that allows newcomers to grasp essential concepts without needing to navigate the entirety of the original series.
Pursuing New Directions in Programming
Finally, the speaker expresses interest in exploring languages like Jai but acknowledges the challenges of switching from an established language like C++. He highlights the need for robust tooling and community support when adopting new technologies. While he recognizes Jai as promising due to its features that facilitate high-level programming, he emphasizes the difficulties of adopting new languages given his focus on practical outcomes. The conversation wraps with a general sentiment of curiosity towards evolving programming paradigms while being cautious about the switch due to existing commitments to current workflows.
I had the honor to chat with Casey Muratori - one of the most inspiring figure in the programming world. I followed Casey's work for a long time now and I've learned a lot from him. In this discussion I ask a lot about how we got where he is now - where did he learn to program, how his work looked like, how did he handle projects, when did he switch away from OOP.
Casey created a lot of educational material, but one course stands out: Performance Aware Programming Series on https://www.computerenhance.com/ - I'm a happy subscriber, I love this course, you should check it out too, if you want to understand what makes your program go brr. (runs fast)
Casey Muratori:
https://www.computerenhance.com
@MollyRocket
https://www.mollyrocket.com
https://handmadehero.org
Game Engineering Podcast
Show links: https://podcasters.spotify.com/pod/show/lukasz-sciga
Spotify: https://open.spotify.com/show/7tExkDJcI6vvmpCguX8Ygd
Apple Podcasts: https://podcasts.apple.com/us/podcast/game-engineering-podcast/id1683109481
Youtube: https://www.youtube.com/channel/UC9J9u3apteD0EuFjzRpt71w
RSS: https://anchor.fm/s/dd7643a4/podcast/rss
X: https://x.com/g_engineering_
Get the Snipd podcast app
Unlock the knowledge in podcasts with the podcast player of the future.
AI-powered podcast player
Listen to all your favourite podcasts with AI-powered features
Discover highlights
Listen to the best highlights from the podcasts you love and dive into the full episode
Save any moment
Hear something you like? Tap your headphones to save it with AI-generated key takeaways
Share & Export
Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more
AI-powered podcast player
Listen to all your favourite podcasts with AI-powered features
Discover highlights
Listen to the best highlights from the podcasts you love and dive into the full episode