This post has been de-listed
It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.
If you're learning to program, there's a good chance that at some point you've been stuck in "tutorial hell". It's an experience of doing more and more tutorials, but being unable to actually build anything. Many essays and videos have been made about this topic, but I've never seen someone else describe the perspective I'm going to share.
Tutorial hell is an unstable system of perceived incompetence caused by students using the wrong methods to fix the difference between what they know how to do and what they've been exposed to. That's a doozy of a sentence and I'm going to spend the rest of this essay unpacking it.
A quick review on stability. A system is stable when it will tend to return to some state. Imagine an apple in an otherwise empty fruit bowl. You poke it, and it rolls down to the bottom. That's stable. Flip the fruit bowl over and put the apple on top. You poke it, and the apple rolls off to the side. That's instability.
Incompetence just means not knowing how to do something. It also has a connotation of being dumb, but that's unwarranted. It's a temporary state. Learning is just going from incompetence to competence.
When you learn things, especially programming, there's a difference between what you've been exposed to and what you actually know how to do on your own. This makes sense. You wouldn't expect to look at everything just once and be able to do it on your own forever. The need for repeated exposure makes the group of things you've been exposed to much larger than the group of things that you can do on your own.
The difference between what you know and what you've seen causes perceptions of incompetence. "I've done a React tutorial, why can't I make a React app? I watched that algorithm video, why can't I solve coding problems?" This delta between ability and exposure causes anxiety in many students.
Where things go wrong is how students try to fix it. They reach for more tutorials, generally on more topics. "I'm not getting React, maybe I should try Vue." This only makes things worse. A tutorial on a new topic increases exposure faster than it increases ability. This increases the ability/exposure delta, increasing anxiety and self-perception of incompetence. You're learning more, but you feel like you know even less.
This is the unstable system. The feelings the student is trying to relieve (anxiety, perceived incompetence) are only made worse by the method they use to relieve it (more tutorials on more topics).
Part of the solution might be obvious at this point. You need to increase ability without increasing exposure. This will narrow the gap between ability and exposure, relieving some of the negative feelings. It also means you're actually increasing ability, which is the whole point of all of this anyway.
But how do you do that? The best method is to build things with the knowledge you already have. The easiest way to do this is through play. The most important aspects of play are that it is self-prescribed and enjoyable. You have to decide what to do for yourself and you have to like it.
It's common for students to say "I don't know how to actually make anything!". They've defined "anything" to mean the peak of what they've been exposed to. Maybe that's a full blown web app. That's not what "anything" means.
Can you make text appear on a web page? Can you write a script that tells you if today is Christmas? Then you can make something. Make those things of your own choosing and of slowly increasing difficulty.
To get out of tutorial hell you need to make a trade. You need to trade your anxiety about your abilities for embarrassment about how basic the stuff you're making is. I think it's a good trade.
The second method is to combine play with the tutorials you've already done. Go back through your old tutorials, but push the edges a little bit. What if I add this little extra feature at the beginning and then try to keep it all the way through? What if I try to do a bit from memory and then check back if I did it right? This may feel a bit safer.
The last method is to do more tutorials on the exact same topic. This won't get you all the way out of tutorial hell, but it might get you closer to the gates. For example, there are at least a dozen beginner books and courses on Django. Keep working through them. Go back and redo the ones that seemed too hard. The essential thing is you have to stay on topic until you actually gain the ability. If you venture off too soon (Maybe I should try Django REST Framework. Maybe I should learn Docker) you're only going to make things worse. You'll be like an apple rolling off a fruit bowl.
Edit: I sat down and wrote this post this morning because I woke up early and couldn't fall back asleep. I'm glad I did because it seems to have resonated with a lot of people. Thank you all for sharing that with me. Best of luck in your learning.
Subreddit
Post Details
- Posted
- 4 years ago
- Reddit URL
- View post on reddit.com
- External URL
- reddit.com/r/learnprogra...