How to Burst the "Tutorial Phase" When Becoming a Developer
Tags: webdev, codenewbie, learning
Published: 2021-08-12 16:49:46

Teaching is essentially a transfer of knowledge.

In this sense, every developer is a teacher.

Every developer has to instruct (transfer knowledge to) the computer so that an application does what it is supposed to.

Now, imagine if a teacher's knowledge was limited to only knowing the right textbook to read and follow, without any awareness of the reasoning behind the subject. Picture a chemistry teacher who doesn't grasp the fundamental concepts.

![teacher](https://images.unsplash.com/photo-1509062522246-3755977927d7?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1104&q=80)

The same is true for developers.

Many new, aspiring developers become so fixated on understanding a particular framework, following tutorials, video courses, etc. without grasping the fundamental concepts.

After doing a video course, they can make a React movie app, but they don't know where to begin if asked to make a Twitter clone.

Now, I don't mean to sound discouraging.

I've been there. Impostor syndrome creeps in. You begin to think that you must not be cut out for the field, etc. etc.

That's tough.

But, I think pointing all of this out works towards encouragement.

Here's why. I think that there are tangible, practical ways to get out of the "tutorial phase" and understand the concepts behind the particular discipline of software development that you are trying to learn.

So, what are those practical ways to grasp the fundamental concepts and move beyond the "tutorial phase?"

## 1) Teach the material to others

This could go for anything that you are learning, but it is especially helpful for those who are just learning to code.

As we've mentioned, good teaching requires understanding the fundamental concepts. So, to write an article on a subject (for example), you will be forced to understand it in such a manner that you can effectively communicate it to someone else.

> It's impossible to teach and not learn in the process.

Take whatever you're trying to learn and post articles, videos, etc. explaining it to someone else.

![teach](https://images.unsplash.com/photo-1605711285791-0219e80e43a3?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1050&q=80)

Not only will this help you learn, but you communicate in a manner that is more sympathetic and comprehensible to those who are also in the middle of learning something new.

Sure. It takes time.

But I'm persuaded it will take less time than the vicious cycle of the "tutorial phase."

Oh, and by the way, you can also make some profit from your time.

I applied the teaching method earlier this year when I wanted to learn how to build a Shopify-like design system from scratch using design tokens. I wrote [blog posts](https://www.michaelmang.dev/blog/introduction-to-design-tokens) as I was learning.

After mastering the subject through my teaching, I rewrote all my thoughts on the subject into [an ebook](https://leanpub.com/designsystemsfordevelopers). I don't make a lot from it, but it's a nice bonus.

## 2) Use the Source, Luke
I once recorded a podcast episode called [Use the Source, Luke](https://www.michaelmang.dev/blog/use-the-source-luke) that explains this concept to Star Wars fans.

![star-wars](https://images.unsplash.com/photo-1472457897821-70d3819a0e24?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1049&q=80)

The gist is that the way to "take it to the next level" as a developer is to look at the source code of frameworks and libraries that you are using.

After all, a library's documentation is just an author of the library's attempt to explain their code.

Sometimes reading the code itself gives clues to the original intent as to how things work.

Libraries are created to solve problems. If you read the code of a library, you "tracing the breadcrumbs" as to how the problem was solved.

If you read carefully, you will 1) understand how it solves the problem and 2) be able to employ similar ideas to solve your own problems.

The point of all of this is to build confidence so that when you get stuck in writing code, you will know how to get to the bottom of it. Sometimes this requires looking at source code. Even if it doesn't, looking at source code enhances the same "debugging" mindset.

## 3) Assign yourself a project

Too often, aspiring developers start doing what tutorials tell them to do (i.e. a Twitter/Slack/Twitch clone).

![twitter](https://images.unsplash.com/photo-1566241477600-ac026ad43874?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1030&q=80)

Those are good projects, to be sure. However, the issue is when you are more focused on following a tutorial than learning the concepts.

A good way to learn is to force yourself to have to do it on your own. So, you should assign yourself a project.

Also, doing a project that someone else finds motivating won't be too motivating for yourself. To put it positively, doing a project that you are super interested in will provide the stamina to continue through the troubles that arise when trying to build something.

## Conclusion
In conclusion, tutorials are a good start for aspiring developers. I still use them today.

However, they can be a stumbling block. Consider following any of these three means that I have provided to get out of the "tutorial phase."