How to learn everything, and nothing at all.
Tags: beginners, productivity, discuss
Published: 2021-12-04 00:51:16

<sup>Cover Photo by [Aaron Burden](https://unsplash.com/@aaronburden?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/studying?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)</sup>

I'm new to the development thing, and I've been working through [The Odin Project](https://theodinproject.com), a wonderful free resource that takes you from zero to a junior level developer in the context of web development. I might not know a lot, but I've been hanging around the community Discord server and a lot of people are constantly asking about code-along videos.

A pretty standard exchange goes something like this:
> SomeUser: Hey I want to learn \<some language or concept\>, what's the best way to do that?
> OtherUser: You should look up a few videos and follow them to build something. You'll learn a lot!

Now, let me be clear from the top: I believe code along videos have a certain value. They are invaluable for folks that already know what they're doing. These types of videos can introduce the viewer to some pretty complex things, and if you already know what is going on, there is value in the format as a quick introduction. The critical difference is that for someone with experience to fall back on, they can figure out what's what pretty easily.

If you're still very early in your journey, a code along video is probably _not_ ideal for your learning. The main reason is that you'll be lacking the wealth of experience and knowledge to really understand what's happening.

Let me get into this by way of example.

When I first started The Odin Project, Javascript was arcane to me. I had (almost) no clue how it worked. I did have the advantage of picking up some basic Pascal in high school, and my group of friends were all nerdy and we all built basic HTML and CSS2 websites that used PHP scripts to make templates. Can you guess how old I am?

Anyway, I never touched JavaScript then, so it was this newfangled thing to me when I finally got to that section of the Odin curriculum. So, I was eager to dive in. There's a very well known introductory course that has you make x things in y days based in Javascript, and one of the days was linked as a resource to consider, so I went ahead and opened it up.

The basics of the video were essentially setting up an HTML file, some CSS, and the meat of it, using Javascript to set up an event handler which then played some audio, added a CSS class to the element, then removed it to get a transform effect.

Here's the thing: these topics and techniques are all very basic JavaScript, CSS and HTML. Any web developer will know how to create and handle a browser event like the back of their hand. I think it's something I could have easily grasped if it were presented in a different format for me. I mean, to be real, maybe not, but I'd like to think so!

I followed along with the video and nodded along, just typing into my own IDE what was in the video. Oh yeah, this is cool, and look at me build this thing! I finished the project and it worked as advertised, so I thought to myself, "Good job! You did it! You _made_ this!" I'm sure you're all familiar with [this meme](https://knowyourmeme.com/photos/1079173-i-made-this) and in the moment, that was me. I had dilluded myself into thinking I made the project.

The truth is, in that moment, I was suffering from the illusion of competence. The tutorial I had just watched gave me everything to succeed, and as a consequence, I didn't engage with the material at all. And why not? The solution was right there... even if I had wanted to come up with my own solution or next line of code, the temptation to just move along in the video was too easy to succumb to. The answer was just 1 second away! Sure, I had _something_ to show for it at the end of the video, but did I really know and understand what the event handler was doing? (_Narrator: He did not._)

There's a lot of research about this phenomenon called _[the illusion of competence](https://aeon.co/ideas/what-know-it-alls-dont-know-or-the-illusion-of-competence)_ and it can be a deadly menance when it comes to learning anything, but it is especially harmful for learning how to flourish as a developer. When you have the answer given to you, or you think you already know the answer, then you don't get the chance to really enter the [second stage of competence](https://en.wikipedia.org/wiki/Four_stages_of_competence) by trying to solve the problem and failing. So, you finish one and look for the next great tutorial that will \~teach\~ you something. But the results are the same, because tutorials almost always walk you through everything step by step. Some folks sometimes call this treadmill of tutorial videos _tutorial hell_.

Let me repeat this again, **video codealongs do have their place as an educational tool** but this place, in my humble and noobie opinion, is once you've got a solid foundation in programming and are looking for a refresher on a topic you haven't touched in a while, or to figure out how to do something in a lanaguage that's new to you.

My advice for those starting in their journey to learn how to write software?

1. Take your time. If you're in a hurry, you'll be prone to take shortcuts and fall into the illusion of competence much more easily. One way to avoid this is to give the material, concept or problem the time it deserves.

2. Fail, and fail a lot. Get stuck, and Google the problem you're having and _not_ the solution! Once you're stuck you're in a prime position to learn something and make it memorable. I'll always remember when I finally figured out event handlers and the event object in JavaScript.

3. Don't be shy about asking for help in a thoughtful way after you fail or get stuck. Sometimes, you can figure a way out on your own, but if you feel like you're really stuck, asking thoughtful questions about your problem can often push you along the right direction. In this way, it's important to ask about your problem, rather than asking for a solution. It's the same problem: get given an answer, and you'll likely end up here again.

When you're just starting your programming journey, code-along videos can seem like the best. You learn something, and end up with a project at the end. It really does feel like you can learn anything and everything this way, but just remember that the illusion of competence is a thing, and be extra careful to test your knowledge as you go!