DEV Community

Cover image for How to escape from tutorial land
James Robinson
James Robinson

Posted on • Originally published at thefrontendcoach.com

How to escape from tutorial land

So you’ve decided you're going to learn how to code and you’re going to teach yourself. You curate a small list of tutorials that you plan to start watching. You’re feeling super excited about your code-learning journey, you start working through your list - everything is going well and things seem to make sense. You end up having to rewatch a couple of videos as a few more advanced concepts start to rear their ugly heads. Nevertheless, you persevere and you manage to get through most of the tutorials. You’ve religiously followed them through, you’ve spent weeks doing so - months even. After finishing and feeling really impressed with your progress, you come up with a project idea. With this idea, you then decide to try and create something on your own, and all hell breaks loose. You hit a brick wall, you feel disheartened, and now you're thinking you don’t know anything at all.

Sound familiar? I’ve been there and I’m sure the overwhelming majority of self-taught developers have too. You’re stuck in tutorial-land or even ‘tutorial-hell’ as some term it. Don’t fret, and certainly don’t give up - you will be able to escape from this common trap that beginner coders find themselves in.

Hello brick wall my dear friend

Red brick wall

The first thing you need to recognise is that this proverbial brick wall is actually your best friend. You need to embrace the frustration and the sometimes helplessness that comes with it. Ultimately, this is where the real learning happens. In a real job, this is exactly what you’re going to come across all the time. You’ll need to solve problems that you aren’t sure how to solve and you’ll be doing it with deadlines looming too. For those that are self-teaching, once you recognise this situation is totally normal and expected then you can seek methods to overcome it.

I’m not suggesting tutorials aren’t useful, nor am I suggesting you shouldn’t watch them. Tutorials are useful for learning syntax and/or the basic foundational concepts behind certain technologies. Plus they’re great to get a quick overview of what a certain piece of tech does and how that may fit into the whole front-end landscape. They certainly provide a solid platform to work from. But in the end, they won’t do the work for you and there is no way you’re going to be able to watch tutorials, passively code along and magically develop the skills needed to bag yourself a job.

For you to truly understand something you will need to practically apply what you’re learning and doing so will improve your understanding and cement those concepts. Those that are self-teaching probably already recognise this, and are most likely being encouraged to build code-along projects as part of some tutorials. In my opinion, this isn’t always the best way to learn - it’s a very passive learning experience and all too easy. A lot of students that I mentor often tell me that they watch tutorials and code along but still feel like they’re not actually learning. If you’re learning how to code and you aren’t constantly hitting your head up against a brick wall then you’re doing something wrong. In reality, the process is enjoyable but also very challenging, frustrating, and at times incredibly tedious.

The truth is, being stuck in ‘tutorial-land’ or ‘tutorial-hell’ will most likely come down to a couple of things:

  • You are coming up with project ideas that are too ambitious for your current skill set
  • You are trying to learn too many things at the same time

Lower your expectations

If you’ve just started learning a new technology, let's say React for instance. You may have followed an extensive tutorial and you’re ready and eager to build a project using it - it may even be a project that you want to add to your portfolio and showcase to employers. I would almost definitely hold back on creating something too complex. Start with a very very simple app, and build lots of them. Lower the standards of the project you want to create, I guarantee the one you were thinking of was probably too complex for you at this time. With this approach you can focus on truly understanding the code you’re writing and because your project expectations are a lot lower you can focus on the things that matter.

Ultimately your goal should be to churn out lots of small, almost ugly projects that vary ever so slightly. After you’ve done this you might start finding the process kind of well, boring. That is a fantastic place to be! If the process becomes boring then you know it’s time to add some more complexity, but as mentioned make sure you’re realistic about this complexity, don’t go full steam ahead trying to build a full-stack CRUD app when you’re just starting to learn React.

During this process of churning out smaller apps, try not to copy and paste code. Be honest with yourself if you’re pasting code that you don’t understand. This will potentially bite you in the rear in the future especially when you’re trying to debug issues that involve that pasted code. This process might seem a little underwhelming. The thing is, a large part of effectively learning how to code is carrying out repetitive processes, being incredibly persistent, and practicing over and over again until it becomes second nature. That is how you cement what you’ve learned. Going forward, it will be much easier to build something more complex upon a solid foundation.

Try not to learn too many things at once

If you’re concurrently learning Vanilla JS, React, Angular, Vue, etc, how can you possibly find the time or have the mental energy left to learn any of these technologies thoroughly? I understand why people do this, they see junior developer job descriptions that list half a million technologies and skills so the logical approach is to start learning all of them. In reality, you may end up only working with a few of those skills, decent employers will be willing to give you a shot if you are well versed in the fundamentals and can show an appetite for learning.

Ultimately, you should aim to focus on one topic at a time, remove any unnecessary distractions, and eventually you’ll feel way more comfortable with the things you’re learning.

What next?

The goal for a lot of readers will be to land a position as a front-end developer. Having a semi-structured learning path will really help you achieve your goals. So far, we know that tutorials are useful for building base knowledge on a chosen technology or concept and now we know that building apps (that aren’t too complex) are a great way to cement those learnings. You’re probably thinking this is all well and good but at some point, you'll need to work with something more challenging.

Adding more complexity to the apps you're building may be one way of doing this. That’s great, but ultimately you want to get a job being paid to do this stuff, so your best bet is to try and replicate what you’d actually do in a real job as closely as possible. There are many analogies for this, I love mountaineering and when I’ve climbed some challenging mountains in the past, I always have to get myself into shape before-hand. The best way to get better at climbing mountains is to actually climb mountains. Seems simple and obvious enough, but so many people would head straight to the gym and jump on the treadmill. They might get super fit doing so, but once they put a 15 kg rucksack on their back and have to climb difficult terrain up into the sky they’ll definitely struggle.

Your next step should be to try and replicate what you’d actually do in a real development job as closely as possible. Contributing to open source is a great way to do this. A lot of beginners are hesitant about open source, there is a lot less hand-holding than the tutorials provide and it can be a pretty scary prospect. I’d encourage you to persist and try and find a project (it doesn’t have to be mega-popular or incredibly complex) that interests you and try and make a contribution in some way. This could be:

  • Improving documentation
  • Suggesting a new feature
  • Reporting bugs
  • Fixing any pre-existing bugs

You may be unsuccessful, maybe the maintainer(s) aren’t interested in your fixes or suggestions. Do persist because you will find a project that you will have success with. Even if you don’t, you would have acquired some really useful skills in the process. I plan to write in more detail about the whole open source contribution process soon, so watch this space.

Final thoughts

This idea of ‘tutorial-land’ or ‘tutorial-hell’ probably doesn't even exist, it will most likely come down to your own project ideas that are a little too ambitious for your current skill set. On top of this, you’re also probably trying to learn too many things at once. The outcome of this will leave you demotivated and unsatisfied with your learning progression.

Stepping out of this safe, guided environment is tough, but by doing so your progress and the quality of your learning will almost certainly improve. There isn't a one-trick approach to learning how to code. Tutorials are a useful tool amongst many that you should be utilising - it boils down to you being able to recognise when you should reach for them whilst understanding their limitations.


Thank you for reading!

If you enjoy reading my content and want to support my work, please follow me on Twitter 😊

Top comments (23)

Collapse
 
btlm profile image
btlm

Took me a while to learn how to leave tutorial hell in game development. Combined with perfectionism and fear of criticism was a very huge problem for me.

Your post is very helpful for people like me from the past, thank you!

Collapse
 
jrobind profile image
James Robinson

Thank you, really appreciate the feedback!

Collapse
 
jsheridanwells profile image
Jeremy Wells

Great advice, and great reminders. A couple of experiences I can add: I find I can learn and understand a single concept from a tutorial in isolation, but I need to keep in mind how implementing that concept in a more complete application might be different and require more flexibility. Another helpful practice I've found is to try to keep a small project going over time and add to it as I learn new things that it could use. It helps me to get a more complete understanding of what I've learned, not to mention some experience to talk about in interviews.

Collapse
 
jrobind profile image
James Robinson

Thanks for sharing your experiences. I love your small, ongoing project approach!

Collapse
 
craftogrammer profile image
Rahul

Thanks, I'm into tutorial hell from last 5 years, moving from one tutorial to another LOL. I agree with "too many expectation" thing, I need to lower it down. Right now stuck b/w Harvard CS50 vs TheOdinProject. One helps for stronger CS skills and core programming concepts and another one to become fullstack developer.. :( I want both

Collapse
 
jrobind profile image
James Robinson

I'm mentoring a student who was stuck between CS50 and TOP too! I recommend sticking with one or the other. You don't have to follow both courses at the same time, otherwise you'll run the risk of spreading yourself too thin.

Collapse
 
craftogrammer profile image
Rahul • Edited

Thanks James,

I'm thinking to continue with TOP, and pause CS50. I guess, I can build many things without DS & Algo stuff, and I can learn them later when I am get used to programming.

Your suggestions are welcome if any for me.

Cheers :)

Thread Thread
 
jrobind profile image
James Robinson

Sounds like a good plan. You're very welcome :)

Collapse
 
gauravrandheer profile image
Gaurav

Great advice, I am new to this field, can you tell me how to find an opensource project.

Collapse
 
jrobind profile image
James Robinson

Thanks! Id recommend starting here firstcontributions.github.io/

You can search for projects too. If you click on a project it will show you the issues tagged as 'good first issue'

Collapse
 
gauravrandheer profile image
Gaurav

Thanks

Collapse
 
realtoughcandy profile image
RealToughCandy.io

Some interesting points here. Hopefully this helps some devs that feel stuck.

Collapse
 
jrobind profile image
James Robinson

Thanks, I hope so too!

Collapse
 
tomassirio profile image
Tomas Sirio

Thanks man! needed this

Collapse
 
jrobind profile image
James Robinson

You're welcome! Glad it helped!

Collapse
 
ash_bergs profile image
Ash • Edited

Great post - tutorial hell is my least favorite level of limbo 😜

Collapse
 
jrobind profile image
James Robinson

Thanks Ash :)

Collapse
 
neilblaze profile image
Pratyay Banerjee

Well written! 👏

Collapse
 
jrobind profile image
James Robinson

Thank you :)

Collapse
 
airtonfel profile image
Airton Feliciano

Thanks for the advices, friend!

Collapse
 
jrobind profile image
James Robinson

You're welcome Airton!

Collapse
 
ericdurnell profile image
Eric Durnell

I'm just now starting to learn front-end development on my own, so I really appreciate the time/effort you put into the resources like your website and discord for the community!

Collapse
 
jrobind profile image
James Robinson

Thanks Eric, that means a lot!