July 27, 2022

How To Escape Tutorial Hell (For Developers)

Have you ever finished a developer course, went to try and use what you learned to build something, and felt like you completely forgot everything you just learned? This is much more common than you think. Most importantly, it does NOT mean that you’re incapable of becoming a developer.

You most likely got trapped in tutorial hell. In this podcast episode, I not only shared advice on how to escape this but also how to be as efficient with your learning as possible as you progress forward with your journey of learning how to code.


🤝  Join our junior friendly developer community:

🔥  Want more personalized help from me? Here are the paid mentorship and review services I offer:

❤️  If you find my content helpful, please consider supporting me by becoming a channel member and get access to additional perks. Every little contribution helps and is actually used to pay my bills.


Disclosure: Some of the links below are affiliate links. This means that, at zero cost to you, I will earn an affiliate commission if you click through the link and finalize a purchase.

📚  Web development books and other products I recommend:

Dev Interrupted
Behind every successful tech company is an engineering org. We tell their story.

Listen on: Apple Podcasts   Spotify


Don Hansen:

Tutorial hell did you know, 95% of aspiring developers are stuck in tutorial? Hell I have no idea if that's true or not, but I am telling you this holds so many aspiring developers back. It is crucial that you don't get stuck here. Anyways, we're gonna be diving into that today. Uh, for those that are new, welcome to our web development podcast, where we help aspiring developers, jobs, and junior developers grow. Kind of, I don't know. I've been saying that so long, essentially. We just help aspiring developers navigate through all the bullshit. That's it? Uh, yep. It's after 30 seconds so I can cuss. All right. Cool. So tutorial hell is a spot that a lot of people don't even recognize Starn I would argue a good chunk of people. when they come to me, they're often struggling with being able to build stuff. So they've gone through these courses and spent months going through these long courses, taught 'em so much syntax and programming concepts and how to build stuff. Right. You just learned how to build that navigation. You just learned how to build that hero. Image and like position stuff and build some interactivity with even like, you went through a tutorial that you had to put up a, a server, right. You could even build your own API amazing stuff. Right. And then, you know, you're following along with the tutorial and you try to build your own project and you get past the hump of like, okay, what do I even build? Right. But then you finally, you're like, I've always wanna build this, you know, what. I'm gonna try it with what I just learned and then blank. Nothing. You, you it's like, you didn't learn anything. How frustrating is it to spend so much time? Especially like when you hold a full-time job, you're doing this on the side. You spend so much time and then you go to build something and nothing comes out. I'm telling you I've been there. I've been pissed off at. And I'm like, I've even thought like, is this for me? I cannot believe that I can't take what I just learned and build something out. What the hell just happened. Right. The problem is people. Okay. Software engineering is so weird. If you are someone that was successful in traditional education. and you are used to going to a classroom and you are used to getting assigned assignments and going through lectures and then getting tested on it. And then. You know, learning new concepts and remembering that and using note cards to remember that and try to reinforce that in your memory and then getting tested on that for your final quiz or your final paper, whatever it is. And then you do that. You get an, a, B, C, D, or if you're like me an F in some cases in traditional education, cuz fuck traditional education toss all of that to the side. Right? You don't need that anymore. You don't need that style anymore. you have not even trained for what it takes to be a software engineer, but you have to understand that you have to toss that aside and you have to realize that learning how to code is going to be a very different experience. There's no test at the end. there's no test at the end. And people like creating note cards for becoming a developer and trying to understand concepts. I'm telling you it like fine. If you want to do that at a very fundamental and basic level to remember like really simple concepts, fine, but you have to, you have to take that knowledge and you have to implement it. You have to reinforce it. And we're gonna talk about a few different ways to reinforce that knowledge. You're not the goal isn't to remember everything. It's not it's to literally learn some stuff, get your hands dirty. And so I'm gonna tell you something that like really throws people off. If you've spent an hour learning something, uh, on a course, you should be building something to reinforce it. Literally just an hour. You're learning some syntax. You need to toss that course aside when you're done with that module or whatever, and then build something with. Right. You need to try it. You have to, and it happens that early. And for I'm telling you so many people, maybe you're this person you tell me if you are in the comments, if you're on YouTube, whatever. Um, if you are spending weeks months without building anything on the side, you are wasting so much time. That knowledge isn't. Going to stick unless you implement, unless you apply it in a different way, unless you apply it to an actual problem, unless you build something that kind of makes sense. Something tangible, even if it's like a tiny little feature of a website that you use constantly. Right? So for example, let's say you're just learning basic positioning. Um, maybe like you're a big fan of Twitter and maybe you just build what a tweet is. Right? You have a little. little div and you have little divs inside of it that have different information. Right. And you build that. You implement it. So what your tutorial said to do, who cares way too many people get caught up? Like, what should I build? Right. But try to relate it to features, like when you learn positioning, you're like, okay, I've used what hundreds of websites that have used different positioning techniques with CSS on it. Like, let's take like a really small piece of that. So I don't feel overwhelmed. I'm gonna build it right. It doesn't have to be perfect. You don't need to feed a with backend data, et cetera. Like obviously those applications are big. Those features are big. Just. Try to break it down into the simple aspects, right. It's gonna have. Little front end little HML CSS. And you're gonna have some text, maybe a button, right? That's huge. If you can build something on the site, a little feature on the site to reinforce that module, that one hour module that just talked about positioning. That's huge. And if you didn't learn how to color the text yet fine. Don't color it. If you didn't learn how to, um, you didn't learn like the proper way to center it, I don't give a fuck just center. Center it the way that you just learned, right? You're gonna learn different way. Centering's gonna be fun if you haven't even learned that there it's, it's, it's fun. Just frustrating slash fun. So, but I think people need to break out of a good course. So here's the thing, a good course. When you go through it, you spend an hour in it and you feel good about it. You feel like you're learning, you're passing the challenges. A good course will make you feel like you're remembering it. A good course will push you along. And a good course should. but where a lot of courses lack is it's just one way of running that through your head, to be able to understand it. And you need to basically understand what you just learned and apply it to like five different situations, five different types of features, and it's really gonna help reinforce it. So. Think about like small things that you could build. Again, try to relate, simplify these large applications and think how is positioning? How can I practice positioning with this tiny little feature, right. Start trying to train your mind to do that. It's not gonna happen right away, but the, the faster you can do that, the faster you compare it with your course, that's phenomenal. There are other strategies. I'm not a huge fan of no cards. I don't think remembering specific syntax is helpful. I don't think like remembering syntax, that's actually the easy part. Being able to create implementations and understand the problem you're creating and even focus on the efficiency and the structure of your implementation. Those are harder concepts that are gonna take a while to learn. Like just remembering the syntax. You'll eventually, remember it. Stop trying to remember the exact syntax it's irrelevant. Especially in the beginning, you will pick it up through repetition, but also one thing you can do is when you're practicing that feature. a really cool thing you could do well. So you, from your course, you could even say, okay, um, this is where, like you hear about this imaginary duct thing. Buy one, actually. Yes. Buy an imaginary duck. I've been wanting to create imaginary, not imagin. Okay. Buy a rubber duck, a real rubber duck. I will eventually sell them with my logo on it. Okay. Listen, if I'm giving you money, I want some, or if I'm giving you advice, I want some money for it. Right. But for now it's free buy someone. Else's rubber duck. You put it aside, you learn that module. You, you basically, you learn some of the concepts that you. Are going to have to apply now, but even before you apply it, try to explain it to this rubber duck. So rubber Duck's dumb. So rubber duck has no idea what you're about to teach it. Right. It sounds silly. I'm telling you do it. Look at rubber duck in the eye and you explain how frustrating. Positioning things with float floats are and why it's frustrating. And even going through the concept of trying to explain like, okay, here is what floats are used for. And here is where they start breaking down. And here's where. You know, like some of the bugs that can happen and you could even think back like, okay, this module, show me the proper way to use afloat, the improper way to use afloat and like, try to explain what you just learned to that rubber duck. That's you're you're training your mind to start applying what you just learned in a, a slightly different context, actually, a slightly more complex context, getting your mind trained, to be able to kind of just toss that concept around in your head. In just different ways. Look at it in different ways. Look at it in different angles, try to teach that rubber duck, which is very different than you learning the concept. It starts training your mind to start essentially using that concept and implementing it in a, a slightly different way. And when you start training your mind to think about things in a more complex manner and apply it to specific situations, teaching that rubber duck is a different situation, it's gonna help solidify that concept. Right. And so you just taught it to that rubber duck and you're like, you know what? All right. Don told me to build this really, really simple feature. You know, I'm gonna take, uh, with floats, I'm actually that Twitter card or whatever, I'm gonna go ahead and position things with floats. We're gonna see what happens. Right. We're gonna break stuff. It's okay. If you break stuff. And so then you apply floats to that tiny little feature that you're building out and you code it out. Right. And if you have to look stuff up, here's the key thing. If you have to look stuff up, that's okay. That's normal. I am telling you. You're not trying to remember this stuff. It will get reinforced in time. Give yourself time. If you have to look stuff up, try to avoid going back to that tutorial and look up API documentation for it. Right. So what API documentation exists that talks about how to use floats? look that up, just something different than your course. And here's also another neat thing. When you start going through like different courses, that'll explain a concept in a different way. Sometimes there are certain courses, that'll explain it in a way that resonates with you. And then sometimes you're just like, I don't get a synchronous behavior. Like what the hell is happening here? I get lost. I'm Tony. I am someone that got lost with asynchronous behavior. Um, actually I'm gonna give a. Yeah, we're gonna go down this road. I got lost with asynchronous behavior. It was kind of confusing. It was floating around in my head and it took a long time to grab it, but it really threw me off was promises and JavaScript. What the fuck is happening in promises? I, I feel like it, it threw me off for so long and it was so I would go through different, um, educational material to try to understand 'em they would even explain it in a different way. And, um, then I've. We were, it was in a coding bootcamp and we were explained it in a couple different ways. And like, I think I started getting it in the last portion, but I still, like, I went through courses and it helped, I supplemented, I supplemented with more and more education. And then. I even tried to apply it. And then I still blanked. I, I was getting closer, so it's just trial and error. And then I would go back. I would learn like a different resource or supplementation resource to try to understand it. I'd get a little bit further. I'd understand it a little bit more. And then, you know, I would get stuck and then. then I remember we built a promise library. We built a really, really basic version of a promise library. It sounds really weird to say, okay, I don't understand promises. So I'm gonna build an entire promise library. Like, how the hell am I supposed to do that? But when you really simplify that down and you go, like, when you look at. Everything that, um, when you look at how a promised library is built and you understand the basic concepts of that, and you try to rebuild that thing to understand like what's happening under the hood, right? So maybe you're just doing it with. um, asynchronous calls and you really dumb it down and simplify it down and you build your own promise method. That is it. It's forcing you to think about what you're doing. You're essentially breaking down this really advanced concept into smaller, um, smaller concepts that you can understand a little bit better. It's a really, like, if you're really stuck and you've gone through multiple resources, you try to code it out, like try to build a basic version of it. Like for example, react virtual, Dom, what the hell is going on with a virtual Dom? It is so confusing at first. It's so confusing at first. But one strategy we did is like, You know, we went through Jake where we picked it up and you, you could do this with vanilla JavaScript for people that are like hardcore or vanilla JavaScript. Sure. Whatever. Um, but we rebuilt a very basic version of the virtual Dom that would update in similar ways that the virtual Dom would build. Right. And so we broke down where like, okay, reacts is really scary monster. It's like very scary stuff. I and complex stuff. I'm never gonna understand it. So we took a piece of that. that's still very complicated. And then we try to rebuild it and we had to break it down into all of its small parts and really understand how that virtual Dom worked. I'm telling you whenever I would get stuck with super advanced concepts that got me through it, and now things started to click and they don't, there's not this giant light bulb that just brightens up your whole. Uh, vision and you're like, I got it right. It's a little light bulb. You're not aiming for these big leaps of like, oh, I understand everything about promises. Now. I understand everything about positioning now, et cetera. It's little leaps, it's little wins and you have to recognize those little wins. And sometimes it helps just to look at your code a month ago. are there any, like when you look at what, so you're progressively gonna build more complex projects and when you go back to one of your first projects, look at your code and just think, is there anything that I would change? Would I do things differently? And if the answer is yes and you're like, I actually would probably change this, or I would build this function in a different way. That's huge. That's growth. And I think sometimes people start losing. Um, they start losing the ability or they never really built it up, but you have to develop the ability to analyze your growth as a software engineer, cuz let's face it. This is a long journey. It's frustrating. And if you feel like you're just spinning your wheels and nothing's happening, you're not making progress. It's discouraging. It's yeah, I'm I wanna do a video on motivation with software engineers. I'm I'm gonna give you a heads up the thumbnails, probably gonna be fuck your motivation. And that's gonna be an interesting conversation, but you have to I'm I'm telling you almost no one is gonna become a software engineer without seeing progress being made. It, it it's frustrating. I'm sure you've experienced it. Especially people coming out of a coding bootcamp and you're like, I learned all this stuff, right. But now I'm trying to build my own stuff and it's not really, first of all, when you come out of a coding bootcamp, you're gonna get that. It's gonna take a while for things to solidify, but even the self-taught path, you have to analyze your own code and you have to be patient with yourself. You have to be patient with yourself. And if one way of learning something, doesn't work. Try another. Tries. Sometimes it's even switching to a book that can help teach you it. Sometimes it's switching to a video. You don't like the text and you wanna switch to a video and someone explaining it to you in your own way. Um, that's the thing I used to think. Like there are so many courses. If I created a course, no one would wanna view it. And I, my perspective has definitely changed. And I think sometimes you just have to find the creator, the author of that course. They teach it in a way where you kind of just get, and sometimes it takes some searching. So for people feeling discouraged, like you're going to these courses, you're like, maybe this isn't for me, I'm telling you pretty much. Every developer has felt that at some point, and there are so many different methods to get past that. And so I highly, I highly recommend you, you, as soon as you can start building your own projects. So there's this, I, I kind of talked about being able to apply what you're learning. In different ways. And a lot of times it's just implementing, implementing its coding. It's building features, building another feature that uses it building another feature that uses a loop, building another feature that uses a loop. Right. And it's through a lot of repetition through solving different problems, but also. As a software engineer, you are 100% a problem solver. You are a lot of software engineers avoid this. A lot of software engineers just want code. And you know, they want to like develop more efficient algorithms, et cetera. I don't care what position you are at. You are gonna be a problem solver. First, you, your opinions about how to solve the problem before even technology gets introduced matter. And I think software engineers need to start thinking about this stuff because a huge question, mark, in people's heads. how do I figure out what to build again? That's gonna come with time. I gave you a recommendation previously to do it, but like you have to start training yourself to identify problems that exist. Another strategy. I highly recommend if you're going through courses and you're starting to think, okay, what do I need to build? What do I wanna build? What's gonna help reinforce what I'm learning. Think about your old in. think about the problems that existed in your old industry. Think about the crappy, you know, what shitty software that you used that frustrated you and made your job twice as worse. Think about that software. Like really feel it, think about the offer. Feel some hate, feel some hate motivation. No, don't, don't hate him, but like I'm, I'm serious. Think about that software that sucked or that software that you wanted. Can you build that software? You're now learning tons of skills. You're you're learning tons of technical skills to be able to create solutions that solve real problems. You have so many opportunities to look in your past. You have so many opportunities to look at other applications and what exists. Like I, I, a lot of you are probably on social media. You're constantly seeing people complain about things and building new things and coming up with new ideas and getting frustrated cuz these, uh, certain ideas don't exist. If you aren't connect with people on tech on Twitter and hear what they're talking about, hear what they're kind of curious of building. And like, I wish I had this tool, et cetera, just get more involved in the developer community and just like even businesses in general, you know, when you become a professional developer, you're probably gonna be building tools for businesses. Um, get yourself trained to be able to identify that. And then sometimes it takes, you gotta make a little bit of progress with your courses to know what you can do with code and what tech can do in general. Sometimes there's more generic videos that can showcase that. And eventually. eventually you're gonna have these kind of abstract ideas that like you don't, you don't even know if you can create an application for it. You don't know if it exists or what it would look like or how you would code it. And then you start progressively getting better with your courses. And eventually this comes together. Eventually you start learning enough to at least build a feature, a subset. Of this software you wish you had in your old industry, you're like, okay, that was actually easier than I thought I struggled with it, but I eventually built a small little feature. What else could I build? Let's start breaking this giant application down that I, that all of a sudden doesn't seem so abstract now that I have more technical knowledge. I'm like, I actually, I can think of a solution for it. Uh, or I can think of like a really cool feature that I wish I would've had in my old industry. what I'm telling you. I feel like I've told a lot of aspiring developers and a lot of aspiring developers feel discouraged because things don't click right away things don't, it takes a while for things to click and they struggle with implementation, especially the first time that they try it. And I think. You need to really be patient, give yourself time, break things down into smaller components of the ultimate thing that you're trying to build. And sometimes it's just diving into different types of courses that are gonna teach things in a different way, picking up a book instead, uh, you know, building that software, uh, from the ground up and like really breaking that, that software down. Or like, if you're trying to learn. A certain type of concept. That's really advanced breaking that advanced concept up and maybe building a few functions that are gonna do what this function ultimately does. And just your mind to think about things in a slightly different way. So tutorial hell is really easy to escape if you've been trapped in it for a long time. Sometimes that means, you know, you gotta go back and learn some fundamentals. Sometimes that means you gotta go back to your course and try to pair some projects with some of that material. But. It's easily escapable. And I think a lot of people overwhelm themselves. Um, and they get down on themselves and they make themselves feel like they're not intelligent enough, not capable enough to, to build real software that companies are gonna pay them for a. I had those feelings, I almost gave up because of those feelings. And I'm telling you I'm laughing right now because I was so fucking stupid. I had no idea what I was talking about. I had no idea. I, I can't believe I've even humored these self-defeating thoughts. Like in the moment, it can feel very discouraging as a professional developer with some experience behind me, I'm telling those were just self-defeating thoughts that I just had a, okay, got it. I'm gonna move past that thought. I'm gonna keep coding. Eventually this is gonna click and it does. It does eventually click, but you have to do project work. You have to build stuff. You have to have to have to build stuff. And that's where people get trapped. That's where people get trapped. I think that's all I wanna say about, um, tutorial hell, I've talked about it, different, um, aspects, but it's a mindset thing because I think eventually you do escape it and you get more comfortable. You get more confident with what you can build. It's literally just pushing forward and. Building projects and making sure that you're pairing actual implementation with your courses. That's it, it's really simple. It's not necessarily easy, but it is simple. And it's a mindset shift. Give yourself enough time to start letting that mindset integrate and listen to this video again. Um, if you wanna listen to this video or listen to the audio again, to just when you'd start feeling down, do it. Um, but yeah, that's it. That's all I have to say. Uh, tutorial health for now. I think it's, it's pretty simple. Everyone's gonna have a different, unique situation. Um, if you want, if you have questions, more questions about it, we can do more videos on this. That's fine. That's fine. I'm always happy to dive into kind of these like mindset, soft skill stuff. Um, but yeah, let me know what you think of the comments and if you haven't already feel free to join our junior friendly discord community, um, Yeah, the link is in the description and I always forget everything I'm supposed to tag at the end. I don't know, join our disc community. We'd love to have you. That's it. I'll see you in the next episode. Everything.