Like everyone else, I’ve fallen victim to tutorial hell more times than I care to admit. It even happened to me this week accidentally. I’m building a side project called JobSearch.wtf to better navigate my job search, and I’m doing it while learning React/Typescript/Next.js.
Because I have minimal experience with React and Typescript, I bought a book on test driven development in React. To my surprise it was just a glorified tutorial in book form.
I followed the book about halfway through, just to see if I’d learn anything useful and eventually got stuck. For some reason JavaScript library maintainers don’t understand the concept of backwards compatibility or stability. Syntax versions changed drastically even with only minor version bumps to what was used in the book. It’s a beta release book, so I assumed most library versions would be up to date, I was wrong.
Wrought by frustration, I turned off my kindle.
When are tutorials worth using?
I believe that there are valid reasons to read or watch a tutorial.
You’re a new and aspiring developer and have no clue what you’re doing, but what to learn by building things.
You’re an experienced developer and want to see how other people build things.
If you don’t fall into the first category, you should not “code along” with tutorials. You will not learn anything by copy pasting someone else’s code. It’s the equivalent to taking a snippet from StackOverflow and hoping it works.
If you’re new to coding, I think it’s a valuable way to see how other people build things. You see the thought process other people follow, you learn about project structure, and sometimes pick up small nuggets of best practices.
You will still, of course, need to learn the fundamentals of writing code. I highly recommend learning and continuous practice of data structures, algorithms, and system design. Staying on top of those skills will be mandatory throughout your career.
What should you do instead?
It’s quite simple:
Build things and RTFM (read the fu.. friendly manual)
When you get stuck on your own, you have the context of what you were doing and what you wanted to do. This empowers you to search for how to get yourself unblocked. The most valuable resource for this typically is the documentation written by the maintainers of whatever libraries you’re using. They built the software, so they know it inside and out.
I can’t go into the science behind it because I’m not smart enough, but this helps you learn more efficiently as well. You comprehend and remember things more when you think critically about them versus regurgitating someone else’s work. It’s the same concept as studying in school. Read the material, take notes on the material, apply the material in some realistic way. During the process of applying the knowledge you learn to understand it. Understanding how something works is what cements it into your brain.
How’s that going for me?
Once I got past initial blockers, I’ve actually started having fun learning new things and building out this side project. I’m now able to move relatively quickly and translate the ideas in my head into something that kind of resembles what I wanted. I’m not a frontend developer, so it’s a process of trial and error still haha.
I have been looking at some “tutorial” videos, from who I would consider experts, but specifically with the intention of learning how they are using the same technology. I’m not copying any of their code, I’m just taking notes and learning.
Go forth and build cool shit on your own my friends. You’ll become a stronger engineer because of it.
Jeremy