Avoid coding tutorials so you don’t cap out as a junior developer (FULL GUIDE)

Phil Choi explains how tutorials trap junior developers and offers a way out: build small projects you actually care about, plan with README and UML, learn to Google effectively, and iterate through dozens of them. This builds the problem-solving skills tutorials never teach.
Chapters
I remember my first year of coding. I would do tutorial after tutorial, but when I tried to build something on my own, I didn't even know how to start. There are many pieces that go into an app. How to start the meat of the project and then finishing the project. It's important to get out of tutorial hell in the first year of your coding or you will suffer in your future jobs and projects. In this video, I will show you exactly how I escape my personal tutorial hell forever for the rest of your career. My name is Phil. I became a senior developer after the age of 30. If this video becomes of use to you, please like and share and comment a product project that you are stuck on. I would love to read and help give you input on the comments below. Probably ask yourself, you know, if you want to escape tutorial hell, what kind of projects do you want to build? Right? If you want to become a programmer, you have to like know which field and which projects you want to kind of complete. And you have to be interested in the projects they complete to actually finish them. So actually like when you're in a tutorial, you know, like your hand is held and you're following these tutorials and in the tutorial they're not going to show you like the bad parts. The, they're always going to show you like the easy good parts, like make it look like it's really easy and you don't really get stuck and they don't, you know, they're not going to show them getting stuck because it's going to be bad for their stock or something. But, you know, I used to follow these all the time and then, you know, you don't hit errors or if you hit an error, it's like already planned and you fix it very fast. So I, you know, I used to use udemy all the time in the beginning of my coding career. Actually, I have a bunch of tutorials I bought actually. So I was learning React on here, blockchain, React Native. And I think it's a good resource. Like I watched this all the way through the Django. It was. And I was using LinkedIn Premium and Udemy and I was just trying to learn everything I could. And honestly, when I was using it, it was useful, it was definitely useful. But it would definitely kind of just show me the easy way to do things and the easy way like without any bugs or anything like that. And then when I try to take that into a real use case and because I didn't have that instructor really holding my hand, I felt kind of lost, right? So I guess that's what kind of tutorial hell is, because you just watch tutorial after tutorial and you have a whole bunch of syntax and a whole bunch of things in your mind. It's in a held environment, I. I guess, right? So, like, I guess the environment really matters about where you're learning because once you're set free, it's kind of. You're set free and they're like, okay, go, go do it. But, you know, you have to ask yourself, what do you really want to build, right? So, you know, it could be like a playlist app. I mean, one of my mentees and I, we built this place, it's a playlist app. So it's pretty good, I thought. And you can make a playlist and it would bring up the YouTube link and you could. Yeah, I thought it was pretty cool. You can create a playlist. And it took a lot of planning because I think what I always do when I, you know, want to escape tutorial hell is I really just like, put on paper what I'm going to build and then whatever challenges that come up, you have to kind of figure it out. Because I think as a programmer, right, your, your job is to kind of be cool under pressure because, like, programming is always changing, like, packages are always changing, they're upgrading and then something breaks in production. And, you know, your job is not to freak out. Your job is to quickly learn. I mean, that's the opposite of taking a tutorial, right? Because tutorial, you're in a very safe environment. But then the actual job, like, is always growing and it's changing and you have to be cool under pressure. So, you know, to start this playlist app, we definitely put it on like a UML diagram or Draw IO and you know, you put up all the features that you want to build, like whether it be authentication, search for songs or whatever it may be, right? And also, like, what features there will be, like what edge cases there will be if it breaks, how are you going to notify the client and all these kind of things, right? And it just takes a lot of research and that's why there's a project, a small scale one is very fine to do on your own, but a company, you have a whole department working on UX and UI and thinking about what they want to build, and then you have the developers thinking about how to implement that, and then you have the designers implementing the ideas and then you have the developers implementing the design, right? So it's like a whole process but on a small scale project. You just, I think you think of an idea and you just start building, right? You start writing it down, you start, you know, getting on like a Kanban board like Jira or Trello or GitHub issues and you start breaking down the project like an idea of what you could do. Right. I'm thinking about building a project recently with my friend. It's an LLM chatbot that can suggest you vacations. So like it's kind of like a vacation, like, oh, I'm going to Thailand, but I'm, I'm this age and I'm not into partying, but I really like looking at sites. I think there's enough resources online to kind of like plan an itinerary. So that's kind of like what we're kind of build. What I like to do is like start with the skeleton or whatever or like what kind of parts you're gonna have with the app and then what kind of tasks you have and then you start building up the task and then you know, build up like a, you know, like with those post it notes like, okay, I need to do this to get this done. So you get those first parts done. That's a little bit of a different idea of like what I'm trying to say right now because this is I guess how you plan a project. But to get out of that tutorial hell, I guess it kind of, you have to kind of start with like thinking about what you want to build. So maybe like getting into the idea of like writing your read me and making your Kanban board and the UML diagram. I have another video on that, like how to start a project before you have to really get into a project that you're interested in, kind of get into it and then have that push to finish it. And but when you finish, you're going to learn a lot, right? You could either think of a project like playlist app, like I just showed you or a turn based soccer app, like fantasy soccer app, like if you like soccer, or a landing page with cool and interactive features. And you know, you're going to need to think of a lot of things like edge cases, what happens when a person puts in an incorrect password? Okay, what happened? How many times can they have try to log in with an incorrect password? And these kinds of things come as you build, right? Like you don't think of these in the beginning, but then I think with experience in the planning process you start thinking about them. But that's a little bit against the video right now, but it's just like, you know, in a tutorial, hell, all these things are set for you. And you know, when you're on your own, you feel a little like lost because, okay, everything was set, but now nothing's set and I have to come up with it, right? It's like writing your own book. So, you know, you have to have an end goal of what you want to build towards what skills you want to build up. Let's say you want to build a really cool interactive website. Like there's a lot of animations and like mouse over events and stuff. And you know, by the end of this project, you'll be very good at DOM manipulation. You'll be very good at like all this kind of client kind of rendering stuff, right? And you know, after the project people will know like, oh, this guy knows how to do all this kind of stuff with like mouse over events or key down events or whatever it is, whatever it may be, right? So to kind of learn those things, you have to google a lot, right? So you know, you just get to Googling, like how to search in input without pressing enter with set timeout, right? That's like a good user experience thing. And it's called debounce, right? So how to start searching only when user stops typing. So maybe you don't know what used. Like debounce is before, but then, you know, now there's a delay debounce function. And then they teach you set timeout and then clear timeout and then, oh, you have a nice piece of code that you can keep on using and you've figured out, okay, now I know how to debounce on an input. And it's just like a lot of things because a lot of resources are online, right? And a lot of things are online. But you have to know it's not like you need all the resources to build a certain project. You just need pieces of this and pieces of this. And in the end, like, it's not even like really coding in the end. It's just being resourceful. And recently there's like a job like a prompt engineer. I feel like developer is like a great prompt engineer because you know how to Google very well, like how to get the right response, how to get the results. So googling is probably one of the biggest things to kind of like get you out of tutorial hell. Because in tutorials you have all the answers there, but in real life the answers are there, but you have to filter them very well. To get out of tutorial hell. Like one project that maybe you could really do is like tic tac toe project. So like you could come here, you could go like tic tac toe JS or whatever, right? And then simple tic tac toe game using JavaScript. How to create a tic tac toe game with HML CSS. Yes, it is a tutorial. You know, before you start doing it, you maybe you probably like write some like steps on how to make it like maybe like how I would think about it. I don't know if this is like a perfect way, but I would think about like a, an array of arrays, a 2D array, probably like 001-2-3, 4, 5, 6, 7, 8. And then I think about all the outcomes. Kind of like, okay, If X is at 0, 1 and 2, that's like a win, right? If O is at 0, 3 and 6, that's like another win. So I'd think of all the win cases and then at every single end of like a step, because it's turn based, I check if any of those combinations are like done right, Just like another array that I'd have. And I think it would be kind of fun or simple to kind of do. Then you can like look at other tutorials. Oh look, they did it the same way. Winning combinations. 0, 1, 2, 3, 4, 5, 6, 7, 8. And then on every single turn you probably think about which if they have that combination there. So then you can start putting these or so now you have like the bulk and the logic of the project right now you need to kind of like implement it. So okay, how do I do turn based? Okay, there's current turn and you can have player one and player two as an array or no, the current players and then current player will be like a zero or a one. And then you'd have the grid and then with that grid you could manipulate the dom. So you'd have to know how to like map through like 01234, 5, 6, 7, 8 and then create like empty grid or whatever. And then when you click on there, each one needs to have an event handler for like click. And you could google all these things, right? Like how to make event on click handler on created element. You just look for stack overflow. I used to, I don't know Stack overflow is like one of the best websites because I just like, I like to look and then I like to look for a green check mark or whatever. And it's really interesting. And when you're looking on like stack overflow or GitHub forms or whatever, you have like a very good sense of like community. Because like, yes, you, like there's one tutorial. In a tutorial you have one person or two people kind of teaching you something. But you know, like when a community is trying to get around together and kind of like talk about an issue that people are having and then you realize, oh, I'm not the only one with that issue, kind of validates your questions, right? And you can start thinking like, okay, I'm not the only one. Okay, let me kind of like see how they learn. Or like things like this. And I think like in tutorials you're so comfortable, right? And in a real programming job or something, you're getting paid to solve problems that are maybe already had there. Like they're already exist, but they haven't existed at the company, right? Or something like that. I don't know, like you're paid to kind of like the way I think about it is like this cloud or this bubble and you have the things are changing and you have to kind of like learn how to like fix it and keep it like going in the right direction. But it's kind of like a programmer is paid to learn really fast, fix the issues that arise with or able to think about those problems that are going to happen to like, and make them not happen, right? Because like, I don't know, a sign of a bad programmer or whatever is going to be like a person that cannot think of any of the edge cases. Like, okay, like, what if they try to put an email but they don't have an AT symbol inside? Or, you know, or something like that. And then all the data gets messed up and then you have to restart making all the data later or remove some rows in the database. But in the end, repetition is key, right? You know, you do simple projects like these, practice Googling, because that's what programming is. And you know, you find Google and you find like optimal solutions, but like solutions that you understand and then you try to like push your knowledge, you know, and then try to understand, optimize those, those kind of answers and like put your own little flavor into it, your own little flair. Then after a few dozen projects, then you can graduate into something like a little bit more difficult and then a little bit more difficult and a little bit more difficult. And you know, you can make some complex things like working with sockets, RTC or RTMP or, you know, this might sound like alien, like alien language to you, but after a while you Know you learn how to use all these, you start talking in acronyms. But I don't like people that do that. But I mean these are like protocols. Like, but you know, like then, you know, then you can like hang in the conversations and start building things and then like start thinking, okay, like I learned this in a tutorial or I learned this when I was building this project. And then maybe it's a good implementation of like what you want to do. And you know, you could Even like use ChatGPT to give you ideas or suggestions. And you know, I think lately, lately instead of Google, people are using ChatGPT a lot. But I mean like, I really hope when people are using ChatGPT they really understand the code that they're really copy pasting or something. So you know, maybe you like, you could ask ChatGPT to spit out some code for you in a solution or in a problem or something and then you can say can you explain this code to me? Like I was a five year old or something. And then it could explain the code to you and then you could use it after you understand it. So you know, like you could build like a CRUD app. Like you know, everything on the Internet is a CRUD app. So I always suggest building, like thinking of something you like to do and then you know, build that Create, Read, Update, Delete app. Like all things on the Internet is going to be like some kind of post or users or something like that. And you know, you can build the back end, the front end and probably required, you probably need a database and then you can dockerize them and deploy them on Vercel or Amazon or whatever you need to do. So learning how to start a project, you know, I have a video about that. Learning how to start the project, like creating the readme, the Trello or NB board or whatever and the draw IO, those are kind of like things I use. I use Trello and Trello and Draw IO to kind of organize my thoughts once I get my thoughts down. And I, you know, and also like look into some stuff like user stories or like, you know, the agile work development flow, right? Like you, you have to like get the user stories and then implement those in tasks. And then that's how you can kind of think of, you know, edge cases or whatever, right? And start thinking about like user stories is like you have actors, like who's gonna use this part of the app? Like is it gonna be the admin is gonna be the client or is it gonna be, I don't know like you as a developer, I don't know, you think about like, okay, if I click this button, okay, what does the person expect to happen? What if this happens? What if this happens? And then you can start kind of expanding your mind into like all these edge cases that are gonna happen. Like, what if they click on it five times in a row too fast? Some people do that, you know, and that's like, those are kind of things that tutorials won't teach you. Or maybe they will, but in a controlled environment. But you, you're in, you're gonna be in a free environment at this time. After creating a dozen CRUD apps, now maybe you're ready to build your end goal app with like every single thing. Like crud with HTTP requests and sockets, then maybe rtc, like for video chatting or whatever it is. And you know, you'll have a full scale app. And I always say like kind of maybe clone your favorite app and do it in your own way and it'll be kind of fun. So just start putting the, you know, tasks on trello, you know, make the skeleton, make the back burner to do, doing, done. And then I, what I always like to do is I like to put the month or something right. Like maybe it's October 28th now in Korea, but in November, you can start a project in November 2024, put them down and then put another board down for December 2024. And then at the end of November, on November 28th, you could bring all your tasks from done to November 24th. November, November 2024. And then I always think about, okay, I got to do more in the next month. So then you can kind of get a kind of a burn of how much you've done from, you know, this month to this month to this month and learn how to optimize your workflow. So, you know, research each one and Google how to do it. Put the notes in. I mean, I could show you some kind of trello that I have here. These kind of Things like get YouTube audio link or i18 translations and you'll see these. Like one way you can get out of tutorial hell as well is what I like to do is when I'm starting a project, I don't really know how to do it. I go to GitHub.com and I can type in like, like, I don't know, like react native boilerplate, right? And boilerplates are usually really good because they're like maintained by huge open source like places. And you'll see like the stars and all this kind of stuff, like stars, meaning get up, get up stars, and how many times it's been forked. And then you can kind of see like. Like one thing I always, like, I always see people ask is like, oh, is my folder structure correct? Or something like this. And, you know, looking at this kind of stuff, I think you can kind of see like, okay, this is how you're supposed to kind of separate your code and you have, like, services or have your screens, navigation, your hooks, like every single project or something like you'll have an express skeleton or like, one thing I always use is like Django cookie cutter. It's like a huge, huge community. But they kind of teach you how you should kind of structure your app and stuff like that. And they kind of make all these like, markdown files and kind of stuff to like, tell you the instructions of what is the correct way to do it. Because I think a lot of thing in tutorial is kind of like, yes, I can do it, I can build it. But, oh, what if I'm doing it wrong and someone looks at my code and they say I should do it this way? And then you start kind of doubting yourself a little bit. But in the end, if it works and it makes sense to you, do it right. But in. In a team environment, you're gonna have very experienced people kind of doing that anyways. Yes. I don't fault anyone for, like, wanting to do something the correct way, but if you keep thinking about that, you're gonna kind of keep slowing yourself down a lot. So just get building, and then on the next project, you'll make it better, and on the next project, you'll make it better. Anyways, so, you know, tutorials are useful to plant the seed in your head and give you confidence that you can be a programmer. But to be a great programmer, you have to be able to link all the pieces of the puzzle together and be able to think of all the steps from start to finish. You must get into the habit of searching for the answer to a small piece of the problem and then implementing that and fixing the bugs along the way. A few thousand hours of that, I promise you, you will be great. And it'll get easier as time goes. So be ready to be on the edge of your knowledge and let's get to work. Remember, if I can do it, you can do it too. Coding saves lives.
More from Phil

day in the life of a software engineer | 5 hour productivity | building my dev agency 🔥

day in the life of a software engineer | 3 hour productivity | coding my 6-figure community startup

day in the life of a software engineer | 5 hour productivity | coding our sns startup app LFG

day in the life of a software engineer | 5 hour productivity | creating apps that makes big money






