by Vinh Le

So you’ve signed up for another online course — how do you make the most of it?

Last year, I fortunately got the chance to read a special report in the Economist that discussed how important life-long learning is in the age of automation. At this point in time, everyone seems to be afraid of the notion that AI and machines might ultimately replace their jobs. But the Economist argues for the significance of self-learning and self-development in general.

One valuable source for self-learning is MOOCs (Massive Online Learning Courses), which are gaining incredibly widespread awareness. Thanks to their flexibility, availability, and increasingly affordable pricing, many people have found MOOCs to be an important tool to either refresh their skillset or pursue a career move.

How about the developers out there?

No matter whether you’re a newbie or a seasoned developer, you probably have gone through several online tutorials. In this article, I will not discuss the importance of MOOCs, as this has been covered widely. Rather, I’ll share my personal experience as a self-taught developer who has attended a few MOOCs and show you how to get the most out of them.

How to get the most out of a MOOC

Please, don’t memorize those code blocks

There’s a very common mistake that you may have heard of a million times, and that I saw myself making when I first started diving into tutorials: I thought I could somehow memorize the lines of code I was working with.

Soon, I realized that this not only take tons of time but also overwhelms and prevents you from moving forward. Let me show you why.

Almost everything you see instructors doing on the screen will move in to your short-term memory. No matter how thoroughly you grasp the concept at the time, if you do not practice it frequently, it’s never going to sink in deeply inside your memory.

It’s just how the human mind works. In order to quickly pick up something to use instantly when needed, we need to practice it frequently ourselves, and not just watch somebody doing it.

Not being able to memorize code snippets you see might negatively affect your self-esteem at first. However, if you look at the bigger picture and analyze how much you’ll need to learn, you’ll realize that it’s not necessary to try to remember every bit of syntax or snippet.

Don’t get me wrong. There are things that you absolutely have to remember. You’ll be heavily using them, and it will save you time later on. However, the point is, almost everything is searchable. You could quickly find those code blocks later on, so all you need to remember is what it is used for so that you know what to search for.

Hence, deciding what you need to remember is pretty imporatnt, but it’s easier said than done. Remember, your time and mental capacity is limited. Save your brain cells for more important things.

But what are those important things? Let’s move on.

Do try to grasp the concepts

Yep, concepts are important. But, again, which concepts?

If you consider the functionality of a code block, it basically tells you how to solve a given problem. However, understanding why it does that is far more critical. In other words, taking into account what’s happening behind the scenes, and figuring out how the concepts connect the dots together to solve an issue.

The further you go into your coding journey, the more you’d realize that the lines of code you write are just a way to solve the problem. And as we develop, the way to solve the problem is updated frequently and improved upon, but the concepts hardly change.

Imagine that you want to use a certain library. You go to its documentation or scroll down to the usage part of its Github repo, grab that block of code, and paste it into your project. One month later, the syntax changes and red lines scrawl across your terminal. What are you going to do?

Fortunately, it’s not that big a deal if you already understood the code snippet when you first used it. You’d know what the library was used for and what its dependencies were for it to work properly. As a result, the problem can quickly be solved right after a few searches.

You probably know that not every instructor tries to carefully and thoroughly explain why they choose a particular technology or why their code just works, elegantly and somehow magically.

The reason is, it really takes time and effort to painstakingly communicate all of this info over the course of a tutorial. Concerning how much time a course normally takes, and how much stuff they need to cover, sometimes instructors just can’t cover everything.

How can you sort this out?

One way is to pick a proper course. In one of my blogs, I discuss how filtering through learning resources is actually quite challenging. And that’s not because the sources are very limited — rather, there are tons of them and that may overwhelm you at first. So how do you choose the right resource?

Luckily, almost all of the MOOC providers that I know offer a trial period in which you can preview a number of lectures within a course. The trial period may vary across providers. However, it is normally long enough for you to at least get a taste of the contents as well as the teaching methods of the instructor.

Personally, after I sign up for a trial, I do not hurry up and dive straight into the course. Instead, I try to observe the way the instructor explains and clarifies concepts. The purpose of this is to make sure that after dedicating my time and money to a course, I will learn how to think and solve problems in my projects outside of the extent the tutorial covers.

Rating does matter, but not that much

One of the mistakes that I made at the beginning when selecting a course was relying heavily on the course rating, reviews, and the number of students enrolled.

However, the fact is that not all instructors have a flair for explaining concepts, regardless of how brilliant they are. Teaching skills are not directly proportional to a person’s experience or skill level.

Additionally, each learner’s sense of understanding and experience level is also different. Some people may find that an instructor explains concepts really well, but that may not be the case with you.

Remember that you will follow the course you pick over a decent amount of time. Many of us might spend time after our day jobs studying, which is why this time is very valuable.

You could be spending the time with your family or on your social life. However, you’re dedicating that time to developing yourself instead. As a result, a proper course not only needs to give you a better understanding and broaden your knowledge, but must also provide a sense of excitement. This will motivate you and keep you hungry to learn more, thereby keeping up your momentum.

And, once you have the desire to learn, learning changes from being a responsibility (something that needs to be done) to a joy (something that you want to do). Does that sound better?

Look for other solutions

There’s a famous quote,

A smooth sea never make the best sailor.

Does this make sense?

Not too obvious, is it? Let me tell you why.

Have you ever thought that while you’re in the middle of a tutorial, everything works just flawlessly like it’s magic?

In my opinion, the reason is that, in a project that an instructor chooses to teach you, they’ve already picked a technology that they know about best, and they’ve also rehearsed it and tried it out in practice many times.

However, there is never a single way to solve a problem. Alternatives always exist, especially in the tech world. Therefore, whenever possible, try to investigate other ways to solve a particular problem. This might sound time-consuming and vague at first. But, later on when you work on your personal project, and you’re all on your own, you’ll realize the benefit of this habit. Trust me, it’ll really help you in the long run.

You must not only look into altervatives to solve a problem, but also come across the solution itself by asking questions such as:

  • Why is this technology is the best way to solve that particular issue?
  • What makes it superior to others in that context?

Every time the instructor suggests a solution, you are aware of why it solves the problem, and don’t just understand it for the sake of it. The distance between getting to know something and truly grasping it is far more than just listening to the explanation.

How? Read about it!

So how do you find out a solution to a concept that is brand new to you? Spending time on different mediums is a great way to help. Video is useful to follow along and get a sense of of the breadth of a concept. But I’ve found that articles and blogs are also imperative to understanding a concept in depth.

One more thing: never discount the official documentation, my friends. It is the one of the most important resources for understanding a concept and the one that you will most likely come back to later on.

But, reading documentation can be sort of overwhelming, especially for code newbies.

Nonetheless, the point is you do not need to read the whole thing. Rather, try to just view the part where it solves the problem that you are facing right now. Read through it, compare it with how your instructor presented it, and google how other users implement it. Trust me, you will get much deeper into a library, technology, or concept.

Documenting instead of copying

What if I told you that you will forget a majority of what you have just learned in the next couple of weeks or months?

I am hardly able to fully recall a thing I worked on and understood fully just a few weeks ago.

As mentioned above, the truth is painful my friends. Our brain and memory capability is limited. You’ll not recall something soon after you learn it, unless you practice it frequently. Compounded by the vast amount of knowledge you need to learn and understand, it is pretty normal if one day when you’re working on your own project and face a problem and tell yourself:

I definitely have seen it, listened to it, thought that I understood how to solve it, but why the heck can’t I recall it right now?

If it is a concept, or a library, then you can quickly solve this by researching or looking at the documentation. However, this problem gets worse if it is a particular issue that the documentation does not cover.

Of course, you could then continue to search and hope that other folks already went through these problems and sought solutions online as well. But let’s admit that this is not really efficient and time-saving, right?

That’s how the other documentation comes into place. I’m not talking of the official documentation, but your documentation.

What? Yes, you’ve got to maintain your own documentation, too.

How? By practicing the habit of writing down what you have learned and saving it somewhere so that you can quickly refer to it when needed.

More importantly, please do not treat it only as your dictionary of syntax and snippets! Fill it up with problem analysis, thoughts, in-depth clarification, references from different sources. Make it yours so that you know how to access the information quickly.

Don’t forget the forums and discussion boards

What do you usually do when you run into bugs or problems during a tutorial?

Do you Google/ StackOverFlow on your first attempt?

What if I told you that you’ve already got a mini version of StackOverFlow right inside your tutorial?

Yep. That’s how forum and discussion panels are designed within courses. And most online courses offer a place for students to discuss their problems with the instructor or their peers.

The course forums and discussion boards are usually the first place that I go when I run into bugs — even before I begin Googling them. That’s because many students doing the course have already come across the same bug. Therefore, you might find answers right in the Q&A section without leaving the class.

Another way you can use the forum is to share your solutions with others. It could be an elegant piece of code that no one has shared, or even some parts of the solution given by the lecturer that you found vague. Either way, sharing your solutions helps you reinforce your concepts and improve your knowledge. It also provides you with an opportunity to learn not only from your instructor, but also from your peers.

Beware - Don’t let these courses fool you!

There is one issue with online courses that I found myself running into many times. To be frank, I was under the illusion that I was a great problem solver based on the progress I achieved throughout a course.

But, then I realized that the answers I thought I had learned were not actually my solutions! They belonged to the instructor and were right inside the course.

That’s because every time a real life problem needs to be solved, no one except you must go to find the answer. There are no suggestions from the instructor, no recommendations or hints from your fellow learners. Only you and the knowledge that you have obtained. That is the moment when you truly recognize what knowledge you have and what you don’t!

But once again, you absolutely should not blame yourself for this. The first step is just accepting the truth, and then figuring out how to sort it out.

When you’re not actively (and independently) solving a problem and get used to waiting for other’s suggestions, your critical thinking skills will gradually weaken. As a result, when you’re following along with a tutorial and face a problem, why don’t you pause the video and give yourself some time to try out various solutions?

The idea is not only to ultimately look for the answer, but also to develop a critical mindset. Once you find the answer yourself without the help of others, regardless of whether your solution is perfect or your method is elegant, you’ve already gained something for yourself. And that mindset will become your habit and help you solve bigger problems later on.

You might say, what if it is a technology, library, or framework that I haven’t heard of before? What if there is no way for me to get a sense of using it?

No problem, my friends. Just bear in mind that you are going through those tutorials to get to know and learn new things. However, to get the most out of them, and to make them yours afterwards, try not to follow and imitate your instructor step-by-step.

If it is a technology that you’re not familiar with, try to have a look at its documentation or at least Google it after being enlightened by the lecturer. After that, give yourself the courage to try to understand it and give it a shot. Even if it might break at the first attempt, you are absolutely fine.

Remember, the more struggles and difficulties you face along the way, the more likely you are to remember and make the knowledge yours.

Conclusion

As newbies, many of us are fearful of making mistakes and getting lost. This really prevents us from getting out of our comfort zones, and we find ourselves trapped and unable to approach a problem.

Therefore, let’s take courage my friends! Your code could be ugly or broken at first, but it is still better than copying lines written by others.

There is a common cycle, Try, Test, Learn, and Improve, that many use when approaching a new concept. And as you saw, learning and improving are just the two later parts. They are the steps to polish your knowledge. They are important.

But it is even more essential to get a taste of that new thing on your own, and try it out to see how it is right, or wrong. Then continue to figure out the problems along the way until it somehow works. The more independent you are in your learning, the more happy and excited you might feel when the problem is solved!

Nonetheless, this is a process that every one of us must go through. And life is so boring without any changes or development, isn’t it? So, how do you make the most of your learning path? Disrupt your conventional ways of approaching problems, prioritize broad concepts over actual syntax, document your journey, and leverage resources provided by courses. You will absolutely be on the right track!

That’s the end of this blog! Thanks for reading! If you like it, please hit 👏👏👏

Say hello on SM: Facebook, Twitter, LinkedIn, or my personal site.

Stay tuned for upcoming tech blogs 👈 👈 👈

See you soon!