We have all been there; You are watching the next hours long tutorial on language X or on framework Y, but for some odd reason you feel like you don't know anything in the end.
That's what I call "tutorial hell" and with this article I hope I can teach you how I was able to leave tutorial hell and productively learn new languages.
The reasons can be vastly different from person to person, as everyone has their own style/pace of learning. Nonetheless here are some reasons I found that cause tutorials to be ineffective:
Due to the tutorials needing to be made for a broad audience the pace will be off for most people: It either starts at the wrong skill-level or is overall just too fast/slow.
That can be very frustrating, as having to skip around the video all the time costs a lot of time and feels like you did nothing in the end.
The biggest problem for me personally was, how little you have to think on your own when following the videos.
You simply just type whatever the person in the video is typing while their voice attempts to explain what exactly is happening, in vain.
The lack of solving the coding problems yourself causes you to not learn how you would approach a new problem. That in turn renders you unable to make products on your own.
Something I always tried to fight with my articles like Frameworks hurt junior devs (and why math is important) is the neglect for properly understanding a topic.
Being able to create 100 different Web-Apps in Rails using Devise (the authentication gem) doesn't mean that you actually understand what is happening and what you're doing.
This shallow knowledge might be fine for a while, but it won't be long until you hit a, for you, unfixable problem because you actually have no idea what you are making. You only know how you are making it.
In a YouTube video about exactly this topic I heard the YouTuber use the name "Question Framework" to something I have been doing for a while now. I liked the name a lot, so I decided to adopt it.
The Question Framework attempts to teach you, the user, something in a more interactive way by letting you figure out and solve problems on your own by asking the right questions.
There are a few easy steps which you strictly have to follow:
- Set an end goal
- Ask yourself "What do I need to do next?"
- Google how to do that specific task
- Repeat step 2 And it's as easy as that! An example is how I taught myself rust:
- Build a command line tool that reminds you about peoples birthdays
- I asked myself "How do I create a new rust app?"
- I googled it and found out I can simply run the command
rust new appname
- I asked myself "How do I read a text file and save it to a variable?"
- I googled and found out that
read_to_string(&dir).expect("Unable to read file");does the job
- Next I asked myself "How do I parse the file to users?"
- I googled...
Well, you get the idea. By following this principle you will probably need a lot longer to create your first product, but creating the 2nd one will be much easier, as you already had to face problems and think about solutions on your own.
For anyone interested, the rust project is here
Next time you want to learn a new skill, try to challenge yourself with the Question Framework. This approach to learning new languages enables you to get a much deeper and more useful understanding of concepts and languages.