LLMs drain your gumption
While I wasn’t able to go to Handmade Expo this year, I watched the presentations. There was one that I found particularly interesting. To give those guys some SEO juice, I will link their studio website and the game website.
Part of the talk by Anton Mikhailov was so good, that I think it’s a shame it’s not better accessible, so I am mirroring the interesting part of the talk below. If you’re here only for me, there’s more below.
So you want to be a handmade hero. Uh it’s not hard. It’s not easy either, though. It’s kind of in between. It’s possible. Uh both Nick and I have jobs and kids. Uh so you can still do it even with with that. Um our approach that seems to be working. Don’t sue us. Uh about 80/20 ratio of familiar versus new code is kind of what you want to do if you want to actually do the game bit. If you want to learn that’s totally fine. Uh but basically the familiar code gives you like stability and confidence to sort of get progress easy like you get easy wins. Uh and the new code keeps things motivating. If you’re just doing the things that you know, you get bored and then you just want to learn about something like that’s why you start a new project. You’re like, I know this. I want to start a new project to do a new thing. So, you got to give yourself enough of that stuff. But if you want to ship mostly stick to stuff. So, like the trick is, you know, take your projects, whatever you have, take that pool and be like, what can I make with it? Use those as constraints. Oh, I have serialization and textures. What can I do with that? Right? Like, and then add one new thing or something. Um there we go. Uh so this is the science. Uh this is the best I can kind of come up with.
So like it’s something like ownership of the code gives you familiarity over the code and patience gives you the learning muscle and then the learning is what gives you the motivation and the constraint is what gives you the focus and those are your primary resources and kind of how to get them
and then you combine combine them into these derived resources. If you have familiarity and focus, you get velocity. If it’s code that you understand really well and you have a very particular thing you want to do with it, you can go fast on that axis. As soon as you lose focus or familiarity, you’re sort of hosed. Uh, and focus and motivation gets you that momentum feeling of like I am having fun with this. I want to keep doing it. It’s enjoyable. If you lose focus, you’re like, uh, what do I maybe I’ll do this other thing again. It’s not. And you need momentum to get through these slogs of like you just got to grind out the animation system or whatever, right? Uh and the patience is what you need to avoid these gumption traps. If you read Zen and the Art of Motorcycle Maintenance, it’s a good book. Um acceleration is negative. You just got to focus and be like, “Okay, I’m not going to just randomly flip signs. I’m going to do this correctly.” You need that to get through some of these traps, otherwise they’ll sink you. And the other person works a bit like a momentum capacitor. like if you’re in a down state but they’re making cool stuff, you’re like great. So you get some vicarious motivation, they’ll maybe carry you through and the obligation improves a bit of focus. So if you’re like oh should I do this like oh no actually Nick’s waiting for the scissor region like I should probably do the scissor region. Um
so with that in mind consider that copy paste excessive libraries LLMs all remove ownership to degrade patience and give a false sense of not requiring constraints. That’s like top line. That’s what starts to sink things and you know so on and so forth. If you lose familiarity, you lose confidence, you lose patience, you lose learning, that screws up motivation. So all this stuff cascades into this feeling of like, I’ve done a lot, but I don’t feel like I got anywhere really. And you can kind of trace it back and be like, what is what’s kind of missing here? And when you lose your motivation, you start to want to replace things with like quick results and like bursts of short-term progress that like get you going again, but then you’re like, I don’t that’s slow again. So you need uh that bit. So
the prescription 80% code from the past. Pull whatever you got. 20% new stuff. Have fun with it. Um and then use constraints to cull out the work. Culling out the work is better than having a library to do the work because the library is like just giving you a false sense of how big you can build. And own is better than good. So it gives you because it gives you those resources. Even though it’s not good, it’s helping you mentally through this process. And then you can use the formulas to get desired results. And then less state, less lines, less cycles. Thank you. Thanks.
Before we address the above, Anton made an interesting comment regarding Claude. At some point, he reached out to an LLM for help, but the code was not great. You’ve probably heard this story many a time already. And you probably heard or even experienced what he describes next—that once you encounter a tricky problem, the LLM just starts to guess. Regardless, he found that the LLM helped him get up the speed with unfamiliar API and also it pointed out some common pitfalls, that saved him a lot of time. But then, Anton comes with absolutely amazing dissection of how foreign code (including LLM generated code, but also libraries) sabotages the project.
That is what I want to highlight here. I use LLMs heavily, and when I’m drafting a legal e-mail, an LLM really helps. It saves me time and leaves my energy completely intact. But when I try to code something novel, it’s a total gumption drain. The infuriating thing is, the AI acts like a lazy intern. The mental tax of fighting the model and coercing it to stop cheating takes more energy than doing the work myself. Anton put words to the exact trap: you try to save time with foreign code, but you end up with zero ownership, zero patience, and a mess you have to clean up anyway.
And the lazy intern must be highlighted again. I can’t express how disappointed I am anytime I give the LLM a simple task that is just tedious and as a result, I need to do it again from scratch, and enumerate what I want to have done. Yes, enumerating. Anything short of that, an LLM will take massive shortcuts. Suddenly, it’s almost like programming again, but you’re not. At any rate, I hope the mirror above will serve well the people who would prefer text.