loading...
Cover image for Stop Doing Coding Tutorials

Stop Doing Coding Tutorials

raddevon profile image Devon Campbell Originally published at raddevon.com on ・4 min read

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.

Posted on by:

raddevon profile

Devon Campbell

@raddevon

I help people leave their 💩 jobs to become web developers.

Discussion

markdown guide
 

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!

 

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.

 

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.

 

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.

 

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.

 

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.

 

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.

 

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.

 

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.

 

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.

 

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.

 

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.

 

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...

 

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.

 

What I do I follow a tutorial to grasp a concept and then apply it to the project in the tutorial and a side project of my own. Is it okay? I'd like to hear your thoughts.

 

Speaking from experience, I just think that if you walk away from a tutorial, book or StackOverflow answer and can actually use the concept to solve problems, you’re fine.

If you are only able to re-use the code from the lesson and not fit it to your problem, you haven’t learned the concept, you’ve just paid attention to the lesson.

 

This is exactly the right way to use tutorials, in my opinion.

 

Hello Devon, Thank you for that best article.
this is exactly what going on with me, I don't practice what I learned and after that, I got confused and forgot everything and got myself in the cycle of looping.

 

Glad the post helped! Happens to the best of us.

 

Thank you so much for posting this. You are absolutely correct that it’s so easy to continuously watch tutorials and get addicted and end up not learning a thing at the end. Trying to break this cycle NOW!

 

I know only because I've done it so many times. 😜

Good luck breaking the cycle, Tanisha. Get out there and build your own project!

 

This is good for learning how to write code, but it’s not good for learning to solve problems

While it is true but we learn it during our imprinting. We can't teach it, the students must have this skill or learn by experience (and it could take from months to years, or maybe never). We can't learn how to solve a problem.

And it's funny because some universities sell that concept, they are proud of what they are teaching when in reality, they are not teaching how to solve problems.

So it is the reason why kids (and future engineers) must play with Lego, Meccano and disarming their tools and less with Barney/Telettubies and any other trash.

As an IT-Coaching (and a former project in chief). A good programmer is smart and/or disciplined if both then it's great but it is possible to be a good programmer if he/she is disciplined.

 

Interesting observations and got me thinking about what the more impactful tutorials were for me and why.
What I've realized is, given the technologies evolve so quickly, tutorials written as recent as 6 months ago can become outdated and require attention to figure out solutions for deprecated code.
So this enforces how you figure stuff out rather than simply typing stuff by rote.
Okay, I might complain that the author should keep her/his content up to date, but it helps to challenge me to work through "bugs" that can happen in an everyday work scenario.
I do believe that tutorials can be helpful, especially if it's applicable to something you're currently professionally involved with.

 

Doing real-world projects is always a great way to learn. But as often in technology, some developers like to learn from tutorials and some developers prefer starting a side project to learn. I don't think there is right or wrong way to go about this.

 

I hate tutorials in the same way I hated undergraduate university. They treat you like you're 5 for 3 - 4 years (exaggerating to prove a point) then expect you to find a job and be successful. It doesn't work that way in real life.

 

Although it's a bit contradictory, this is what I like about CS50 and his other courses like CS50 Web or Mobile. You're taught the technologies (HTML, Javascript, Python, SQL) and then you have to make a project related to what you learnt. The difference is that you have to search and read docs and make choices on your own (e.g. DB schema or tables), without knowing if they're the best solution.

 

Completely agree Devon! This is actually the reason why I created Frontend Mentor.

There are so many great tutorials out there, but it's easy to get stuck in the comfort zone of theory and code alongs.

The bulk of the learning really does come from building actual projects and figuring things out as you go!

 

Tutorials are kinda great for that initial intro into a technology.

Personally I prefer videos, because lately the written tutorials seem to be incomplete, as many are written by beginners because someone said they need to write blog posts to get a job. URGH!!!

Just grasp the concept, then go build something.
Whilst building a project is when you'll figure out how to really use something you've learnt.

 

Not all tutorials are bad and you can learn a lot even if they serve them in a golden platter. Take for example the

Getting Started with iOS tutorial here which is really great link

Everything is step by step and at the end you have a real project. As a starting point is invaluable.

 

The difference between tutorials and Stack Overflow answers or code walk-throughs of the kind often seen on YouTube is one of intention. I think it's fine to inform, but as you say, education is far more than just copying. Most tutorials are like painting by numbers; you may get the result but did it actually pass between the ears?

 

Very good advice...

Tutorials are just a way to open our way of thinking about how the basis of a program can work.

Curiosity and intelligent play logic are very helpful in creating or modifying programs.

Hold the principle of equality with the term If you can do that, I can do the same, even if we do not achieve equality, at least we have tried towards that, on the road to equality we will find new concepts or ways of designing a program .

What I did in this discussion was holding the principle above, even though I was not fluent in English because I was from Indonesia, I tried to achieve equality even with the help of google translate.

 

This is one of the best things I've ever read. My intern manager, in the past, was a passionate educator and avoided giving me answers whenever I asked how to do something. He encouraged me to find everything out on my own, after failing a thousand times.
This really needs to be highlighted.

 

Nice piece,if you learn without actually doing you tend to forget what you've learnt happened to me when I first picked up HTML CSS and JavaScript, but when I got my Udacity frontend Nanodegree scholarship I got the chance to do as i was learning.

 

I actually don't do tutorials based on "now copy this chunk of code on line whatever, and run, and now copy this chunk of code on line whatever, and run again". I read the code and I like to understand the solution chosen for that problem, but I don't understand following that point by point.

 

Always do the tutorial, but never copy the code, change everithing and make it work.
I never use the same variable names, folder structure, component structure, markup, class names... damn, I even pull different dependencies if I can.

It will take you 5 times longer to complete, but you will understand what you are doing.

You will often end up deep withing the docs figureing why stuff doesn't work and learning why.

Do the tutorials, but never follow them!
You'll learn a lot.

 

I talked a lot of shit about sites like hackerrank and leetcode for a while, but when I started actually using them it was a really enlightening experience. Regardless of their validity or proof of competency, it's a lot more eye-opening forcing myself to sit down and work through an exercise instead of reading the description and being like "meh I can do that, why bother?"

 

Totally agree with the "you will forget it, if you don't do It, for real".

Doing lots of tutorial will teach you that tutorials are usefull only if you really need that kind of stuff.

No one can understand this, just by reading a (well written) article, because of fears... fear to be a bad developer in a World where everyone is good (apparently).

 

Couldn't agree more. I noticed that I was so overwhelmed with tutorials that I decided stop and dive in directly in a project, I learned far more from that than any tutorial I took.