Learning Techniques for Programmers, by Programmers
- Under the Hood
- Different Levels of Understanding
- Focus Level
- Brain Washing
- Learning Techniques and Patterns
- Academic Learning
- Puzzle Learning
- Learning by Using
- Learning by Perseverance
- Learning by Teaching
- How Developers Learn
- Improving Learning
- Taking Notes
- Active Engagement
- Making Mistakes
- Stimulate Learning
- Where to Go From Here?
As a programmer, you know there’s a constant need to stay up-to-date with technologies you love, as well as the ones you don’t — you need to keep learning to stay relevant in your industry.
Learning is a key component of experience. And experience is a cornerstone of a rewarding, fulfilling career as a programmer. I live by the mantra experience comes with experience.
But learning can feel less like an adventure and more like an obligation, especially when there’s a struggle to retain information or the subject matter is dry.
Let’s face it: materials that cover the latest language or platform are rarely compelling page turners.
Sometimes it’s not about what you learn, but how you go about it. Learning as a busy professional is much different than it was when you were in school. You have less time for studies, and your brain works differently than it did back then.
Implementing and testing various learning techniques is one way developers can stay on top of the need to learn.
This article takes a look at different styles and theories about learning, and then it goes on to cover some common learning patterns and popular techniques. When you finish this article, you should have some fresh ideas about how to structure your learning processes.
While researching this article, we took a survey of the community to learn more about how people go about learning. I’ll give you a hint: a classroom setting is not a favored learning technique around here! Perhaps you’ll decide try out a new approach to learning once you’ve seen how your peers go about it.
Finally, I’ll leave you with some suggestions about how to stimulate learning.
It’s a long journey. 3, 2, 1, let’s go!
Disclaimer: This article is not the results of years of experience studying learning; I’m not an expert in this field. It’s simply the result of years of learning experience, which I’m sharing in the form of an article, decorated with some theory, statistics, and input provided by other developers like you.
Under the Hood
As mentioned, your learning path begins when you start life. Initially, you learn through unconscious learning: you take lessons from observations of the world and things happening around you — you do this for the rest of your life. It is the opposite of conscious learning, which is driven by the will or need to learn something.
Different Levels of Understanding
There are two different levels of understanding:
- Conceptual: When you understand how a particular thing works
- Practical: When you know how to use that particular thing
This classification is what differentiates knowledge from expertise.
You don’t always need both for every experience in your life. You might be a great car designer, but it doesn’t mean you must be good at fixing or even driving it. Similarly, you don’t need to be an expert in electronics to master your TV remote control.
However, there are clear benefits in knowing both. Have you ever murmured “oooh!” after finding a practical use for a theoretical concept? Or have you ever whispered “a-ha!” after realizing how something you use everyday actually works? Then you understand why it’s great to know both sides.
We have two types of memory:
- Working memory: A highly volatile and limited resource that you use consciously to store what you’re focusing on at the moment
- Long-term memory: Where you store all that you know and can recall.
Sounds a bit like RAM and storage, right?
Working memory comprises a number of “slots”, whose size and duration are highly subjective, but usually there are no more than seven slots. Some people forget bits of information in a matter of milliseconds (like me!), while others remember things for decades.
When you’re temporarily remembering a phone number, you’re utilizing your working memory:
- Conscious use: You must be focused on listening
- Volatility: You need to constantly repeat it until you write it down
- Limited resource: You can hardly remember a number that uses more than 3-4 slots.
You may be wondering why you use three or four slots for a phone number, since numbers are often nine to 10 digits long. That’s because we tend to group three or four numbers into a single “entity”. Think of your own phone number: do you know each digit one by one, or do you usually spell it in groups of 3 to 4 digits?
By using spaced repetition, you can move information from working to long-term memory. Repetition alone is not enough. You can spell out a number for hours, but you’ll probably forget it one or two days later. To fully commit it to memory, you repeat it a few times every day.
You don’t necessarily need to say the number aloud, but you do need to focus on it for the time your brain needs to “process” it — sort of like typing it into a keypad. For instance, when you generate a random password that you use frequently, it’ll commit to your long-term memory after a few weeks.
The phone number example is a typical case for chunking, which is a technique you can use to overcome the limitation of your working memory by using groups, patterns or semantics. It’s useful for far more than phone numbers.
Chunking by groups is when you split information into smaller parts, as is the natural tendency for remembering phone numbers.
Chunking by patterns is when you don’t remember the information itself; instead you remember an algorithm or a pattern that allows you to reconstruct the information.
For an example of pattern chunking, consider the sequence of letters “lkjhgfds”. It seems complicated to remember, but if you think of it as the last 8 letters in the middle row of a keyboard, in reverse order, then it’s easier to remember.
Semantic chunking is when information is organized according on its context. For example, given the words dog, yellow, banana, black, mouse, white, cake, egg, eagle, you can logically group them as follows:
- Animals: dog, mouse, eagle
- Colors: yellow, black, white
- Food: banana, cake, egg