I swore I would build things and not get bogged down in textbook exercises and YouTube videos. Then I swore at myself when I got stuck all over again.
Here are 2 things to consider before venturing into tutorial hell.
A brutal sigh slips out of my mouth as I open my textbook to Chapter 7 of my Javascript textbook.
I open Medium to read a few articles to distract myself momentarily.
The titles of my recommended articles are ghastly.
“367 Javascript Resources You Need To Use — Today”
“531 Exercises to Dominate JS Encapsulation”
“63 Ways to Iterate Through a JS Array That Are Not Map And Will Make You Look Smarter Than Using Map (Includes Recipe for Vegan Scones)”
Who the hell has time to use all these resources?
Who the hell has time to even verify that all these links aren’t broken?
Do the people recommending all these resources actually — you know — use these resources?
But I digress.
I am years into my coding journey and I still occasionally find myself in tutorial hell.
Maybe this has happened to you too.
So I wanted to take time away from my 2 (and only 2) prized JS resources (Eloquent Javascript, 3rd Edition, and the excellent video series Javascript30), to rant about… resources.
First: An Obligatory Disclaimer
I am not advocating for any specific course of study or resource, just sharing my experience and frustration.
The resources I am ripping on in this article are all super helpful, well-thought-out, and have their uses.
And I’m not trying to disparage people from creating or even curating lists of resources.
(Also, I’m going to refer to things as “tutorials” or “resources” but when I use those terms I’m referring to all books, YouTube videos, sites, platforms, etc.)
But with so many great (often free) resources online, there is too much of a good thing in my opinion.
That’s why I’d like to slow down and think about how we’re deciding what to choose and why we should or shouldn’t use tutorials to learn to code.
So, how to choose whether to use a coding resource?
First, let’s investigate why a coding resource is worth using.
5 Criteria For a Good Tutorial
Holy s*** did this guy just complain about lists and now he’s giving us another list?
I know, I know.
But I was once a beginner on the coding journey (still am, in some respects) and I think I would have benefitted by considering a few things before choosing a resource.
Here’s a short checklist of 4 things to decide if a resource is worthwhile:
0. It’s Project-Based
Unless you are a complete beginner, your resource needs needs needs to be project-based.
Project-based doesn’t mean fizz-buzz, or exercises on splitting a string into characters. It’s something like a To Do List, or a Recipe Generator, or a website.
You know, something you’d be proud to show a friend or loved one.
You need to be producing a product that can stand on its own in the real world by the end of the tutorial (or at least be on its way to doing so).
This is not just for the extrinsic reward of being able to show it to employers.
More importantly, it’s central to your own sense of accomplishment.
You do not run screaming into the kitchen to share with your family that you dominated Fizz-Buzz.
You may, however, do this if you deploy your first real-life app to Heroku and begin managing a database.
There are plenty of steps between those two events but you need to begin the project-based journey now to get there.
Each project completed puts some gas in your tank to keep going.
I can honestly only admit to finishing a handful of projects (my Github is a cold, cold graveyard of attempts).
But the inspiration that each completed project gave me is the reason I’m sitting here!
1. Don’t Get Too Detailed
A good tutorial is detailed, but not too detailed.
What do I mean?
Following a tutorial is a risky venture. If you’re cutting and pasting, you won’t internalize anything.
But if a tutorial is too hard with not enough support resources, you may get discouraged and drop out.
It’s important to find a project-based resource that doesn’t get you too lost in the weeds.
For example, I am doing Javascript30 now, and it’s literally 30 different projects for JS — everything from a drum machine to manipulating a webcam and audio.
Each of these could be its own drawn-out tutorial with pitfalls and significant time devoted to figuring out the concepts.
But do you really have significant time to devote just to something like drawing with the Canvas API?
I don’t!
The way this tutorial series goes, I’m getting a taste of many different things in a very user-friendly way. Each of these 30 projects could branch off to be its own quest, but at least I have a solid foundation to start from.
Who knows what I’ll need in the future, but I now know where I’ll start if I need to tackle any of these 30 JS concepts on my next project.
For me, who is striving to be a full-time full-stack dev, this top-level approach suits my goals just fine.
I probably won’t become a JS expert this way, but I don’t need to be.
2. Make It Hands-On
Nothing is worse than finishing a lesson or a chapter of a tutorial and realizing you still need hand-holding to tackle the concept.
To me, that’s a sign that I haven’t had enough hands-on time with the code.
If a resource is not hands-on, make it so. Pause the video before the instructor does something and try it yourself.
Or review the concept the next day and try to recreate what they did, checking back in on the video for things you forgot.
It’s up to you to get the most out of the time you’re investing in this resource, so make it count!
3. Find Stuff That’s Engaging
When it comes to online learning, the medium™ is the message (wink, wink).
There are lots of ways to learn. YMMV on engagement.
For me, I tend to learn better from videos than from books and articles.
Some things I like about video learning content:
- Multimedia (music, visual, audio)
- Instructors rephrasing, clarifying, and paraphrasing throughout
- The ability to pause, try something and go back
- Videos tend to be bite-sized, easily digestible bits of info
I still use books of course, but will often supplement with videos if I’m feeling stuck.
Like I said, YMMV, but I encourage you to think critically about what works best for your learning style and actively seek out those resources on whatever topic you’re studying.
Dollars to donuts you will find the resource you need.
If you’re feeling discouraged, it may be that you haven’t found the right messenger for your needs.
The Only 2 Reasons to Pick Up That Tutorial
In the end, it all depends on what your ultimate goal is with this whole Webdev thing, right?
Do you want to build the next FakeBlock, work at a FAANG company, or just make an app to schedule your kid’s carpool times?
I will posit that regardless of what your ultimate goal is, there are only 2 real reasons to pick up a coding resource.
Here are the only 2 good reasons to follow a coding tutorial, YouTube channel, or textbook:
1) You are starting from scratch (never, ever coded before)
2) You want to pick up a new language or framework so you can do X
It’s either reason 1 or reason 2.
And once you are no longer a beginner (say, after a year of coding), it’s basically only reason 2.
Time is the Most Important Resource
I can feel you rolling your eyes as you read that header, but we always have to think about our goals when entering into any arrangement, whether it’s with an employer, a textbook writer or a YouTube Channel.
Investing your time in a resource means you should get a lot out of it.
Take care in choosing what you pursue, and absolutely document the process with a Medium article or blog post.
I write about my thought process around a lot of exercises I do and stuff I read, everything from Python exercises and Javascript problems to problem-solving strategies and CS topics I’m reading up on.
A Tutorial Hellscape
Remember that Simpsons episode where Homer goes to hell, and they give him all the donuts in the world?
And they keep fork-lifting donuts into his piehole until he becomes a big, bloated mess?
And he keeps scarfing them down anyway?
The modern coding learning environment is exactly like that. But it doesn’t have to be!
Don’t get overwhelmed and land in tutorial hell.
We’re only on this earth for a finite amount of time.
Invest your coding time in doing things that better yourself.
As software developers, we have tremendous power to create incredible things. It’s a shame to get caught in the weeds sorting arrays when there are apps to build, websites to create, and databases to mine.
So go out there and do it up!
And no judgements on what project you do choose to create, each project is its own journey with its own merits.
Just make sure to throw that s*** up on Github with a nice fat README explaining all the cool things you learned.
Shouldn’t You Be Following Your Own Advice?
Good point. Time to crack on and get working on that JS To Do List app I’ve been neglecting…
Good luck out there!