DEV Community

Cover image for Stop Doing Coding Tutorials
Devon Campbell
Devon Campbell

Posted on • Originally published at raddevon.com on

Stop Doing Coding Tutorials

When you start learning to code, you’ll probably start with a tutorial. It’s a quick way to get up-to-speed with a new concept. Learn by following a step-by-step guide for building a canned project. You can quickly start to see how the technology works and feel the gratification of building something real.

That loop of reading the next step, typing out some code, and seeing it work is addictive. It’s too easy for newbies to get stuck in that loop.

What's Wrong with Tutorials?

The very thing that makes tutorials so addictive is also what stunts your growth as a developer: each tutorial is a solved problem. The difficult decisions are already made, the hard problems already worked out, and everything is laid out for you on a silver platter.

This is good for learning how to write code, but it’s not good for learning to solve problems. If you want to be a developer, writing code is an almost incidental part of what you do. People are actually paying you to solve problems. If you’re learning only how to write code, you won’t be able to be a web developer. It’s like the difference between paint-by-number and painting on a blank canvas. No one is going to buy your paint-by-number “masterpiece,” but someone might buy a work of art you painted from scratch.

What You Should Do Instead

As soon as you can, break away from tutorials and start applying what you’ve learned on projects. These can be pet projects you want to build or they can be freelance projects you do for clients. The goal is to get out into the messy real world and start dealing with all the unknowns.

The nice thing about your own projects is that they provide a kind of motivation to stretch your learning that is hard to come by in other ways. If you’re really excited about a project and driven to complete it, you’ll figure out new concepts, technologies, and techniques you might not have just for the sake of learning them. That’s because you now have a reason to learn them. They’ve become applicable to your life and critical for accomplishing your goals.

Instead of going out and trying to learn everything you might need to know before building anything, start building. When you hit a wall, go find some information on the one thing you need to know to break through. Apply what you’ve learned and keep moving. Rinse. Repeat. I call this “just-in-time learning.”

If you need some inspiration, check out my list of web development project ideas.

I mentor people like you to help them along in their career transitions. If you're not sure what to do next, sign up for a free mentoring session! We'll figure it out together. 👩‍💻👨‍💻

When Should You Do Tutorials?

If you don’t know anything about HTML, CSS, or Javascript, you can’t very well start a project using those technologies. Just-in-time learning only works from a solid foundation. Avoid the temptation to re-define “foundation” to encompass everything you haven’t learned. “I just need to learn React and I’ll be ready,” is the battlecry of the coding procrastinator.

The way you build that foundation can be through tutorials, books, mentorship, bootcamps (in-person or online), or other kinds of courses. Tutorials have a niche to fill, but that niche is much smaller than most people want it to be.

If you understand HTML and CSS, you can start a project. You may find parts of the project you can’t yet build, but you should start anyway. Here are the steps to take if you only know HTML and CSS:

  1. Start building your UI, applying what you’ve learned about HTML and CSS
  2. Continue building your Javascript foundation
  3. Layer in interactivity later after you’ve learned the basics of Javascript
  4. Layer in data persistence later still (if your project needs it) after you’ve built a foundation in back-end development
  5. Learn the next skill, technique, or concept your project demands

If you try to learn all these things without actually using any of them, by the time you get to the end, you’ll have to circle back and re-learn HTML and CSS before you can start a real project. Once that’s done, you’ll have forgotten everything you knew about Javascript. Welcome to the vicious cycle of learning web development.

Practice How You Play

How many elite athletes go pro by watching other players and mimicking their every move in contrived scenarios? How many world-famous pop stars play only faithful covers of other artists’ songs? You can’t expect to go pro as a web developer by following tutorials or doing what an instructor told you to do. People need to know how you perform in the real-world.

The only way to show them is to abandon tutorials for the messy, dirty, and uncomfortable realities of real-world projects.

Top comments (59)

Collapse
 
daviddeejjames profile image
David James

So true. Ive even seen tutorials these days that ask you to pause and think about/try the problem first. Another suggestion Ive seen is to not follow the tutorial 1-to-1 and produce a solution with your own spin on it. For example, instead of building just a TODO list app, making it a shopping list app with extra features. Anyway that can get you thinking about the code in a active rather than a passive way will work wonders in the long term!

Collapse
 
mykalcodes profile image
Mykal

Totally agree with you on this! I definitely see major value in taking tutorials that cover tech your wholey unfamiliar with as long as you make sure to make it your own along the way.

Collapse
 
alara_joel profile image
Alara Oluwatoyin Joel

This one is very true

Collapse
 
andrewharpin profile image
Andrew Harpin

This is a chicken and egg problem, tutorials vary and as you are learning something, how does the individual know when they have sufficient knowledge to break out?

Or is this a representation of poor tutorials?

Software engineering can be taught, but not all of it can be taught online. As you stated they are known problems. Problems that supply you with the answer are part of the problem.

The challenge is educating the pupil to identify the problem, this is not impossible, but is generally overlooked by many tutorials.

Sometimes this requires a experienced human observation, i.e. did they achieve the set problem without any predefined solution?

Another input which can be done online is providing examples of known issues, but having the pupil identify them.

The final one is getting them to repair or extend something that already exists, this is how education is done in business, build them up slowly inside out. Rather than typical outside in approach usually taken by tutorials.

This allows the pupil to gain the experience and knowledge without having to conceive an entire system. Which is generally beyond their capabilities and their stage of development.

Collapse
 
justalever profile image
Andy Leverenz

As a tutorial author I must say that "creating" tutorials helps you, the instructor learn. You have to talk through your process and make the end user understand why you chose the path you've led them down.

I consider tutorials supplemental but extremely beneficial. Saying you should never follow a tutorial is a little overkill. I got my start following them to understand core concepts. It absolutely takes practice outside of following someone's lead to really learn. I find this to be the case for education entirely.

Collapse
 
joehobot profile image
Joe Hobot

I have this nice chrome extension called momentum that I wrote in big'a$$ letters "PYTHON IT" - which reminds me that every-time I want to look something up I also have to think about how I would do this in python. It's a small thing but it forces me to think about it every-time I open browser or new tab.

Collapse
 
0x8c profile image
tiff

This was my Achilles heel and something I struggled to break out of for three years. I wasted three years of my life being afraid of getting my hands dirty and as such have failed at an internship and some interviews.

The end of last year and this year has been completely different. Yeah, I have courses but I rarely finish them; I just need to get the gist of a thing then I dig in. I've also started working with basic sandboxes on Codesandbox.io to sharpen my skills. It's helped me level up more in one year than in the previous three. I can't stress building things enough.

Collapse
 
anduser96 profile image
Andrei Gatej • Edited

Great article! I totally agree with you.

What I've noticed though is that sometimes watching how other people solved a problem can be very beneficial. I'm not exclusively referring to video tutorials, but also to open-source projects.

Whenever I'm seeking for inspiration or for best practices, I like to explore how other people approached the problem. This inherently implies that I already know the basics of the technology I'm working with. It is up to me then to extract the things that I need and to apply them in my projects.

I think doing this could serve as a complement to building things on your own.

I've been doing this for a while and I'm content of what I've achieved.

Collapse
 
ondrejs profile image
Ondrej • Edited

100% agreed. Coding by doing tutorials leads nowhere. One has to use his own logic and set up his own goals. I understand the fact that tutors could be handy for beginners but the best way is to really think about architecture and logic of your app, read the documentation, have a slow progress, learn stuff the hard way but it's only way that really matters.

Collapse
 
ondrejs profile image
Ondrej

But - to be clear - just watch the tutorial. Just to see how it works. But then deploy your own app using your own logic. I didn't want to say that tutorials are useless, but it's only first step. They can show you how things work, but the rest is up to you.

Collapse
 
lenoir_aaron profile image
Aaron

It may depend on what your goal is: to make something or to make something that is of technical superiour quality.

I personally feel that reading the documentation is inefficient and I only do it if I need to do so. Which is usually when something isn't working as expected. In documentation, I usually skip immediatly to the code examples.

Collapse
 
stealthmusic profile image
Jan Wedel

I don’t know, I’ve never had any problems with tutorials. Usually I start with the tutorial, then I will apply the knowledge to some real problem that I want to solve, then I’ll look up the tutorial information again to find out why some decisions have been made in that way.

One very important thing is that tutorials can tell you the intentions of those who made the language, library or framework and how it is supposed to be used. This is very helpful if you can see it with real code examples and examples that are tied together to an application that actually works. Because sometimes the documentation only covers some slices of information.

So basically you’re right, after reading a tutorial you won’t know everything about a language and you won’t even know and understand everything that you’ve read with in the tutorial. But to me it’s still worth it...

Collapse
 
biz84 profile image
Andrea Bizzotto

Having been both on the “learner” and “instructor” camp, I can confirm that building things and solving problems is the best way to grow. Hovever, as an experienced developer I have also found myself jumping to an unfamiliar tech stack. In this context, good articles and courses are valuable, and can offer a more structured learning track.

Collapse
 
dylanesque profile image
Michael Caveney

Absolutely! One huge benefit of judiciously used tutorials is repetition, which is extremely useful with technologies that have a "learning curve", such as D3.js or Redux.

Collapse
 
farooqueabd profile image
Farooque Abdullah

Believe it or Not, this is the harsh Reality of Every Beginner

" If you try to learn all these things without actually using any of them, by the time you get to the end, you’ll have to circle back and re-learn HTML and CSS before you can start a real project. Once that’s done, you’ll have forgotten everything you knew about Javascript. Welcome to the vicious cycle of learning web development. "

So True.