This article was originally published on Medium in 2017 and captures my honest feelings about learning web development. I'm happy to say that, 4 years later, I'm much better at digging my way out of tutorial hell.
I wouldn’t call myself a web developer.
I am a wannabe.
But not a web developer. Not yet. I’m stuck in a tutorial hell.
I have been learning to code for a while now, but for the majority of that time, I have not been able to get out of the tutorial hell. For those of you that don’t know what that is — lucky you! That means you probably get stuff done. That means that you are learning.
For the rest of us, well, it’s complicated.
They will also instate a false sense of knowledge in you.
Not that it is their fault; this, my friend, is all on you. Most teachers will urge you to go and build projects, to not copy their code, to do the work.
I have been there. I have been on the receiving end of this advice. And I know it is not that easy to go and build projects, to put your knowledge to practice. Most of my knowledge has been situational, wrapped up inside a little box called a tutorial. While I am in class, in my happy place, I know what to do. I can tell what the teacher is going to do before he does it. I am in the zone, in the flow. But as soon as the lesson finishes, as soon as I close the browser’s tab, it is as if my knowledge disappears with it.
It has been very frustrating, and this is what lead to me doing more and more tutorials. There is something comforting about being told what to do and how to do it. It feels good. You develop a sort of connection with the teacher. You say ‘Hi’ when he says ‘Hi.’ You work on projects, and you get to complete them. You learn new technologies. You do stuff. You gain experience. Or so you think.
Or so I thought.
Until I decided to ditch the tutorials and work on a real project. And suddenly I was lost.
Oh so lost!
Creating something from scratch requires the knowledge of technologies, and also the knowledge of putting the pieces together. And it is very easy to slip back to the warm and cosy comfort of another tutorial! Do I use CDN or do I download frameworks and libraries via npm? Should I use npm or yarn? What are the benefits of one over the other? And the difference between a framework and a library? I’m sure I read about it somewhere.
Off to do a quick Google search, and, before I know it, I’m neck-deep in another tutorial. The story of my life. I cannot resist the subtle, yet enticing calling of a new tutorial. Most definitely better than all the ones I have already done.
So is there a solution to this?
Can I overcome my tutorials addiction?
How do I learn to rely on myself, rather than these awesome teachers that know so much? How do I start believing in myself and my skills? How do I take the first step?
One of the solutions is to start contributing to open-source. Now, this is a tricky business, let me tell you! It is very intimidating. Open source projects are great, but they are almost always massive. At least the well-established ones. They have to be significant and stable enough to run. Otherwise, they would crumble under the mistakes of eager newbies.
Yes, we newbies mean well. But that doesn’t always translate to good code or a working solution to an open Github issue.
Newbies also have a very fragile ego — a rejected pull request (PR) is a huge deal!
Last year I submitted my first PR, and it got rejected. And not because it wasn’t good. It just wasn’t needed. My PR was a solution to a coding challenge. I thought I did a great job on it, checked my code over and over, I was so proud! But it got rejected because they already had three other solutions in their wiki and the fourth one simply wasn’t needed.
But it hurt, it did. It took another year before I collected the courage to submit another PR. This one was successfully merged. I still can’t believe, and I go and see it most days. Yep, still there. Merged. Issue closed.
That PR was just the beginning. Suddenly, I had an inkling that I may not be that clueless. The voice in my head was very weak, but it was there. I mean, even navigating through the git maze, forking, cloning, pulling, pushing, committing, oh my world, I thought it would never be over! I read the contributing guidelines like it was the most important document in the world. I did every step it said I should. I checked and re-checked. I still missed things. I messed up. Deleted the fork. Started over. I think I started over three times. All that just to get the repository on my machine and the app running locally.
So being able to submit that first pull request was a huge deal. This is why I believe contributing to open source is the way out of tutorial hell. Because little by little (and I do mean baby steps here), you will start discovering your worth.
Your skills and your abilities.
Also, you won’t have time to start another tutorial, because people are waiting for your PR (can you tell I do work best under a little pressure?). You don’t have to think about what to do next. You still have others to tell you what needs doing, so that you can concentrate on actually doing it. And you’ll get to see the bigger picture. How the pieces fit together, what technologies developers use for what and why.
My advice is to choose an open-source project you feel passionate about and stick with it. Get to know it. Read the code base like it’s the bestselling novel. Follow the breadcrumbs from one file to another, even though you don’t understand most of it. Stick with it. Read the forum, if there is one, read through other issues, open and closed. Take breaks, but always come back. Show your face! It’s easy to introduce yourself, say how much you want to help out only to never be seen again.
Show up for your own sake. Because there is power in open source. It’s the power of community. Of being part of something bigger. Of having a home.
My home is with the freeCodeCamp organization. It used to be just an interactive learning web platform, but it is so much more now. With its active forum and gitter chat rooms, Medium publications, YouTube channel, local organizations and various other projects, it is the perfect place to get your feet wet in the vast waters of open source. It is also made up of many talented and kind contributors that have all been where I am now. They were the newbies not so long ago, and they haven’t forgotten what it felt like.
Take that step out of your comfort zone, stop the tutorial, find an open-source project to contribute to and become what you have been working towards — a developer.