Tutorials can be awesome when you are first learning to code. There are a lot of great teachers out there who will guide you through building awesome and complex applications. At some point however you might find yourself in "tutorial hell". It seems like you're not able to build anything without the help of a code along video or blog. I've definitely been there. I developed this framework for learning with tutorials for myself which I am outlining below. None of this stuff individually is anything I thought of on my own but this is a combination of things that work for me.
You're probably thinking, "wait Rahat you're telling me not to code?" If you're going through a new concept I personally think the first thing to do is observe and try to take in what you can. Jot down some notes and psuedocode out the steps as the instructor goes through them. The main point of this excerise is to get an introduction to the concepts being taught and to dig into the logic behind it.
"What steps do we follow?"
"Why are we doing this in this particular order?"
"Why do we need to structure our project this way?"
"What are all the moving parts that make this app work?"
All of this can be achieved without coding you're just diving into the concepts first.
Start trying to build out the application by following your pseudocode and check your work against the instructor.
This part can be hard but it really challenges you to think through potential ways of implementing your solution. If you are having a hard time writing out the code that's definitely ok, watch the tutorial and code along as you normally would but try to change variable and function names slightly. Challenge yourself to understand what functions are used in what areas.
Once you have built the application, build it again but with slight differences.
Now we are up to the point where we should abandon the tutorial completely unless you really need to go over specific concepts. You built a working application by following along so now if you need help you should be able to reference the old code you have written when building your new application. Here are some ways to change the application you build but using the same logic:
Did you build a ToDo app? Rebuild it as a shopping list app. They follow the same logic.
Did you build a Blogging app? Try rebuilding it as a note taking app, again the same logic applies to both applications.
Built a social media app? Build a different type of social media. Twitter vs Facebook vs Instagram etc.
At this point, if you are able to successfully build something new using the same logic you will be exposed to all of the concepts you learned again and will be able to apply them to the new application.
Let's take a look at one of the apps you just built. Can we add any features? It could be anything small. Maybe your blogging application could use a share button for sharing posts on social media. Maybe you want your todo list to be attached to specific days so you can track what days you completed your todo's. Most of the time when coding on the job you are not building something from scratch, you are adding new features. Challenge yourself to add new things that are not part of the original tutorial. It doesn't have to be a huge feature, small incremental updates to the application are valid as well. We want to get used to adding our own bits of code to existing code bases.
Ok so we spent the last couple of steps building variations of the same thing but now it's up to you to build something completely different while leveraging the code you have used as a guide. The main point of this exercise is to learn the basics from the instructor and then refine it by looking over your past work. The more you repeat and do this the better you will get at remembering certain concepts as well as building up the muscle memory that comes with the experience.
What are some cool stuff you're building? Need suggestions on what to add to an existing app or an idea for rebuilding an app with the same logic? Feel free to ask in the comments or reach out to me on twitter: