I wasn’t sure if this belonged in help or not. I have attempted to learn coding languages multiple times at this point, and I usually just wind up quitting after I run into some hurdles after hours of watching some youtube series. This usually occurs because the video is outdated and I run into errors that would have not existed at the time of it’s creation, or I try to have fun and make the code my own and I run into errors myself.
It’s not that I’m bad at learning, but reading through resources can get boring, and the youtube videos aren’t any better. I find myself having to reread and rewatch videos constantly to get it. It’s just not sticking, so something needs to change. I’ve realized I’m a lot better of learning if I get my hands into something and figure out how to use it practically on my own, or if I just search for it out of interest. I have ADHD and recently managed to get adderall, but it hasn’t changed the fact that I simply find traditional methods of learning boring. People don’t get to the point. They construct code for you to use, but I would rather see multiple examples, theory crafting etc. Things that make me think “oh, I could use it for x or y” and then make me want to go out and make something.
I also got quite a bit out of working with source code in the past, continuing old projects that died down. Anything like that would honestly be a blessing if I could figure out how to dissect it all.
So my question to those of you who have had similar problems learning in the past would be what do you recommend for someone looking to finally escape this cycle? I have a passion for video games, and I’m tired of having so many ideas, yet feeling like I can’t implement them.
If you like theory crafting, pickup a book or two on design patterns, such as Game Programming Patterns by Nystrom, Robert and/or any book on general programming patterns in Python.
To feel really comfortable with programming, it helps to study computer science. Binary trees, how data structures like arrays and dictionaries work under the hood, operators, memory management, etc. Boring at times? Definitely. But it’s a very strong foundation upon which any house can be built, i.e. learning any language will be so much easier since they all share same concepts under the hood.
Generally, people learn best when they’re working on something that’s just a little bit outside of what they already know how to do. The problem is that as a beginner, doing self-study, it’s hard to know whether something is a little bit, or a lot, outside of what you know.
So, some stuff you can do that will make tutorials more useful (I have no idea what level you’re at, so forgive me if the examples don’t really apply):
Never just follow - make your own changes to the tutorial projects. Tutorial teaches you how to make the character jump when pressing space? Ok, then see if you can make the character jump when pressing a different button, or making it jump automatically when touching another object, or implementing double jump, or… you get the idea. Take whatever the tutorial shows, and make variations.
Look up all the words and concepts. Tutorial uses if-statements? Go read about if-statements, try to do more stuff with them, etc. Tutorial uses some built-in function? Look up the documentation and find out exactly what it does.
Break the code and fix it again. Does it matter whether that word is in upper or lower case? Try changing it and see whether that breaks anything! If it does, read the error message and try to figure out what it’s saying. Then fix it. Do this anytime you’re the least bit unsure about whether some detail is important or not.
When working on non-tutorial projects… Well, sometimes with programming you gotta get stubborn. All programmers get errors - don’t let those scare you off. Read them carefully to see if you can figure out what they’re trying to tell you. Error messages are helpful once you learn to interpret them. If you get stuck on one, post your code + error message + description of what you’re trying to do somewhere, like on this forum, then people can help you out.
Oh yeah, and a general tip (again, I don’t know where you’re at, maybe you already know this): Run your code as often as you can! Any time you’ve made a small change you think will bring you closer to what you want, run it, just to see that it doesn’t generate any error messages. That way, you won’t end up writing a huge piece of code, only to be met with 20 errors when you finally do run it.
There are many video and interactive tutorials and classes online, too, if that’s more your speed. Just google “design patterns” or “beginner (language)” or “intermediate (language)” etc. Best ones are paid, sure, but many good free videos / tutorials. Just find a channel that’s best speed for you and dive in.
If you do buy a book, you’ll have a list of topics (table of contents) to go find videos/interactive tutorials of online. For most books you can get table of contents for free so that could be a nice starting guide.
I look at each design pattern as a new weapon or upgrade to my weapon. Life is a roguelike. You try, you fail, you try again. But as long as you upgrade your weapons and skills… you’ll beat the final boss eventually!
Learn by doing has always been my philosophy. Get some reading material of course as well though for reference.
The way I have ‘taught’ myself C# over the years in that ‘other engine that starts with a U’ and now Godot is to go back to the start of video games.
(When I say taught I am in no way an expert and still consider my programming skills intermediate at best)
Learn how to build a Space Invaders, Asteroids, Pacman, Mario or any other old school arcade/console game you might want to build. You will surprised how different each one can be from a point of view of teaching something different in programming.
And they also teach you some nice optimisations along the way (like object pooling for example).
I taught for 11 years. Adults often spend more time wondering if they’re studying the right way as opposed to actually studying.
One great way to accelerate your learning is to invest in it- commit to a class. Putting money down helps. If you don’t want to invest money, get a friend to commit sitting down and learning with you at set times.