Writer's note: All that said in this post are based solely on my personal experience. Thus, it's not meant to be taken for granted as there's a chance your experience is vastly different than mine.
I've been learning to code for at least 3 years now. I've tapped into Android app development, desktop app development, and web development. Somewhere along the way, I decided to take web development to focus myself on. Like most people learning web development, I started with HTML and CSS. It was a pretty fun journey. That is, until I eventually burn out and my learning spirit started to evaporate.
In those days, I learn programming primarily through tutorial videos. It was also the gate in which I enter the programming world. I keep on jumping from one video to the next, thinking that I'm improving myself in the process. Then at one point, I decided to stop watching tutorial videos and build something on my own.
Turns out, my learning method has a terrible impact on me. I find myself constantly overwhelmed by the fear that something might go wrong and I couldn't fix it on my own. And every time I build something, there's a high chance I will abandon it somewhere before it's finished. I was stuck between not wanting to go back to watching tutorial videos and my inability to overcome the fear of moving on my own. Hence, I moved away from programming for a little while.
Then earlier this year, I decided to forcefully step up my programming game. I wanted to build some projects without relying on tutorial videos. And there it begins.
It's been 2 months since that decision was made. The effect has started to take its toll. I learn new tools and technologies much more effectively. I can overcome difficult challenges. I'm confident I will finish my current project. And I really feel like I'm on the right track.
I'm really glad I took the decision to drastically change the way I learn programming. But I kinda feel disappointed I didn't make the decision much earlier in my learning process. I feel like I've wasted so much time.
The ups and downs of my learning process have taught me a lot about how to be a better programmer. And I feel like I need to share it with the world.
So here it is :D.
As you've probably guessed, something about tutorial videos is going to be on this list. After all, it is basically what the story above is all about.
Quite recently, I found out that I'm not the only one that had fallen into this rabbit hole. There are many fellow beginners out there doing the same thing as I did back then. They are constantly jumping from one tutorial to the next without ever getting real results.
If you're one of them, please do yourself a favor and stop it. You might think that by constantly following a tutorial or a video, you will improve yourself. The thing is when you're following a tutorial, most likely the author had already tried their best to make sure that everything works fine. You never really have to think about how to solve the problems, the thinking part is already been done for you.
Sure, you might learn a good thing or two along the way. But I don't think it will be that useful, as there's a high chance you'll jump to another tutorial soon enough, and you'll never really put your newly acquired knowledge to practice.
As I've mentioned above, I've tapped into Android development, desktop app development, as well as web development. However I didn't mention one thing, that is, I frequently switch between different fields of software development along my journey before finally making the decision to focus on the web.
Even after I focused on web development, I'm still overwhelmed by how hard it is to dedicate towards one thing, primarily because of the internet's influence. It usually goes like this.
Me: "I'm going to focus on this tool until I'm good enough with it."
. . .
*somewhere along the way*
The Internet: "Hey! Have you heard of this tool? It's on the hype! It's even better than what you're currently using. You really should learn it man, or else you'll never be good enough for the industry".
Me: "I guess I will learn that tool instead".
The lack of focus like this will only lead us, beginners, to a bad end. We'll end up being a jack of all trades but a master of none. What I think is better, is by focusing on one thing until we're good enough with it, and then move to the next thing.
Now don't get me wrong, I do think that what is currently popular in the industry is important, but that doesn't mean one has to start learning it at the very moment they knew about it and ditch the tool they're currently learning.
I like to put it this way: Yes, learn it if you really need it. Otherwise, learn it only after you feel like you're ready to learn it.
If you're like me back then, where you're used to following tutorials. Then chances are, having to solve a problem on your own can be a daunting task. But here's the thing, as long as you're afraid of challenges, you'll never improve yourself as a programmer. You'll find yourself stuck on the very same spot you did as yesterday, or even worse, last week, or even worse, last month, or even last year...
Yes, stepping into the unknown is very daunting at first glance. You don't know what lurks in the dark waiting for you to get closer then prey on you alive.
But let me tell you, your mind is exaggerating the danger that lies beyond your usual comfort zone. You think the dark murky water will drown you, when in fact, it's only above your knees. There's just no other way, you have to push yourself to face the challenge head-on if you want to get better.
There are many ways to make a problem appear less challenging. One of which leads us to my next point.
There's a rather popular rhetorical question that goes like this.
"How do you eat an elephant? One bite at a time."
Now at a quick glance, if you take it literally, there's nothing special with those words (it's very logical after all). But if you use it as a metaphor, it's a powerful one.
Trying to eat an elephant in one sitting is impossible. Even if it's possible, it's the same as asking for a severe digesting problem. The only logical answer to this is by eating it one bite at a time until there's nothing left to eat. Yes, it may take days, weeks, or even months. But it's guaranteed that if you stick to it, you'll eventually succeed.
It also applies like this.
If a problem seems too big and impossible to be accomplished, break it down into smaller fixable ones. Chances are, it will make more sense to us.
The common way of doing this is by making a very specific to-do list out of the big problem. That way, we'll have a much clearer view of what needed to be done in order to achieve the ultimate goal. Even better, we can measure our progress towards the ultimate goal!
I'm really disappointed I didn't realize this much much earlier in my learning process. In the past 2 months, I've been relying upon documentation to learn new tools. And I think it's safe to say that it is a very effective way of learning.
Want to learn Bootstrap? Documentation! Want to learn SASS? Documentation! Want to learn Mapbox API? Documentation! Want to learn GSAP? Documentation! Documentations all the way!
I think reading documentation is better than watching tutorial videos simply because, with documentation, no one is telling you how exactly to do it. Usually, you're only given a description of what's a function will do, what are the parameters, and a glimpse of its use case. You wanted to know how to fits it into your project? Get your hands dirty. You have to think about how to use the tool properly based on your needs and the given description of the tool.
Now, compare that with tutorial videos. Someone has already done the thinking part for you. The author has already figured out how to use the tool effectively to meet their needs. The only thing you need to do is to follow the step-by-step guidance from the author.
The next best thing about documentation is, there's a big chance a tool created for public use will come with its documentation. It's not the same as tutorials, I don't think everything that's created for public use already has someone covering it in a tutorial.
Seriously, documentations are the best thing beginners can have, especially the well-written ones.
That's it, keep in mind that everything said above are based solely on my personal experience. Thus, it's not meant to be taken for granted.
I hope this post is useful to you. See you at the next post!