April 2nd, 2019
Welcome to the latest entry in my Self-Taught Developer's Survival Guide series of blogs posts! There has been some good writing about coding tutorials recently, like this piece by Devon Campbell about why you should stop doing coding tutorials, or this one by Ali Spittel about moving past tutorials. For the most part, I agree with these takes; tutorials can set you up in a comfort zone of easy wins, letting your problem solving and researching skills atrophy. I've definitely been there myself! Having said that, there is definitely a time and a place and an approach to utilize tutorials well, and I'm going to talk about that today!
Not all tutorials are created equal, and you want to be sure that you're not having a sub-par experience that wastes your time. When I use the phrase "high-quality" in reference to tutorials, these are attributes that I have in mind:
If it's not a deeply established and stable technology (like Linux or SQL), then there is a Slack channel or forum where students can get help. The instructor will have taken steps to ensure a consistent experience (such as using exact version numbers of packages), and updates the material as necessary.
The course is structured in a forgiving manner that allows students to nuke everything and start clean from a certain point if disaster occurs. This is usually accomplished very well with versioned GitHub repos.
The material is explained well, and challenges are baked into the curriculum to ensure that students are actively practicing the material, and not just taking it in.
Common edge cases, gotchas, and workarounds are discussed.
A bonus attribute, if you can find it: courses that discuss the why of technology, specifically what to consider when there's more than one way to solve a problem. For example, in various Angular tutorials, I couldn't find a good explanation of what the ideal use case of a ViewChild decorator is. But I have come across numerous thoughtful discussions of when I should consider reaching for a state management solution like Redux or the Context API in React, and that is the sort of thing you want to look for, since the ability to reach for the correct tool for the job is important to writing good software.
Example projects are where coding tutorials can really shine, for two reasons:
They contextualize the material, which is important so you can see where things fit, or how things change when greater scale/complexity is introduced (looking at you, CSS!).
You have completed examples of projects in a particular tech to refer to when you invariably need a quick reference on a matter of syntax or architecture.
You retain information better when you write things down by hand, so please don't neglect doing so! You should be taking note of fundamental concepts, syntax, things you find interesting, etc.
Next on the Self-Taught Survival Guide: The best Udemy courses to get started in a variety of web development topics!
Most people want to make things perfect. Sometimes we evaluate the complexity of an upcoming goal or a problem. So, the fear to not complete it perfectly or "wrong" (Yeah, who are judges? 🤔) stops us even from trying.