How to actually learn by following project tutorials.

We've been told countless times that learning a language by building projects is the most efficient way to get the hang of a new language and I completely agree. Building actual real-world projects is the fun part of programming. But what happens when you have an idea but aren't confident in your skills enough to build it?

It's easy to search for any project you're interested in building and find countless tutorials on how to build it with the source code most often attached.

But most people don't realize how this can lead to a trap. Many developers are stuck with having countless projects on their portfolios that make them look enticing but with no knowledge to show for it. They can't defend their code because they don't understand how it works.

Following tutorials make you feel safe, you follow along with the instructor and code according to their decisions. However, this makes it easier to forget a core skill of programming.

Problem-solving.

Having a project idea in mind, breaking it down into little problems and coming up with your unique idea on how to solve it is a core skill of software engineering.

It's just like working out a new muscle at the gym. It's difficult the first time, but the more you do it, the easier it gets. But simply following tutorials and coding along with no innovation can't give you core programming skills.

So how can you learn by following project tutorials without falling into the comforting trap of having multiple projects with barely any knowledge?

Be Creative.

Think of other ways to solve a problem. There are multiple ways to implement a feature in a project. You don't have to follow what the instructor does. It's helpful in the long run to think of a better way to do it. It doesn't always have to be better too, just different. Yes, it might rarely be the best practice in the beginning, but the most important thing is that you're learning problem-solving.

Do something different. If you have a stack you want to learn, and the tutorial you find uses another one, you could replace it with that. It could be something simple like changing the CSS framework and that would be a good start. Don't follow exactly what the tutorial uses. The smallest change can make a difference in your learning.

Build upon it.

Add more features to it. You can use the tutorial as a starting point, but don't stop where it ends. Add a new feature, if you're following a simple to-do-list tutorial, you can make it extra by integrating it with local storage. If you're following a landing page YouTube video, you can add animations to spice it up.

Don't be rigid about learning with tutorials, you don't have to do it the exact way it's done in the tutorial.

Don't get stuck in tutorial hell.

Don't rely on them forever. They're great for getting an overview of how to build projects, but you have to use the knowledge you've gotten from them on your original projects for your knowledge to be useful. Get what you need from them and start building by yourself.

Don't underestimate yourself.

You never know if you can build something by yourself unless you start. We tend to underestimate our abilities. Next time you're about to build a project, instead of falling into the temptation of searching for a YouTube video of a project that another person has done, attempt to do it yourself. Start by writing the project description. Break it down into the features that are essential and the less essential ones. Work on it from the top, and whenever you get lost, google is your friend.

Conclusion.

While following tutorials might be helpful to grasp basic concepts for new programmers, sticking with them in the long run might cause more harm than good by weakening your problem-solving skills.

If you have to use them, being intentional about the way you consume them helps. Being creative, not copying the instructor's code line for line, adding more features to the project and building upon it will let you learn from the project and also improve your problem-solving skills simultaneously.