In this post, I want to talk about a way that you can start applying your newly gained skills in a more practical and "real" way once you start learning new frameworks or tools.
This idea started after a conversation I had with some people in a coding community I'm in. I shared with them my idea of how to practice their new skills beyond just copying the stuff the instructor makes on his video tutorials.
I thought that idea could benefit more people as a written post to have for future reference (or anytime I have a similar conversation.)
With that said...
The Meta Game
I think you already heard by now about the idea that before trying to learn a lot of things the usual way by trial & error, you should have a better way of learning. Kinda like, "before you try to learn something, first learn how you learn."
And there are several merits to this finding-how-you-learn approach. There's also the idea of going out and finding out what's a better way to learn new things.
So now you not only identified what's your learning style but also are finding that there are several strategies for more effective learning.
This "learning how to learn" concept is what it's now been referred to as "meta-learning." It's when you now have a better understanding of how you can acquire knowledge faster and retain it for longer.
And understanding how is that the brain processes this information, what things facilitate comprehension and how to work with your own style rather than against it, it's what's going to take your learning skill to the next level.
I have personally not been the most adept at this skill back in college, the way I used to learn things in class was just plain ol' rote memorization and half-assed note-taking. Pretty much like the worst way of learning possible now that I think about it.
However, it was the only way I knew back then, and I was pretty much drowned in academic work to have time to find about how to learn more effectively.
But it's not until you get beaten up enough times doing the same thing that you say that "Enough is Enough" and then you set out to find a better alternative.
The wonder of the modern-day Internet is that you don't have to "reinvent the wheel" just look at what others have done and what has worked for them to take some of those things, apply them and see if it works for you as well.
So, we're going to use some of those things to plan out our escape from the dreaded tutorial hell.
What's the deal with this "tutorial hell"?
The notion of "tutorial hell" is this state in which you're learning a new technology (or technologies), you follow what the instructor says and does on the course. You have a sense of understanding about the topics presented and can even do well in the activities.
You have this confidence in knowing how to do the app/project the instructor laid out in the course but when you go out in the wild and make a project of your own to test your "newly acquired" skills, then you are faced with a blank editor and no idea how to start.
You go back to the course to review the material, you find it makes sense there and what you did in the course's project is right.
Still, you have no confidence in your actual skills, and to build that thing you have in mind, you would have to look at a tutorial from another instructor that already did that thing that you want to, and so on for every other app you want to build. And it seems there's no way out of that vicious cycle.
How do we escape
The ideal scenario when taking a course, one of these very comprehensive courses that teach you the A to Z of web development, is that you had a nice proportion of theoretical knowledge and practice together with feedback to know the right and wrong ways of doing things.
After the course, you will now be able to take those concepts and apply them in several different scenarios, be it something you want to build or a project that already exists that you will be helping to improve and add more features.
That's where you need to take a step back and think what you're goal is, what is that you want to accomplish in the first place. Beyond being able to build ToDo lists, or create landing pages, or building API's, have clarity of what is your end goal and what is it that you need to get there,
The above-mentioned-idea is called "Begin with the end in mind" form Stephen Covey's book, 7 habits of highly effective people
In essence, what it says is that you take your end goal and start tracing back the steps that you need to take to get there, so going from end to beginning.
This is where you'll be needing the help & knowledge from others about the subject in question. So you can have a clear picture of what are the skills you'll need to acquire for your specific goal while discarding the rest for now.
You then take the skill identified as the best candidate to get you towards your goal (the one that gives you the more Bang for your learning Buck) and deconstruct it.
Doing that you can take a really intricate topic and then piece it apart in smaller chunks that are easier to tackle and will build up your skills progressively (in a "divide and conquer algorithm" fashion)
Figure 1 - Divide and conquer algorithm. Image source
Now, once you have the pieces in hand, you figure out how do they go in what order to build the whole skill you want to get.
But since we "don't know what we don't know." that's where a course comes in handy because the instructor already did the hard work in this part for us.
Just by taking a look at the table of contents of a course, you can see what would be the natural progression from beginner to more experienced.
If you compare that with a couple of courses more, it will give you a better overall picture of the order you have to follow for your learning process to be more effective.
Since we're talking about being practical and just focusing on the big wins, we do 80/20 analysis to pick up the topics that are more relevant and will give us the most results.
(Learning the syntax of one language probably isn't as valuable as learning about commonly used algorithms that can be applied in several languages)
Figure 2 - 80/20 graphic. Image source
After this, you set up a schedule for learning and practicing the actual skill you want to pick up, be it getting good at CSS for layouts or coming up with better designs for pages or understanding Typescript and use it different projects or anything else.
You have to find a time that works for you that you can consistently keep up with and be intentional in the way you're practicing that skill, making the most of the time you have in the session.
The idea for the consistent schedule is that the skill you're trying to acquire is gonna get easier over time, the brain is going to start recognizing patterns and getting more adept at the "what do I have to do now" part.
It also works to create the mental pathways so that what you learn sticks better and stave off the effects of the 'curve of forgetting.'
Figure 3 - Depiction of the curve of forgetting. Image source
So all good now? We already did all the pre-planning processes that will save us hours once we start learning and now the only thing would be to start learning, right?...
...Not really, we're still missing one key piece because everything is all fine and dandy when it's planned but then life happens and it's where everything crumbles, and all our learning plan was for naught.
The missing piece of the puzzle here is accountability (assuming you want to be as effective as possible with your learning and not have to spend months on end learning just one thing.)
This is the "kick in the butt" that we'll need when things get in the way or when we just "don't feel like learning".
You have to put something on the line to state your intention of learning that one tech until you understand it and can use it for yourself without a tutorial backing you up.
Think of it like in poker when the stakes get higher, people are more focused on bringing their A game to win and take the prize home.
That act of risking something you could lose puts you in a sharper state to actually follow through on what you said you were going to do.
That can take the form of setting a deadline, or making a bet with a friend or what Tim Ferris calls giving to an "anti charity" which is "a nonprofit that you would rather nuke than give money to."
The above-described process was brought to you largely thanks to Tim Ferris' book The 4 Hour Chef.
It's a modified version that I've been trying out and using for the past few years (ironically to learn a lot of things totally unrelated to tech...)
But that's pretty much it. It's not the way, just one way that you can take whatever new tech you're trying to learn and use courses/tutorials as the guiding material that will facilitate your learning instead of letting it be what dictates how well you're going to be learning it (or if you learn it at all).
- First, you start with your end goal and work backward to define what's the most valuable skill to learn for that goal
- You then deconstruct that skill and ask yourself. "What are the sub-skills I need to learn to get a good grasp on the main thing."
- Then find out the logical order in which those sub-skills go for more effective learning (e.g. for web dev would be to learn HTML first, then CSS and then JS in that order.)
- Do the 80/20 analysis to find the "big rocks" that are the most important for learning the overall skill.
- Set up a learning schedule that works for you and that you can be consistent with to facilitate the skill-acquiring process.
- And finally, the missing piece is accountability. Risking something that makes you as they say "put your money where your mouth is"
Once you have all those pieces in place, you'll be able to go out and learn any language, framework, or technology that you need to or you want to become very good at.
And that was it for this week's post! Thanks for reading 'till this point. I hope it was useful and gave you a "framework" to try when adventuring into the unknown of learning a new kind of technology.