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?
For some, taking notes improves recall. To others, it’s processing and grouping information in notes that helps new knowledge to persist.
Whether to take notes is subjective: taking notes can definitely help, but it can also be distracting — it’s difficult to write and listen at the same time.
However, taking notes doesn’t necessarily mean taking them “live”. Kelvin Lau says:
“I do most of my learning through reading text, whether it be blogs or books. When I recognize that the book/blog is covering something that is particularly important to me, I take notes on pen and paper.
Taking notes has given me far greater retention on the stuff I’ve read. First, it drastically slows down my reading speed. I try to filter out unnecessary “fluff” from the text, and jot down important points. My goal is to summarize an entire paragraph into one or two points. This always engages me to think critically: What is that paragraph trying to explain?”.
Asking questions has two main benefits:
- Better understanding what’s being taught: Questions can help clarify an aspect, confirm an interpretation, or allow you to revisit to an unclear concept.
- Immediate processing of what’s being taught: Questions help you process the incoming information into smaller bites.
Nobody makes mistakes on purpose, but surely you’ve been told you should “learn from your mistakes”. We tend to hide our errors from others, but most mistakes aren’t that bad.
You learn a lot from the pain of a mistake. If you’ve ever walked into a glass door while tweeting, I’m pretty sure you will avoid that door next time you’re tweeting and walking. The more a mistake hurts, the more likely it is that you won’t repeat it.
It’s unfortunate that mistakes seem controversial and cause people to feel shame. After all, what is “test-driven development”, if it’s not a euphemism for learning from your mistakes?
I’m mentioning this again because even small acts of teaching can help a lot, such as answering questions on Stack Overflow. It’s a great way to expand your brain too, because often you get exposure to real, untrivial and unexpected problems.
I have only seen people do pair programming a few times, but I immediately realized that it has huge potential for learning. By talking it out, developers can filter out potential problems upfront. This defeats the common belief that pair programming is about two doing the work of one. It’s two brains working in synergy toward a common goal.
Matt Luedke believes that “Integrating a social aspect into learning, as opposed to it being purely an individual effort, has so many benefits: you’ll remember the concepts better, you’ll form relationships and teams, you’ll develop social skills, etc.”
And, definitely, it’s not anything remotely close to what Aaron Douglas thinks about himself: “If I had a second brain, I’d be twice as dumb”. :]
What can you do to improve your learning? Here are some ideas:
Participate in Hackathons: a fast-paced way of learning that’s driven by meeting a goal in a limited amount of time.
Prepare for Interviews: Even if you’re not looking for a job, preparing for an interview is a great way to learn. It helps refresh knowledge that you’ve probably forgotten.
There are several books that can help preparing for interviews. A popular one is Cracking the Coding Interview. I found it to be useful because I learned new stuff while refreshing other bits of knowledge I’d forgotten I had.
Experiment with Tasks: Push an established pattern or model to the limit. Use it as it’s never been used before. Use it for something that it’s not designed for. Find an alternative way of doing something that everybody does the same way. Be creative but define clear and achievable objectives — and be realistic. You don’t want to get yourself deep down a rabbit hole or squander company time in pursuit of a golden unicorn.
Challenges: Challenging a friend in person and participating in an online challenge have similar benefits. The challenge of “beating” somebody else has a learning component all its own. Besides serving as a gym for your brain, challenges are a fun way to learn. Make sure you keep the dynamic between you and your “rival” positive, supportive and healthy.
Where to Go From Here?
I highly recommend the Learning How to Learn course from Coursera. It’s very interesting and well done, and it inspired me while penning this article.
If you want to learn more about learning styles, a good starting point is this article on learning styles from Wikipedia, and a dedicated website called Learning Online Styles, which has tons of useful information.
A huge thanks to everyone who took the time to fill out the survey, which was an important part of the article. There are too many to thank individually, but I thank you all the same.
How do you prefer to learn? Are there strategies that I haven’t touched on in this article? Join the discussion below and let me know!