I’ve been learning since before I can remember: first, learning to read, then, reading to learn.
Ironically, what I never focused on until very recently was learning to learn.
In the world of software engineering, learning effectively is one of the most crucial skills one can possess, yet it’s one of the most underdeveloped ones.
As technologies and frameworks evolve and change, the ability for an effective self-education helps keep many doors open, to diversify and regularly invest in one’s knowledge portfolio.
Effective self-education is marked by learning concepts, ideas, thoughts, and truths effectively.
But what does it really mean to learn a concept effectively?
To me, effective learning is a one-time process of deep understanding and remembering important information and concepts, and then connecting them to existing knowledge.
It’s a deliberate and careful investment of one’s time such that is ideally done once and for all.
The issue with the way the most programmers I know are learning - is that they learn just enough to solve a given problem.
While working well short-term, such a strategy is very time-wasting, unless one is able to reuse the newly acquired skill repeatedly in a short period of time.
But even then, such a skill is often superficial and lacks a deeper understanding required to apply it to related problems.
Reading a technical book cover-to-cover, watching a talk or screencast gives a false impression of understanding and remembering and yields half-assed skills, if at all.
Frustrated with forgetting information and skills I was sure I acquired at the time and reading the same books and tutorials over and over, I decided I wanted to improve the way I learn to be more effective and persistent.
The following strategy is the result of personal experiments with techniques that I learned about from different books and online resources on memory, learning and cognition.