For a long time I held off from starting my own side projects because of how much I didn’t know how to do.
For every project I could think of, there were several features I had absolutely no idea how to build. I would always ask myself how I could start working on something when I didn’t even know half of what it took to finish it. I was convinced I needed to learn more before I could build anything of my own.
Welcome to Tutorial Purgatory
So, instead of building my own projects, I got stuck in what I’ll call “tutorial purgatory.” Since I felt like I learned best this way, I read and watched every tutorial I could find that seemed interesting and that I thought might apply to my own projects one day. I spent month after month doing this, filling my nights with endless videos on YouTube, Udemy, and whatever other tutorial site I stumbled across. I learned a lot, and forgot nearly as much in the process.
Don’t get me wrong. I love tutorials, and I think learning the basics from tutorials is a great way to get started. But if you’re not careful, you can end up spending way more time reading or watching tutorials than you really should.
Instead, I went back and purchased The Complete Web Developer Course 2.0. I watched 30 more hours of video covering many of the same topics as the first course!
Why did I make this mistake? Truthfully, I think it’s because tutorials felt safe. With tutorials, you have someone telling you exactly what to do. And you feel like you’re learning a ton and being incredibly productive.
But in reality, if you’re going through tutorial after tutorial just for the sake of learning and not as part of a larger project you’re working on, you’re probably learning a lot less than you think.
No Instructions, No Problem
Eventually, I came to realize that I needed to stop watching tutorials, abandon my comfort zone, and build a project on my own, without all the instructions neatly laid out for me.
I decided to build a website like Stack Overflow, where users could sign up for an account, post questions, answer questions, add comments, and even embed videos directly into their posts.
It seemed like an ambitious project, but I didn’t care. I wanted to build something that would challenge me. And since I had recently started learning Ruby on Rails, and was really enjoying it, I settled on Rails as the framework for my side project.
There was so much I didn’t know how to do when I began that first project (just as there’s still so much I don’t know how to do with every project I begin). I didn’t know how to build an authorization system, implement pagination, or use AJAX in a Rails app. I didn’t know how to use recursion to implement a comment system. In fact, I didn’t even know what recursion was!
Start With What You Know
But it didn’t matter. I didn’t think about all the things I didn’t know how to do. Instead, I started with what I knew, and I figured out the rest along the way.
Google became my best friend. It led me to the Devise and oAuth Rails gems, which I would combine to create my authorization system. Devise would allow my users to create new accounts and login, and oAuth would give them the option to login using their existing Google or Facebook accounts.
First, I learned a little bit about each of the gems by reading their documentation, and then I Googled to find out how I could use them together. My search led me to this great article, which walked me through the process step by step, and in a matter of hours my authorization problem was solved.
When I got stuck on something, I poured over Stack Overflow questions and answers and searched for articles and tutorials to get me through. I still use tutorials all the time, but now I only use them to learn something I’m going to immediately apply to a project.
It’s Okay to Ask For Help
In the rare event that I couldn’t find the answers I needed through these channels, I asked for help on Stack Overflow. Some of my questions even got answered, like this one, where I asked for help after struggling for countless hours with nested comments.
Although none of the answers solved my problem on their own, they provided little hints and helped me continue forward until I found the solution. I learned that Stack Overflow isn’t as scary as it seems, and everyone needs help from time to time.
My code from that first project isn’t pretty. It’s not DRY. It needs some refactoring, and there are probably a lot more efficient ways I could have done several things. There are also some things I did in that project that I didn’t even fully understand. But it doesn’t matter. I built something non-trivial that actually worked, and I did it without following a set of instructions.
I learned more from doing that first project than I learned in the preceding year spent on tutorials. Most importantly, I learned the skills I really needed to succeed as a developer. I taught myself how to problem solve and hack code together, and I got to enjoy the wonderful satisfaction of actually shipping something I built myself for the first time. It didn’t matter that it didn’t have any users or that the design wasn’t that great. Just the act of building something of my own was transformational.
You’re never going to know how to do everything (nobody does), and you’re always going to need to look things up on the internet (everyone does). Don’t let that stop you from just diving in and building stuff.