HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Jonathan Blow - How to program independent games - CSUA Speech

Alexandre Franco9 HN recommenders · recommended in 9 months, 2015-2026
YouTube
190K views · 13 years ago · talk · evergreen

Jonathan Blow speaks at UC Berkeley's CSUA about how to program independent games. He argues for keeping code simple, avoiding unnecessary work, and shipping.

HN recommends it as a talk whose advice on simplicity and avoiding unnecessary work applies well beyond games.

Indie game developmentGame programming & enginesSoftware architecture & design#jonathanblow#simplicity#prematureoptimization#shippingsoftware#gamedevelopment

12 comments from Hacker News

@nlawalker2026 · in “Rob Pike's 5 Rules of Programming”

This reminds me of a portion of a talk Jonathan Blow gave[1], where he justifies this from a productivity angle. He explains how his initial implementation for virtually everything in Braid used arrays of records, and only after finding bottlenecks did he make changes, because if he had approached every technical challenge by trying to find the optimal data structure and algorithm he would never have shipped. "There's a third thing [beyond speed and memory] that you might want to optimize for which is much more important than either of these, which is years of your life required per program implementation." This is of course from the perspective of a solo indie game developer, but it's a good and interesting perspective to consider. [1] ▶ this video

RecommendsView on HN
@arduinomancer2021 · in “Crazy New Ideas”

> Namely you should write code that is fast and efficient I don't think this is accurate. I watched a talk with Jonathan Blow recently and he went on for quite a while railing against premature optimization. ▶ this video

CitesView on HN
@tompark2021 · in “Making Games on Your Own as an Engineer”

TFA has some good points. I'd go even further on the situation where you quit your job to work on an indie game -- if you ever find yourself doing this, and you've never built a game by yourself before, you'd better have several years of runway. For many years one of my favorite talks about indie games development was Jonathan Blow's speech at UC Berkeley CSUA (2011) ( link ) Initially I loved his main message during the talk: "You have to be brutally effective to finish a project in a reasonable amount of time." But there's a part in the Q&A that later grew to be even more poignant to me: ▶ this video > Q: You said you worked on many projects before Braid which didn't quite get completed. What was special about Braid which made you complete it? > A: What was special was it had been a long time since I'd finished anything on my own, and I sat down and decided that "Dammit I'm going to finish something this time". And, "To that end, so I can finish this, I'm gonna make something that is technically pretty simple"... For some of us, it's REALLY HARD to complete a side-project while working full-time job. For most of my career I had completed a real game only when it was for a job (or for a client) and I worked on it full-time. The single reason I hadn't made a game as a side project was because I'd quit before I finished. I finally figured out something that worked for me, and it was counter to all the advice I'd heard. I'm sure this is different for other people, but for me the k

Strongly recommendsView on HN
@lackbeard2021 · in “Ask HN: What does mastery look like in software engineering?”

Example masters: John Carmack, Jeff Dean, Bram Cohen. What do they do? I think they're all extremely effective at getting things done. So be smart, hard working, and laser focused on shipping. A long time ago I saw a good talk by Jonathan Blow wherein he made a point that really resonated with me. The point was that to get good at programming you need the experience of shipping a lot of programs and thus you should optimize your career around shipping as many good programs as you can. Contrast this with the common advice of being an expert in databases, or distributed systems, or OOP, or testing, or something like that... Edit: found the talk: ▶ this video

RecommendsView on HN
@arriu2020 · in “Ask HN: Good C++ code bases to read?”

I've always encouraged people to check out Jonathan Blow's talk on this topic ( ▶ this video ). He points out many reasons why this type of code would actually be the optimal version when weighing other factors. Simple code is easy to write, maintain, and optimize later. Despite the code looking messy, I find it easy to understand and navigate. A counter example of truly confusing code, which kind of does similar things, would be something like this: link

RecommendsView on HN
@anaphor2019 · in “How to Succeed as a Poor Programmer”

I don't think most of this applies only to "poor programmers". The advice about KISS is something many "good" programmers would benefit from following. Likewise, I've seen good programmers recommend using arrays as your first attempt at a data structure as well (e.g. Jonathan Blow, ▶ this video )

CitesView on HN
@Stwerner2018 · in “Ask HN: What is your favourite tech talk?”

Really excited to go through all the other talks listed here I'm not familiar with! Three talks that I tend to reference a lot and have had a huge impact on the way I think about software: The Soul of Software: Avdi Grimm - link The Humane Representation of Thought: Bret Victor - link How to Program Independent Games: Jonathan Blow - ▶ this video

Strongly recommendsView on HN
@skadamat2017 · in “Handmade Hero – A complete game live-coded from scratch”

This is not uncommon in game development. Jonathan Blow and others have spoken at length about why game development is different than web development or other types of software engineering (not in a condescending way but in a "it's different, here's why" way): - ▶ this video

CitesView on HN
@psyc2017 · in “Ask HN: Which developers do you closely follow?”

Every time I get stuck on a project, I watch this video. It's about games, but IMO a lot of it applies to software projects in general, especially MVPs. How to ship something that works before it collapses under its own complexity. I think the bit about remembering to optimize for developer effort is gold. ▶ this video

Strongly recommendsView on HN
@bajsejohannes2016 · in “Ask HN: What's your favorite tech talk?”

Jon Blow's "How to program independent games": ▶ this video It's about much more than games. To me, it's about identifying and not doing unnecessary work. The second half of this video is a Q&A session, which I would skip.

Strongly recommendsView on HN
@nulltype2015 · in “The Witness: the creator of Braid talks about his fiendishly difficult new game”

For anyone interested in just programming, he has a great talk here: ▶ this video about "how to program independent games". Much of the advice seems to apply to other programming projects too.

RecommendsView on HN
@kelukelugames2015 · in “‘Braid’ creator sacrifices his fortune to build his next game”

I've followed Jonathan Blow for a while. He has a reputation for being condescending. If you follow him a Twitter then you might come to the same conclusion. But he has given some amazing talks. link <-compares games to televison link link ▶ this video

RecommendsView on HN
Ideas about a new programming language for games.1:55:24

Ideas about a new programming language for games.

Jonathan Blow
530K views • 12 years ago
#Gamelab2018 - Jon Blow's Design decisions on creating Jai a new language for game programmers58:24

#Gamelab2018 - Jon Blow's Design decisions on creating Jai a new language for game programmers

Gamelab Conference
210K views • 8 years ago
Jonathan Blow on scripting languages9:30

Jonathan Blow on scripting languages

Jeru Sanders
185K views • 7 years ago
Jonathan Blow: Game design: the medium is the message48:27

Jonathan Blow: Game design: the medium is the message

CreativeMornings HQ
119K views • 13 years ago
Jonathan Blow - Jai Demo and Design Explanation (KEYNOTE) - Updated1:13:00

Jonathan Blow - Jai Demo and Design Explanation (KEYNOTE) - Updated

LambdaConf
241K views • 1 year ago
Jonathan Blow - Preventing the Collapse of Civilization (English only)1:04:41

Jonathan Blow - Preventing the Collapse of Civilization (English only)

bus
268K views • 7 years ago
Reboot Develop 2017 - Jonathan Blow, Thekla Inc. / Making Game Programming Less Terrible1:02:49

Reboot Develop 2017 - Jonathan Blow, Thekla Inc. / Making Game Programming Less Terrible

Reboot Develop
112K views • 9 years ago
Jonathan Blow: Video Games and the Human Condition1:44:09

Jonathan Blow: Video Games and the Human Condition

rubbermuck
158K views • 15 years ago
Rant: Entity systems and the Rust borrow checker ... or something.1:01:51

Rant: Entity systems and the Rust borrow checker ... or something.

Jonathan Blow
304K views • 8 years ago
Zach Oakes - Making Games at Runtime with Clojure37:34

Zach Oakes - Making Games at Runtime with Clojure

ClojureTV
31K views • 11 years ago
Failing to Fail: The Spiderweb Software Way59:47

Failing to Fail: The Spiderweb Software Way

GDC Festival of Gaming
570K views • 8 years ago
Demo: Base language, compile-time execution2:07:18

Demo: Base language, compile-time execution

Jonathan Blow
164K views • 12 years ago
The Joy of Programming in Jai - Part 1: Hello World13:48

The Joy of Programming in Jai - Part 1: Hello World

Nuno Afonso
36K views • 6 years ago
Talk: Video Games and the Future of Education2:44:28

Talk: Video Games and the Future of Education

Jonathan Blow
130K views • 6 years ago
Software is in Decline - Jonathan Blow10:08

Software is in Decline - Jonathan Blow

gamedev cuts
179K views • 4 years ago
"Clojure in Unity 3D: Functional Video Game Development" by Ramsey Nasser and Tims Gardner46:22

"Clojure in Unity 3D: Functional Video Game Development" by Ramsey Nasser and Tims Gardner

Strange Loop Conference
24K views • 12 years ago
The Implementation of Rewind in Braid26:56

The Implementation of Rewind in Braid

GDC Festival of Gaming
141K views • 9 years ago
How to Survive in Gamedev for Eleven Years Without a Hit52:12

How to Survive in Gamedev for Eleven Years Without a Hit

GDC Festival of Gaming
1.2M views • 9 years ago
Google I/O 2011: Kick-Ass Game Programming with Google Web Toolkit44:59

Google I/O 2011: Kick-Ass Game Programming with Google Web Toolkit

Google for Developers
106K views • 15 years ago
Q&A: Techniques for dealing with lack of motivation, malaise, depression1:02:23

Q&A: Techniques for dealing with lack of motivation, malaise, depression

Jonathan Blow
62K views • 9 years ago