There's quite a few articles floating around the interwebs in regards to the whole "tutorial hell" dilemma that many developers face. They tell you to apply what you've learned by giving you some ideas for projects and how to contribute to open source but I feel those are the end goals. What I usually find missing is how you go from an endless cycle of tutorials to successfully applying that knowledge to real world projects. I've made my own little system for escaping the never ending spiral of the tutorial hell hole that I think some of you might find beneficial.
What is tutorial hell and how did I get here?
One thing we need to have a clear understanding of before we dive into the strategy is why we get stuck in this predicament to begin with. I personally find myself in this cycle sometimes so I know how alluring it can be to build something flashy in a perfectly sanitized environment that the instructor has laid out for you every step of the way. That's one of the seductive things about tutorials though, they are these pristinely engineered walkthroughs of something that has no gotchas along the way because you're being held by the hand. This gives you a perpetual sense of accomplishment when we all know coding is generally all about pushing through roadblocks and constant challenges.
Don't get me wrong, I devour tutorials like crazy because it's how I personally learn to use a tool or language. There's a distinction that you need to make though, you either become a 'tut slut' or you know when to pump the breaks and use that knowledge for something useful before it goes stale.
Step 1: List any app idea you've ever had
The first thing to do after binging a whole season of Wes Bos n' Friends or the Coding ChooChoo Train is to just jot down a list of apps that you think would be cool. Like literally anything, the sky's the limit at this moment. Your knowledge need not apply, just write down anything you think would be fun or useful to use in your own life. I usually find the most inspiration by thinking of small annoyances I have each day and think if there is any sort of usefulness an application could bring to the table. This might take a few days too, I rarely have a good idea the first time I think about this. Sometimes it’ll hit me when I'm doing something completely irrelevant. Here’s an example list of items I’ve jotted down:
- minimalism app for getting rid of items
- astronomy events reminder app
- drive your roomba manually app
- hide everything except events on facebook
- ebay price history from pictures
Step 2: List your tutorials
Now you've got this little list of cool app ideas, nice! Before we whittle that list down some, we need to make another list but this time it's of all the tutorials you recently completed. Don't worry if you didn't finish the tutorial either, even if you got 20% of the way through just jot that down as well. Here’s the most recent ones I’ve done:
- API Design in Node
- Typescript Fundamentals
- React todo walkthrough
- Design for Developers
- Playing around with React Dnd
- JWT Authentication and Login
Step 3: Pair the apps to the tutorials
In this phase we need to take each app and find any tutorial that we think would be beneficial in building it out. In the end we will see which app idea has the most relevance from our recent learning cycle:
-
minimalism app for getting rid of items - 4 total
- Design for developers
- Typescript fundamentals
- React todo walkthrough
- JWT auth and login
-
astronomy events reminder app - 4 total
- Design for developers
- Typescript fundamentals
- JWT auth and login
- Api design in node
-
drive my Roomba manually app - 0 total
- (moonshot idea, no realistic overlap from recent tutorials)
-
hide everything except events on facebook - 1 total
- Design for developers
-
eBay price history from pictures - 3 total
- Api design in node
- Typescript fundamentals
- Design for developers
Note: You may not really know what types of tools, libraries, frameworks are required for your app idea and that’s ok! Just put down anything you’ve recently learned that you think may even remotely benefit you during the build process.
Step 4: Pick the most exciting app/tutorial combo
In this step we want to analyze our top app ideas with the most tutorials and decide which of these are the most interesting and/or inspiring to work on. In my case, my top two are “astronomy events reminder app” and “minimalism app for getting rid of items” . I really love astronomy and would love an app to remind me of specific events (meteor showers, ISS overhead, full moon, etc), but this would be more of a ‘for fun’ app. The minimalism app would actually help me solve a problem I have been having lately and that is trying to decide what items to keep or give away. In this example I decide to go with the minimalism app because I like the idea of solving a real issue.
Step 5: Strip it to the essential building blocks
Right on, so we have an app idea that has a solid foundation of tutorials and some inspiration. This step is to lay out the high level functionality of our app and see where the tutorials we completed can help us out:
Minimalism App:
-
Needs to list out items with add/delete feature:
- I can use the React Todo tutorial to build out the whole list feature. This is the base feature for the application so I can either take the React Todo app I built and just modify it or reference the tutorial again as I am adapting it for my specific needs.
-
Needs a rating system for each item
- The rating system isn’t something I’ve specifically tackled, but it’s something I know I can figure out along the way.
-
User login and authentication to save list:
- The JWT Auth Login tutorial I did can help me out for making a user login system
-
Simple but inviting design
- Not an essential, but I’d like for the app to be appealing to use so I can use the Design tutorial for this part
I’ve got around 75% of the application covered by the tutorials I’ve completed, the other 25% is something I can just use some Google-Fu to cover.
In the end, I actually made this app with the above process. You can view it HERE.
I haven’t gotten to adding user auth just yet but the majority of my idea was completed using the above steps.
Conclusion
I hope by breaking down your tutorials into building blocks for an application proves to be useful. You’re probably more ready to build that app idea you’ve always had, you just need to take time to analyze the app's essential functionality and identify all the areas you’ve already covered in tutorials. You’re never going to know 100% of everything needed, but that’s literally with everything you’ll ever do as a developer.
Since most of you reading this are looking to escape the tutorial hell spiral, I’ve framed this system as something to do on your first venture of escaping that void. What I do now is actually decide on something I want to build and then figure out what I know/don’t know and watch or read a few guides on those unknowns (but not too much, just enough to get 80% of the way there). I’d love to know what everyone else’s strategies are so feel free to drop a comment down below.
♫ Writing Music ♫
I thought it would be fun to just share some of the tunes I listen to while writing :)
Top comments (5)
Thanks, Bennet!
Your post was timed perfectly with a current project I'm working on ( a code housecleaning initiative of sorts ). I have both "lists" already gathered. Matching projects to applicable tutorials will work great for my needs!
Cheers :)
Sounds like an interesting project!
Thanks! very interesting.
Could you recommend a tutorial for JWT Auth & Login ?
A good one to start with is this one from Web Dev Simplified - youtu.be/mbsmsi7l3r4
If you're familiar with Typescript then this comprehensive tutorial by Ben Award is a must - youtu.be/25GS0MLT8JU
Nice