Before starting a study plan, you should be ready to learn. In fact we often overlook such fundamental aspect.
Learning is itself a kind of science and if we know how to learn, we can optimize results which means getting more in less time.
When learning, there are times in which you are focused and times in which you allow your mind to wander. This unfocused, or diffused, mode is just as valuable as the focused mode in allowing your brain to LEARN something. So — take breaks, meditate, think about other things, and give yourself plenty of time in both modes.
One way of making sure you’re taking regular breaks is to follow the Pomodoro technique. This is where you program for 25 minutes, then take a break for 5 minutes. The work and break time lengths can vary based on what works best for you. The important part is that you have a regular break. There are several applications out there that help you setup a Pomodoro timer. I use Pomodoro Time.
Chunking is is the idea of breaking what you want to learn into concepts. The goal is to learn each concept in a way that they each become like a well-known puzzle piece. In order to master a concept, you not only need to know it but also to know how it fits into the bigger picture.
Dr. Oakley suggested a great step-by-step process to approach learning something. First, survey and priming — this involves scanning a book or the syllabus of a course, for example, to get a general idea of the bigger picture. Second, observe an example. Then, do it yourself. And, finally, do it again and again in different contexts.
So — let’s say I was trying to learn React and I was lucky enough to find Tyler McGinnis’s awesome React.js Program course. To apply this suggested process, I would first look over all the units in the course to try to get a general gist of the topics covered. Then, I would follow along closely as Tyler builds an example application. After that, I would build my own application. And finally, I’d apply those learnings into the new features we are developing in React at my job.
You should always be aware of the illusion of being competent. In fact, there are many ways in which we can make ourselves feel like we have “learned” a concept. For example, looking at a solution and thinking that you know how to arrive at that solution is one of the most common illusions of competence in learning. Highlighting or underlining are also techniques that often lead to this illusion of learning. On the other hand, brief notes that summarize keys concepts are much more effective.
Dr. Oakley points to Dr. Jeff Karpicke’s research about retrieval practice to provide scientific support behind taking a couple minutes to summarize or recall material you are trying to learn. It goes a long way to taking something from short-term memory to long-term learning. Even recalling material in different physical environments can help you grasp the material independent of any physical cues that your brain may have.
In order to avoid or break through illusions of competence, you should test yourself as you’re encountering new material. Recall is a simple example of this mini-testing.
It’s not important that you pass these tests without making any mistakes. Mistakes (and correcting those mistakes) are an important step towards solidifying your learning.
Don’t spend too much time in one sitting going over the same material over and over again. The law of diminishing returns certainly applies. Spread it out over many sessions and over many different modes of learning.
Once you have a basic understanding of what you are trying to learn, interleaving can be used to help you master the concepts. By practicing jumping back and forth between problems that require different techniques, you can solidify your understanding of the concepts by learning how to choose to apply them in various situations. Know when to apply a particular concept is as important as knowing how.
I haven’t deliberately applied this technique yet but, going back to the earlier example of learning React, I can apply the interleaving technique by having 2 different projects in which I am applying React and Flux architecture.
When facing procrastination, think of process over product. I often procrastinate when I’m overwhelmed by the thought, “Ok, I have to get X done”. Instead, it can be beneficial to think, “Ok, I will spend an hour on X” — which isn’t overwhelming, doesn’t require a long breakdown of tasks, and gets me started (90% of the battle).
Metaphors and analogies are often talked about as helpful study techniques. Personally, I never made much use of them. But, as I’ve met more people and more teachers/mentors, I’ve found that the best ones always use these as they communicate. And being able to communicate what you’ve learned is one of the main skills that differentiates a good developer from a great one. So, try to make a deliberate effort to teach what you learn to someone else and, in doing so, you will likely be forced to explain concepts with relatable metaphors and analogies.
There are several opportunities in the daily practice of software development to teach and learn from others. You can pair program, comment on pull requests, sign up to give a code talk about a particular topic, and blog! Do all of these things. I know I’m trying to.
No matter what or where you are learning, you don’t have to learn alone. In fact, it is the uniqueness of the people with which you learn and the discussions you have together that make what you learn unforgettable. MOOCs give the opportunity to join a huge community of learners that want to share their ideas with you.