How to stop obsessing over finding the perfect tutorial/resource?

I've had this feeling for a long time, where I will obsess over whether a tutorial is good or not, and I feel like I always have to ask for confirmation from a pro before using a resource. This is bad because it really gets in the way of just learning. Instead of learning, I obsess over whether a pro would recommend this tutorial. I feel like I have to follow the exact learning path that the pros followed, even though every programmer learnt in very different ways. It really gets in the way of me enjoying stuff and makes me feel discouraged. I feel like before I start programming properly, I have to find the perfect tutorial. I can't drill into my head that most of the pros just learned by trial and error.

Another similar problem: whenever I notice that I'm using knowledge from elsewhere, say something I didn't figure out myself, like basic platformer physics (which I learnt from a gamemaker tutorial), or something I looked up on stackoverflow at one point, I get that same strong negative/discouraging feeling, like I should've learned it out the way the exact way the pros did, but of course, I can't erase the knowledge I gained, so it just sits there, discouraging me.

Does anyone else have these problems? Any advice? Thanks!

Edited by James on
That sounds exactly the same behavior as over engineering which is poison to software development, and actually goes against the basic concepts if you follow Mr. Muratori streaming.

You should put your hands on, and do the actual work, try whatever you feel is challenging on your own. You will never get the things right the first time, regardless you have followed the perfect tutorial.

Most important thing is whatever you decide to start working on, complete it and hopefully make it usable, it doesn't have to be perfect the first time, it will become better the more you try.
I've been dealing with this on and off for quite a while, and recently started to get over it. What I did, as itzjak mentions, is just started a project. I realized I'm not going to get anywhere if I never actually start on something.

Some advice that's been ringing in my head lately is that starting a project, even without knowing what you are doing, gives you context into what you need to learn. So instead of searching for the right tutorial or learning resource, start on your project first - and then when you get stuck, look into resources for that specific thing. Having this context gives you a much better idea on what you are looking for, and gives you the ability to judge whether or not the resource applies to what you are trying to do.

I've been talking about this sort of thing a bunch through my current project and I've been blogging every step of the way - and a big purpose of documenting it this way is to show people that they can do it too! No matter what skill level you are, just start your project and progress will come. I hope this helps.
Trick
blogging every step of the way - and

Offtopic, interesting to see other projects coming along @Eric. Would you mind sharing a link to your dev blog or a thread where you specify what tech are you using, are you using GDI to create lines or the rendering is entirely done by you pixel-pixel.
itzjac
Trick
blogging every step of the way - and

Offtopic, interesting to see other projects coming along @Eric. Would you mind sharing a link to your dev blog or a thread where you specify what tech are you using, are you using GDI to create lines or the rendering is entirely done by you pixel-pixel.


I thought I linked to my blog in the post, but you can find it here: https://blog.erix.dev/asteroids/

I'm planning on making a "Part 0.5" post where I explain more of what my initial setup is. I'm not using any libraries, so all of the rendering is done pixel by pixel. I'm using a slightly modified (early) version of Handmade Hero's win32 platform layer to get a window, user input and hot-reloading.

Edited by Eric DeSmet on
Thanks for the replies, guys. I suppose it's best to just start working on something. Although there is another problem similar to the first one I have: Whenever I notice that I'm using knowledge from elsewhere in a project, say something I didn't figure out myself, like basic platformer physics (which I learnt from a gamemaker tutorial), or something I looked up on stackoverflow at one point, I get that same strong negative/discouraging feeling, like I should've figured it out the way the exact way the pros would've figured it out, but of course, I can't erase the knowledge I gained, so it just sits there, discouraging me. Any more advice? Thanks.
We are all on our own path - so to me it doesn't make much sense to compare our learning paths with others. You might want to ask yourself: how do you know exactly how the pros figured things out? And if you do, does it really matter? At the end of the day, we all want to be great at what we do, and how we get there is unique to all of us.

With regards to using code we didn't explicitly figure out ourselves - use it as something to learn from. The pros may have done something similar in the past, this is actually how we learn new things. If you didn't know how to do something before, seeing somebody else's code gets you closer to learning how to do it yourself. Then through practice and doing it enough times, you will know it too. We can't expect ourselves to know how to do everything up front.

Is your problem that you didn't figure something out yourself; or that you feel you don't understand it in depth ?

There is often several way to solve a problem or several way to arrive at a similar conclusion. I find that I rarely find a solution and stick to it forever. I generally think it perfect at first, then encounter an issue or edge case that doesn't work and need to delve deeper and get a better understanding of the problem.

If the solution comes from someone else, I try to at least have some idea of how it works and the eventual limitations, and don't spend too much time thinking about it if it's not necessary. But after sometime, I might need to try to understanding it deeper.

One example that comes to mind is projection matrices. The first time I needed to do some 3d (several years ago) I just copied it from the internet. At some point I searched a little deeper on how they work because I had trouble understanding why something I wanted to do didn't work. Only a few month ago did I try to construct one myself from zero, understanding everything math related. It took me several hours across several days and some discussions with a friend. And there are probably still things I don't get. But figuring it out was empowering in the end.

My point is, as the others said, that by working on things and caring about how they work you'll figure things out. You don't need to know everything at first, but you need to take the time to dive deeper in things that are important to you.
Trick
We are all on our own path - so to me it doesn't make much sense to compare our learning paths with others. You might want to ask yourself: how do you know exactly how the pros figured things out? And if you do, does it really matter? At the end of the day, we all want to be great at what we do, and how we get there is unique to all of us.

With regards to using code we didn't explicitly figure out ourselves - use it as something to learn from. The pros may have done something similar in the past, this is actually how we learn new things. If you didn't know how to do something before, seeing somebody else's code gets you closer to learning how to do it yourself. Then through practice and doing it enough times, you will know it too. We can't expect ourselves to know how to do everything up front.



I know it doesn't make sense, I know it's completely irrational, it's just something that discourages me. I suppose the only way to get over it is to just try my hardest not to compare myself to others and form my own path.
mrmixer
Is your problem that you didn't figure something out yourself; or that you feel you don't understand it in depth ?

There is often several way to solve a problem or several way to arrive at a similar conclusion. I find that I rarely find a solution and stick to it forever. I generally think it perfect at first, then encounter an issue or edge case that doesn't work and need to delve deeper and get a better understanding of the problem.

If the solution comes from someone else, I try to at least have some idea of how it works and the eventual limitations, and don't spend too much time thinking about it if it's not necessary. But after sometime, I might need to try to understanding it deeper.

One example that comes to mind is projection matrices. The first time I needed to do some 3d (several years ago) I just copied it from the internet. At some point I searched a little deeper on how they work because I had trouble understanding why something I wanted to do didn't work. Only a few month ago did I try to construct one myself from zero, understanding everything math related. It took me several hours across several days and some discussions with a friend. And there are probably still things I don't get. But figuring it out was empowering in the end.

My point is, as the others said, that by working on things and caring about how they work you'll figure things out. You don't need to know everything at first, but you need to take the time to dive deeper in things that are important to you.


If I copy someone's solution, I always try to understand exactly how it works, but I still sometimes feel like I cheated and that I should've figured it out on my own.
I started really getting into lower level programming (mostly C) about a year ago. At first, I found myself searching for tutorials and trying to find examples of what others had done before me. But over time, I actually started to understand the core ideas behind the language, its reason for existing, how it compares to other programming environments, its flaws, that kind of thing.

There's a problem with putting so much stock in "the pros". It's very easy to trust the wrong "pro". There are plenty of people giving out advice who probably shouldn't be doing so. There are tons of bad ideas about programming. I would say they tend to outweigh the good ones. You're likely to bring back a truckload of garbage every time you search.

Lots of things that are actually just some relatively small thing you do (say a platform layer or collision detection) get trumped up so the person doing the explaining can appear to be an expert. Many things that have a name only have a name because people came upon the same problem over and over again and found a similar solution.

So I would say focus on trying to solve the problem all by yourself first. Only once you get stumped (like a day or two) should you even think about consulting other sources.

You're trying to cultivate self-reliance. Then you won't need the pros or any central authority figure to tell you how to make things.