DEV Community

Cover image for Escaping tutorial purgatory as a new developer
Tony Mastrorio
Tony Mastrorio

Posted on

Escaping tutorial purgatory as a new developer

For a long time I held off 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.

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.

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.

Eventually, I came to the realization 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.

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!

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. When I got stuck, I Googled. I poured over Stack Overflow questions and answers and searched for articles and tutorials. 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.

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! It’s not as scary as it seems, and everyone needs help from time to time.

My code from that 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.

Top comments (45)

ben profile image
Ben Halpern

Yes. I've observed this behavior a lot, but haven't seen it articulated so well.

For what it's worth, I'd say I've always had the opposite instinct, of trying things without carefully following the tutorials. From either direction, I think there is definitely a sweet spot in terms of each type of learning/doing.

tonymastrorio profile image
Tony Mastrorio

Thanks, Ben! Agreed regarding the sweet spot, and it's probably a little different for everyone.

juanfernandes profile image
Juan Fernandes

See when I first started I was the same, tried things first until I got stuck. Not sure when that stopped.

kayis profile image

"My code from that 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."

That describes pretty much all software projects, we are all human.

You learn about DRY, you write code, you try to apply it, you get it 30% 50% or 80% right and that's always better than never to have known about DRY and only getting it 5% right by accident.

pedrootero profile image
Pedro Otero Prada

Just because perfection doesn't exist it does not mean we have to stop trying to get closer.

tonymastrorio profile image
Tony Mastrorio

This is an excellent point! And there's always a tradeoff between how much time you want to spend refactoring vs learning and building something new.

kayis profile image

and while refactoring a whole architecture is a pain, VCS allow for code changes all the time.

georgeoffley profile image
George Offley

I was trapped in this for a long time. The hardest concept for me to wrap my head around is to come up with a goal and use code to accomplish that goal, without a tutorial to guide me. I would say for anyone staring at a screen unable to move without a tut to guide them, start by looking for a small goal. Print a giant "F" with hashtags using your chosen language. Look for an api that looks cool to you and write out some requests. Anything to break you out of the mindset of being unable to do anything on your own, and just choose a goal and use code to make it happen.

rpalo profile image
Ryan Palo

This is great! Thanks for sharing. It's a good reminder I think I needed.

I would also say that it's ok to not be ready to leave tutorial purgatory yet. If you're happy following guides and getting overviews of cool technologies, and you don't have a pressing need or desire to build something, don't feel like you are lame for liking to follow along with tutorials. :)

shyakaster profile image
alex shyaka

Nice one. I love to code just to know what's happening in the industry. I'm more of an enthusiast than anything. I love tutorials. But true tutorials in and of themselves don't make you a developer. You have to build stuff.

cat profile image

I've been so afraid of making my own stuff. In the end, you just have to do it, make mistakes, fix 'em, and refine your app along the way-- which means constant research and observation, doing and un-doing.

We learn better from it.

Thanks for the much-needed, well-written, amazing article!

creativ_bracket profile image

I second what you said about being "afraid of making my own stuff". I've been experiencing this fear a lot lately, and it has been down to following the path of least resistance. And that's how we end up in purgatory–an attempt to map out that "path" through hours and hours of tutorial-porn.

The ugly truth about making progress is that it comes with a boat load of obstacles. The earlier we accept this, the earlier we dive into making our own stuff with the little knowledge we may have.

Knowledge about the size of a mustard seed is good enough to start the next project

tmcsquared profile image

Thanks Tony! As a novice programmer, That is exactly where I'm at, watching tutorials and not enough on my own(well okay add Google ;D ). I guess the saying is true: "Experience is a hard master, but the best teacher."

smiter911 profile image

To tell you the truth this is still me in more ways than one, I have tonnes of tutorial videos. Yet I have so many ideas in my head but don't really know how to implement...then I go on tutorials and read/watch on what to do...after that poof knowledge is gone. You are right, at times one needs to just bite the bullet and start something and learn by doing.

bonzerrlopez profile image
Rodrigo Bonzerr Lopez • Edited

This is sooo true :) I've been watching tutorials for a year now and they have helped me a lot,however, I also have been forgetting a lot of them from time to time so I repeat and repeat watching the tutorials especially when I still haven't understood one concept, but for this year my goal is to really build a lot of things :) Thanks a lot for this motivational blog :)

peoray profile image
Emmanuel Raymond

You couldn't have said it better, This happened to me for a year before I decided to change many things. Now, I try to build projects that in turn help in my learning as it highlights what I need to know/learn for this project and how do I go about it.

maria_michou profile image
Maria Michou

Thanks for sharing, I'm sure a lot of us can relate. There has to be a point where you draw the line and start experimenting and not letting yourself judge yourself because of the mistakes you'll make during this process. Mistakes are what make us better in the end.

kushalvmahajan profile image
Kushal V. Mahajan

This is such a wonderful article. This happens in very start of learning. Somehow this feeling is not there when implementing something ON JOB. It's expressway there. But yes deciding that thin line when to switch is hard in side projects. It's almost the feeling that "I am graduating with A grade in this concept" which holds us. Perfection and know all holds us since it's a side projec and not real world.

nax3t profile image
Ian Schoonover

Well said! No doubt, tutorials/courses are great, but learning how to learn is key and it sounds like you did just that.

Problem solving is a huge part of programming. You don't learn how to problem solve by watching someone else code for you.

mikefreedman12 profile image
Mike Freedman

I'm in this purgatory. Even when I know having a working side project is better for my experience, my career and is ultimately more fun once you get going. What keeps pushing me back to watching youtube and Pluralsight is that I feel I'm being more productive with my time.

Side projects are hard to get off the ground. Once you get started you actual coding, you may be messing with the simplest thing for two hours that you thought should take 20 minutes.

After working your day job and taking care of other day to day responsibilities, you may only have 2 hours for deliberate practice. It doesn't feel great when you such a small reward for putting in 2 hours of work. Watching a well done tutorial or Pluralsight course can provide a lot of new information in one video and it feels like that time is well spent.

I understand that it's habit I need to break. Those coding sessions on a personal project will ultimately be more rewarding. And what is the point of learning the skills if you aren't going to apply them?

_justirma profile image
Irma Mesa

Great stuff - I think a lot of us face this, I know I do. And it’s hard to get out of it and not be scared. But we got to just go on our own and be okay with failing and googling.

vbordo profile image
Victor Bordo

I've found that reframing the internal monologue is helpful too. Instead of viewing any missteps as a failure, seeing these side projects as pure experimentation goes a long way towards gaining confidence as a developer. Don't be afraid to try new things and break them!

ikenshu profile image
Kevin Morales

implement pagination or use AJAX in a Rails app

The AJAX part is me right now but with Django. I'm following a tutorial to learn more about this and plan to learn React this weekend. And learn how to use both of them on some kind of projects. I want to learn so much things.