Originally published on my blog.
Whether you're new to programming and software development in the general sense or you are an experienced software engineer, you may have already heard about the Tutorial Hell1 problem. You may have found yourself stuck in this endless loop of content consumption. From my point of view, this also applies to longer courses that differ from tutorials because the latter might be longer, more comprehensive, etc. This may also apply to certifications, where some people collect them as military badges without genuinely learning the topic they got certified in.
In this post, I want to discuss my ideas about how you can, and probably should, break free from this vicious cycle.
Most of us have been there
When learning something new, someone else commonly teaches us the new thing. This "someone else" is regarded to have already known (and maybe mastered) the concept, and we consider them capable of transferring the knowledge to us. It doesn't mean we're always going to a classroom, as the way to learn will vary: we read books, watch online courses and tutorials, read a manual, etc. But in most cases, someone had previously created the content we now consume. I learned the fundamentals of Computer Science while attending my undergrad course. You, instead, may have started with a bootcamp.
As an experienced software engineer, I still see myself doing the same thing. Need to learn about Terraform and Infrastructure-as-Code (IaC)? Find a course, tutorial, official docs, etc. The difference here may be the depth of the content or how far we go into the guts of the new subject.
In both scenarios, we may be prone to keep watching, reading, and consuming content without getting our hands dirty and trying ourselves what others have done to write the book, record/write the tutorial, etc.
The illusion of learning by watching
Let's say you're a Twitter user. You follow some tech influencers. People with 20K+ followers are now also selling a course to their audience. This person built a reputation and proved that they know a fair amount about some specific topic or technology. You're convinced that acquiring this course or watching their YouTube tutorials will benefit your career.
That's fair. You then watch their JavaScript course, then all of their tutorials about NodeJS backend best practices; you then adventure to learn a bit about TypeScript, then some ReactJS. Later that week, you will find another great tutorial from someone else. You buy it and go through it in its entirety. And this goes on and on for some months.
Have you truly learned something new? Can you use these technologies to build something minimally complex? Can you go beyond the equivalent of a "Hello, World!" in that language or framework?
In my experience, passively watching something and expecting to deeply understand it is like watching one hundred movies and then claiming you can now create you own Hollywood-grade movie. There's a colossal abysm between reading/watching and understanding.
Practice is hard
In all fairness, watching is light-years easier than doing. That's just natural. Once you face the harsh reality of solving a problem, creating a solution, or inventing something new, you realize there's no tutorial for real life. Most of the time, you must try something for a while to know it is not the right path. You'll make some mistakes and potentially, after some time, get to a minimally acceptable solution.
All of this trial and error, concentration, and hard work require a lot of energy. If you were to have your brain scanned with an electroencephalogram (EEG) during crunch time, you'd probably find that the poor thing is working hard and spending a lot of energy. And we know our body is not keen to expend energy that easily.
Here's the hard truth: without practice, deliberate practice, it's close to impossible to be an expert in anything2.
How to break free
TL;DR You need to spend a considerable amount of time doing it yourself.
We all need a starting point. I'll keep on watching tutorials. However, without deliberate practice, we'll not have a deep understanding of how and why things work the way they do. Even worse: we might be limiting our possibility of being the creator of something new, as I'm sure you need to connect the dots of many things you know well to create something entirely new.
Deliberate practice is the act of doing something intentionally, with focus, to increase your holistic understanding of the thing that's the subject of your practice. One would argue that we don't all need to know how to create the tool to use it. Or that we even need to know how it was made. That's not wrong. But if you want to go up the expert ladder and be remembered for your remarkable contributions to a product or anything important, you'll have to know more than just the basics. You'll have to spend the time practicing.
My rule is to watch/read something, then try it in a different context. For example, in my attempt to learn Terraform, I watched a short tutorial, read the docs, and deployed a RESTful API in AWS using Terraform to spin up the infrastructure. Then, at work (at Cisco), I told my manager I wanted to shift part of my focus to the infrastructure side, and six months later, I was the lead developer for our infrastructure migration from EC2 instances to ECS Fargate, having 100% of the infrastructure deployment done with Terraform.
The tutorial, course, book, and whatever else is the first 10%. The remaining 90% is you, sweating to make something happen yourself.
-
The general definition of Tutorial Hell is the place one finds themselves when attempting to learn something new but gets stuck into watching tutorials for too long without applying what they have learned in the tutorials ↩
-
You don't have to be an expert to use a technology, programming language, framework, etc. We don't have time for it all. I get it. I know it. 99.9999% of the world population is not an expert in automobile operation. Yet a lot of us drive every single day. But if you want to be noted by others or get to places with a voice and respect, you better be an expert at something. ↩
Top comments (0)