Stuck in Tutorial Purgatory?

We’ve all been there before: You follow one tutorial after another hoping to find some sense of accomplishment or fulfillment as a developer. Instead, you walk away feeling unsated—hungry for something practical to sink your teeth into. But you never really find it. What you do find is existential panic: Am I cut out for this? When will I actually amount to something as a developer?

Welcome to tutorial purgatory, friend. It’s a bit like being chained to a post—you see a world of opportunity spread before you, teasing your imagination, but you can only travel so far before you’re reminded of the cold iron wrapped around your ankles.

Stuck in tutorial purgatory? Here are my suggestions for how to escape this hell.

Use Tutorials as a Guide

“Thou follow me, and I will be thy guide” —Virgil, The Divine Comedy

Think about whether you do any of these things when watching or reading dev tutorials:

  1. Blindly copying and pasting code from the tutorial into your own environment.
  2. Cloning starter files from an associated repo that already contain setup code (e.g., HTML or CSS).
  3. Coding along with the tutorial, and finding yourself bored in the process.
  4. Simply following the tutorial without doing any coding yourself.

These are fatal mistakes that will only prolong your sentence in tutorial purgatory. If you’re looking to learn something new or to find inspiration to start your own projects or sandboxes, then a tutorial should merely be treated like an answer key on an exam: It shows you the answer, but it should only be referenced once you’ve made an attempt to solve the problem yourself.

Let’s consider WesBos’s JavaScript30 course—it’s a great way for JavaScript developers to sharpen their vanilla JS skills. But you shouldn’t just watch the videos and code along. And you certainly shouldn’t use the starter files that Wes provides, except for assets like audio files that you’d have to obtain yourself.

What should you do instead? Use the tutorial for inspiration: Watch the first few minutes to understand what you’re tasked with building, but pause it as soon as it starts diving into the implementation details. At this point, you have a rough UI “mockup” to work toward building yourself.

Start from scratch on your own environment and give the problem your best, most creative attempt. If you get stuck, don’t immediately give in and watch the video. Instead, research whatever problem you’ve run into. By now, it’s almost guaranteed that whatever issue you’re faced with has been documented on StackOverflow or Reddit. Only once you have a working solution should you then resume following the tutorial, comparing your attempt to the solution.

This approach teaches you a fundamental, invaluable skill: learning independently. You need to be able to solve problems on your own and come up with your own solutions. Failure is perfectly acceptable as long as you reflect on it and learn from it.

Who knows? Maybe your solution is even better than the tutorial’s. And if it’s worse, or you overlooked certain edge cases, then you’ll learn from those mistakes, and the entire experience will be far more memorable than if you had just blindly followed the tutorial from the beginning.

Stop Trying to Learn Things That Don’t Interest You

I recently came across a fantastic article by Dave Geddes about an experience that developers are all too familiar with: Trying to learn a new technology without any particular goal in mind, struggling to understand why that technology is needed in the first place or how it’s supposed to be used, and then venting on the internet because the entire experience has made them feel stupid.

All tools that humans created have one thing in common: They solve a problem. And they’re mainly intended to be used by people who have already struggled with said problem. Otherwise, their importance is lost upon the user.

xkcd comic about tools
Source: xkcd

Beginners force themselves to learn X technology because it’s been dangled in their face as the Carrot of Career Growth and Endless Financial Opportunities™. They don’t exactly know why they need React, but they can sure as hell regurgitate what other people have told them about it—that it has a virtual DOM, and that having virtual DOMs is… well, a really good thing… to have.

Haven’t you ever wondered how things were done without these fancy new technologies or what problems they actually solve? Imagine how many poor, helpless souls could’ve saved themselves a few hours of torment on StackOverflow if only they had learned JavaScript before dipping their toes in React. Imagine knowing how to harness the power of vanilla CSS and CSS preprocessors instead of handicapping yourself with bloated CSS frameworks like Bootstrap and Tailwind that make my eyes bleed when I read your HTML.

You are, of course, free to learn whatever you want and whenever you want. But pace yourself, and understand the utility of whatever you are learning—these are two of the many keys to escaping tutorial purgatory.

Stop Splurging Money on Courses

For just several hundred dollars, and sometimes thousands over the course of a year, you too can learn Python, React, everything—all the things—and land your very first job as a software developer!

Paid subscriptions to courses are, in my honest opinion and personal experience, the absolute worst thing to ever happen to the Learn to Code industry. They’re built for instant gratification—to reward buyers with a sense of accomplishment at checkout and to make them feel like they’ve taken their first step toward mastering a new skill.

Software development courses on sale on Udemy.

Some people learn best with courses, and that’s fine. But there’s a certain type of junior developer who doesn’t know any better—who equates learning with spending money and earning certifications.

I’ve written about this before, and I’ll say it again: Don’t waste money buying courses when there’s such a wealth of free information available online. Price tags don’t imply any inherent value.

Take a Break

You know what’s so great about software development? The fact that there’s something in it for everyone. You know what’s not so great? It’s… really difficult to find that thing.

I sometimes feel like this industry is a sea of oddly shaped locks, and in my hands I hold a pair of keys that don’t appear to fully fit in any of them. Most days, I’m passionate about frontend and everything CSS. Other days, my mind is tempted by the allure of mobile app development, machine learning, networking, game dev, and a host of other distractions that I dabble in for minutes at a time, and then quickly abandon.

Woody and Buzz from Toy Story. Buzz puts one hand on Woody's shoulder and gestures widely with the other. A caption reads: Distractions, distractions everywhere.

Does it help that technology is moving so quickly? You’ve heard this before, so pardon the repetition, but there’s a new JavaScript framework born every minute. Will React still be relevant in a few years? What about Vue? Insert X language, framework, etc., and you’re confronted with the same problem. Now WebAssembly is the new kid on the block. How do you keep up with all of it?

Be honest: How many more to-do list app tutorials can you tolerate before you lose your sanity? More importantly, are you going to remember any of these things tomorrow or a week from now, or are you only learning them after someone mentioned that you should because reasons?

Sometimes, it helps to just step away from it all for a day or two and put your mind at ease. I get that you’re passionate about development, but it shouldn’t consume your entire existence. Listen to music, read, watch a movie, play video games, write, work out, and do just about anything but dev 24/7/365.

Tutorial purgatory is a phase—you’ll eventually find your calling, work on meaningful projects, and land the job you’ve dreamed of.

In the meantime, it certainly doesn’t hurt to follow a tutorial now and then to sharpen your skills or learn new things. But don’t allow tutorials to become a crutch.


Social media preview: Photo by J Yamuta (Unsplash).

Comment system powered by the GitHub Issues API. You can learn more about how I built it or post a comment over on GitHub, and it'll show up below once you reload this page.