How to Escape Tutorial Hell as a Developer
Aug 15, 2023 by Florian
I still see a lot of questions on how to get out of tutorial hell and start learning programming effectively. I talked about this topic in a few places and made one or two videos about it. But I want to put it into a well-structured post that I can reference later.
Table of Contents
What is tutorial hell?
Tutorial hell is when you watch one programming tutorial after another without actually progressing.
Maybe you've experienced this before: When you watch the instructor explain, it all seemingly makes sense. But when you then try to write some code yourself, you don't know what to do.
Maybe you even take notes while you're watching a video. But when you close the tutorial and try to do it yourself, you go blank.
You always rely on step-by-step instructions and feel unable to build something yourself. Or really understand programming. And maybe you're worried that you will never find a job this way.
Why you are stuck in tutorial hell
You land in tutorial hell because your learning approach is too passive. Just like you can't learn to swim from watching someone else do it, you can't learn programming from watching tutorials. You need to actually build stuff.
Don't get me wrong, programming tutorials have their use. But you might be using them wrong. Passively watching a programming tutorial will do almost nothing for you. But even following the instructor step by step, and copying their code, is a bad approach.
How to get out of tutorial hell and learn programming effectively
As I already touched upon, building your own projects is the way to get out of tutorial hell.
Every programmer should have some side projects to tinker with, try out stuff, and stay up to date. This is especially true for beginners and those still early in the learning process.
Learning happens by making mistakes and then fixing them yourself. The only way to do this is to write your own code and then search for a solution whenever you're stuck. When you do this, you will naturally start to understand and remember the code and programming concepts you're using.
What should you build?
Many programming beginners who want to build an app or a website get stuck because they can't find ideas. The most important thing is that you build something. But your project should also motivate and challenge you.
If you already have programming experience, I will talk about what you can build further down below in this post.
If you are a complete programming novice, it's okay to just follow along with some beginner tutorial. But here is the twist: Don't just blindly copy the code the instructor is writing. This will teach you nothing.
Instead of following the instructor and typing out their code 1:1 you need to force yourself to think and encounter your own problems. You can do this by building a slightly different project.
Let's say you're watching a beginner tutorial that shows you how to build a note-taking app. Instead of building the exact same note-taking app, you could build one with a slightly different layout and data. If the tutorial's notes have a title and a description, you could add a number picker to set a priority (from 1-10) for the note. Your notes could also have a different layout and display an additional text that the original doesn't have. Those are just examples and you can come up with ideas for new additions yourself.
When you modify the project like this, you force yourself to actively think about the project and understand what is going on. How do I put the text at the bottom instead of the top? Wait, let me just rewind to the part where the instructor explained it. Hm, if this attribute puts the text at the top, maybe I could try ... OMG! It works! Now I get it.
This process of getting stuck on a very specific problem, searching for a solution, and then updating your code is what moves you forward. You don't get this when you just copy features directly from a tutorial.
Obviously, completing a course will take much longer this way. But in return, you actually learn something!
Websites like Codecademy that give you little exercises to solve right in the browser can be a good starting point. But once you know the absolute basics this becomes a very ineffective learning method.
Once you watched a beginner tutorial or two and successfully built a little app, you should stop watching beginner tutorials altogether. The only time you should watch a beginner tutorial again is if you switch to a completely different framework.
Once you're past that stage, I recommend that you build your own side projects. This will teach you how to build production-grade apps and not just toy projects.
Again, building your own projects is a great learning method because you encounter problems along the way and then have to find solutions for them (by googling, reading documentation, asking other developers, or even ChatGPT). Every time you actively solve your own problem like this, your brain has a reason to remember the concepts and methods that brought you there.
By the way, if you're looking for an active community where you can ask and answer programming questions with thousands of other developers, you're welcome to join our free Discord server.
Some app ideas
Programmers often have trouble coming up with ideas for what apps to build. Ideally, you build something that excites you and keeps you motivated. But don't get hung up on this. If you can't come up with an idea, just rebuild an app that you're using yourself. Try to make it a bit better.
I'm a fan of building actual little startups. Nothing huge, just little websites or apps that solve a problem and have the potential to make money. This is another motivation boost. Of course, it's not easy to build software that gets paying users but that's not so important. The point is that you are motivated to build that thing. If it happens to make money, it's a bonus.
For example, I built my latest project, smartdiary.co, which is an artificial intelligence journal, in just 2 afternoons. Then I slowly added additional features, which each taught me a lot of new programming knowledge. I talked about AI project ideas in a recent post.
Ideally, your project should have a few users. It's okay if that's just your family or friends. But when you have real users, you also treat the project like a real app. You can't just drop the database anymore if you made a mistake. You have to worry about security best practices. You have to make sure the thing keeps working after an update without major bugs. And so forth. Having real users forces you to work like a professional developer.
Having a project in production is also much more impressive to recruiters. For one because they can try out the app without having to download your GitHub repo. But it also shows them that you can build something all the way to production. I know developers who get top job offers because of one or two apps they put out.
When you build projects that motivate you, learning programming turns into play and you have fun doing it. This is not only much more enjoyable than watching tons of tutorials and taking notes but also more effective.
Don't blindly follow "best practices"
When you work on your own projects, don't worry so much about following a specific architecture or best practice. Write the code in a way that makes sense to you at that time. And if you later find out that your current code structure doesn't work out, you can just refactor it. But again, by running into this problem first-hand, you actually learn why you need a certain architecture or best practice. This is better than blindly following some instructor's advice because "this is how it's done" or over-engineering your code with pointless code patterns that you read about.
You can also have multiple projects where you use different tech stacks. This allows you to try out different tools like ORMs, authentication solutions, UI libraries, or even different frameworks. Then you can make informed decisions because you know the differences between them firsthand.
Lastly, make sure to keep the scope of your project realistic. Don't try to build the next Facebook, because you will just get overwhelmed and quit. Build a nice little app, release it to production, and then add additional features afterwards. Grow it over time like a plant.
Tutorials are still useful
This doesn't mean you should only write code and never consume any content. If you never take any input, you will just build bad habits and get comfortable with your bad code.
Watch tutorials and blog posts when a topic interests you. But remember to always try out things for yourself. If you have implemented authentication in your app, for example, it might be a good time to read some articles about the topic. Try to find things that you have been missing. Then implement them into your own project where you see fit.
Have the discipline to come back to your old code and refactor and improve it. Again, this is a learning process, so it should feel a bit uncomfortable and challenging. That's a good sign.
When you build projects and store them on GitHub, you slowly build your own library of code for later reference, When I need a reminder about how I did something, I just look at one of my old projects. I never take notes while watching a tutorial, I just build stuff to understand it. And if I need to look something up several times, I will naturally remember it eventually.
Bonus: Teach what you learn
Teaching is another terrific way to cement your knowledge. When you try to teach something, you quickly realize where your knowledge still has holes because your explanation won't add up.
You can either start a Youtube channel or write a blog. If you build it yourself, your blog could even be one of your personal projects. My web dev playlist on Youtube teaches you everything you need to build fast and search-engine-friendly websites. Building a blog is a small but challenging undertaking that can bring a lot of fun and new skills.
Blogging also helps you build your personal brand, get more well-known in the industry, and ultimately get more and better job offers.
Alright, I hope this post helped you improve your learning process as a programmer and get out of tutorial hell if you're stuck.
If you found this post helpful, you should sign up for my email newsletter. I send out tips like this every other week.
Tip: I send regular high-quality web development content to my free email newsletter. It's a great way to improve your skills and stay ahead of the curve.Subscribe Now