There are lots of method to learning, and implement that knowledge. One of the ways of learn is to implement the concepts that you learn. However, there is one problem with retaining information that I often encounter that I believe you might have experience this one too.

Each time when you study a material for a test, and while looking through all the materials it seemed like you understand it all. However, when you closed the book, and do certain problems, you realized that you actually can’t implement the information that you just learn on that problem.

You might go check out the solution, and look at the solution. “It makes sense”, you think. Then, you close the book. Walk through a couple of examples problem, and think that you can solve the problem for the test.

The next day, you had your test, but you bombed it.

This is usually called the illusion of competence. It is the idea that we think we know more than we actually do. The material that we are studying looks simple for us, and we are surprised how often it falls under our radar. Essentially, we fall on mastering the material over and over again.

Let’s say you are preparing for an software engineer interview. You study all the data structure and algorithm questions.

You encounter a problem that you are not able to solve. You look at the solution of that problem. The solution make sense to you - It laid out all the intuition, and the algorithm step by steps.

However, a week later when you try to solve the same problem, you realized you get stuck all over again.

Another example is when you try to learn React. You bought an introductory course on React.

The course guide you through couple of simple application, such as Todo List. You follow along the instructor on that course, and you are excited to develop something on your own. However, once you finished the course, you realized you still don’t know anything about React. You don’t understand when you should create a presentation component instead of a container component.

The problem here is that we are able to recognize the solution when there is a complete roadmap shown in front of us. We are able to see the points, and it make sense.

We convinced ourselves that we understand the solution, and we convince ourselves that we make use of our time learning something new.

How do we solve this problem? Do we have to rely on Stack-Overflow each time when we have problems?

No, we don’t have to rely on Stack Overflow, and there is solution.

Instead of learning based on recognition, you learn to recall.

Each time when you study a new material, a new chapter, stop for a moment. Close the book, the webpage, and the reference that you are studying. Then, try to re-imagine the problem from that new material that you are studying and try solving it.

This is a test to yourself that you really know the material or not. If you are not able to solve it, you know that you haven’t really understand the topic as well as you think.

You can then study a little more, and repeat the process.

By using recall, you force your mind to understand the material and can recreate them on their own.

Next time when you try to learn some new topic at your work, or study for your exams. Try stop for two minutes. Let’s say learning studying for a binary tree data structure.

Try to explain the material like you are explaining it to your friends or colleagues.

## What

Rehearsing the content that you just learn and explaining what a binary tree is. This let’s you ensure that you know what a binary tree actually is, and what is it’s property.

## How

How do you create a binary tree?

Take a piece of paper, and try re-implementing the binary tree structure with your favorite language. This will ensure that you know how to implement it. If you get stuck, go back to the material and try to see how they implement it.

## Why

This is where the information can really *stick* to your head.

Explain to yourself why we need a binary tree, and what scenario do we need to use them. What are some pros and cons of using it? Why do we need to use Binary Tree in certain application vs others?

Knowing the *why* will improves your memory, comprehensive, and problem solving skills. It will help you support that integration from knowing what a binary tree is to why do we need to use them.

If you failed to explain any of these steps, open the text book again and look at the material longer. Repeat these method until you are able to answer all of them.

## Conclusion

As a software engineer, we always need to learn new things in order to get ahead. Sometimes, learning new things is to learn how to learn. We know that illusions of competence exist, and the tips for solving illusions of competence is to change your learning methods from recognition to recall.

Each time when you read a new topic or a new articles. Stop for two minutes, and do the what, how ,why in your head.

With this technique, hopefully, you are able to fully understand the material that you are learning.