I'm making my list of goals for the next year, as one does. I won't write my goals here because I don't like preemptively bragging about things I'll do this year, but lots of them involve learning or developing new skills.
This suggests a meta-goal to get better at learning and improving. I don't really know anything about learning besides "study real good", so to start out I read a review of the literature (say with a British accent: lit-trah-chu) on learning. Here are some things I learned about learning by reading Self-Regulated Learning: Beliefs, Techniques and Illusions.
Our brains are weird and gorgeous
My model for brains and memory was like a crappy hard drive: there is some space in your head, and when you learn stuff you shove that knowledge in to your head in a specific spot, filling up that space. When you remember stuff you pull it out of this storage space and impress everyone at the party with your scintillating analysis of Kim Jong Un's physiognomy that you actually stole from that Vice.com article.
This is untrue. Your brain is way cooler than a computer. It is more like planting a new plant in a forest than storing something on a hard drive. The more actively you work to learn something (testing yourself, teaching others, summarizing information, asking questions, making mistakes, etc), the better-rooted the plant will be, and the more likely you are to actually learn something and remember it later.
Like the surrounding environment affects the health of a plant, what you already know and believe affects how easily you learn new information. With a computer, a write to persistent storage either succeeds or fails, or you are building distributed systems and have surpassed the bounds of human understanding. With your brain, having more information to create connections to what you are learning makes that information stick better.
A mindblowing consequence of this is that our capacity to learn appears infinite. There is no such thing as "running out of space". In fact, learning appears to increase the ease of learning new information by providing more possible connections for your to-be-formed memories.
Brains are rad. Your brain is rad.
Learning happens from action
In college I spent many hours sitting in lectures or poring over textbooks. It turns out that passively receiving information is the worst way to learn. Many studies confirm that actively working with new information increases long-term memory. Summarizing new information, teaching others, testing yourself and asking questions are all waaaaaaaaay more effective than re-reading the textbook. Also, spacing out learning works better than long blocks, and switching up subjects works better than focusing on one topic for hours at a time.
Errors increase learning
I make a lot of mistakes. I made a bunch while writing this blog post! I have left some in as a puzzle for you to find.
Sometimes people are afraid of looking dumb while learning, so they avoid mistakes. It turns out all those vague feel-good TED talks are right. You do actually learn much better when you make mistakes as part of learning, and you learn worse when you try to avoid mistakes.
Because science is swell, there is experimental evidence demonstrating this. Here is one experiment. The task is to memorize a list of word pairs. Dolphin - mammal, Arby's® - heavenly, Jamison - sellout, etc. In one group, they are shown the word pairs for 13 seconds and told to study them. In the second group, they are shown the first word for eight seconds and told to think of a potential answer. Jamison - Schwarzenegger. Then they are shown the second word for five seconds. The group that had to guess the second word, even though they never guess it correctly, are MUCH better at remembering the word pairs.
Here is the money-quote:
[L]ong-term learning benefited when participants were asked questions that they could not answer prior to studying text materials.
Asking questions that you have no way of knowing the right answer, provided you then look up the right answer, greatly increases long-term memory.
What is that sound I hear? Toot toot toot it is me tooting my own horn. I wrote about my philosophy of making Fifty Thousand Mistakes earlier. Now it isn't just mushiness, but SCIENCE!
We are real real bad at knowing how we learn
Despite our brains being rad such that zombies would desire to eat them, they also have some pretty weird things going on that make us HORRIBLE at identifying how long it will take to learn things and how well we know them. We routinely overestimate competence (hello Dunning-Kruger), which leads us to be blindsided when we fail some test or can't recall things we thought we had learned. Hindsight bias means when we do learn, we assume that we already knew what we just learned. Sometimes we learn without even consciously realizing we learned something! This sounds like a recipe for being a know-it-all jerk-face. Stability bias means that we assume what we know now will stay static - we won't forget things we know now, and we won't learn new things or know things better in the future.
All these problems with self-assessment mean we sometimes do some really dumb things when trying to learn because we can't properly judge that they don't work well.
Programming and learning
This article is geared towards students. How does it apply if we aren't sitting in classrooms or cramming from textbooks? How does it apply to YOU, dear reader?
Learning is a skill separate from knowledge. Learning about software development is a discrete skill that can be developed. I try to learn frameworks or techniques or languages, but just like students can learn how to learn, I can learn how to learn to build software better.
Programming, with its emphasis on DOING things, is actually a pretty good
laboratory for learning. When someone wants to learn a language the canonical
answer is to find a toy project to use the language. You learn CSS things by
selling your soul to the devil building things
with CSS. The community's emphasis on blogging and speaking at meetups and
conferences to share knowledge means people summarize information and test
themselves. If you try to learn how to program better, you are guided down a
path that is reasonably effective. How neat!
Programming is a skill that can be developed, not a list of facts to memorize. There is a ton of research on practice and skill development, often focused on music or sports. The next stop on the metacognition journey is to read about skill development to see if that lit-truh-cha can be applied to software.