As a software developer we are always learning. There are new technologies, libraries, frameworks, languages, practices, platforms and whatnot coming out every day! Our industry is changing so fast that is quite hard to keep up with it. If you are like me and you want to get better and improve continuously you know you have to be good at learning. A developer who is not good learning new things is not a good developer, period.

I remember how a while ago I took the coursera course Learning how to learn. That course teaches you how to learn. It sounds a bit stupid, but the truth is that most of us haven’t been taught how to learn. We expend our entire childhood and early adulthood learning. We go to school, uni or whatever. Still, nobody ever have taught us how to learn! Somehow we assume that we already know it, that we are born with that skill. This course proofs that wrong. There were two concepts in the course that I would like to share with you: active recall and spaced repetition.

Active recall is the idea of learning by trying to remember. This is the opposite of passive learning. Passive learning is the traditional way of learning where a student reads some material or attends to the classroom and listens what the teacher has to say. This kind of learning gives ourselves the impression that we are memorizing, but what we really are is just analyzing and understanding data.

Humans memorize things easier if they make the effort to bring what they have learned back to their brain. Specially when they think they have learned. So rather than just sitting listening to your lecture in the classroom or reading a book is better to try to reflect what you learned. You could try to explain the topic to somebody else, write it down or make a quick test about it. Just the effort of trying to do this will 1.- make the learning more efficient (because you are involved) and 2.- you will discover where your knowledge gaps are, so you could go back to the lesson and review it. The Feynman Technique to learning follows this approach.

Spaced repetition is the idea of repeatedly learning a subject with a small interval between each learnings. Again, the traditional way of learning is to make a big effort and study the subject in one go. The closer to the test the better, so you don’t forget. How many university students sit in front ot the material the day before the exam and expend the whole day and night on it? This way of studying is quite inefficient. In one hand, our brains needs some breaks between learning periods in order to memorize things properly. In the other hand, learning it just once means you are going to forget it quite quickly.

A better way is to learn little bits in short intervals. For example every day. You learn one thing one day and then next day you go quickly over it. Do you remember it? Ok, let’s continue with the next thing. If not, let’s revisit. Do the same next day. Repetition helps memorizing things. Of course you don’t have to go through the same learning every single day, the more you repeat the harder will be for your brain to forget - which means it will take more time to forget. The most efficient way to learn a new concept will be to find out when your brain is going to forget that concept so you can come back to it and re-learn it. In theory you could draw a curve in a graph based in how the brain forgets concepts through time. This curve goes down from knowing to not knowing it through time. If you learn once the curve is steep, if your learn it often it becomes almost flat. This is known as the forgetting curve.

Forgetting curve

I remember when I went to school and uni we used to have big exams at the end of each trimester. We had to learn the whole subject for that exam. The purpose of the exam was to test us to see if we had acquired the knowledge. Many times we would study just the day before the exam and all the knowledge was gone from our heads the day after.. Such an inefficient way of learning!

A better way of learning would be to use the techniques of Active recall and Spaced repetition. For example we could have small tests every so often - not to evaluate, just to learn. Actively involve the students with the lessons - make them explain what they’ve learned in the classroom or make them write it down somewhere. The teachers could check if the student really understands the subject and help them find their knowledge gaps. If we did this we wouldn’t even need to have exams! Sometimes I wounder how different my life could have been.

Nowadays, when I need to learn something new I follow this approach. It doesn’t matter if this is a new programming language, a framework, how to play the guitar or learn Italian. Active recall and spaced repetition helps my brain learn the subject in a more effective and efficient way.