Learning is cool.
Learning how to learn is a super power.
Lets look at the lense of learning a new language:
At the most tactical level, we would be studying the language itself. Reading a children's book in the target language, or making and studying flashcards.
At a higher level, we would be considering how we can best study the language. Flash cards? Reading children's books in the foreign language? Passive or active learning? etc.
At an even more removed level, we could be thinking about how we choose our studying methods, and how we might try to differentiate which ones are the most effective for our goals. This means breaking down what exactly are our goals, and how we can measure our progress towards them, and how we can evaluate different methods and their efficiency.
We're going to unpack how to learn before getting into tactics.
Learning how to Learn
How do you determine when you've "learned" something? This isn't a trick question, I don't know the answer. There seems to be elements that we could all agree upon have to be present for something to have been "learned".
Some of those elements might be:
- The ability to know that you've encountered this thing before (familiarity)
- The ability to give an overview of the thing
- The ability to use the thing as part of another thing
Some "nice to haves" might be:
- the ability to describe the thing to a 5 year old
- The ability to recall the thing from a "blank slate"
Taking abstract ideas to concrete knowledge
Humans are visual. We can really easily manipulate (in our minds) concrete things. Cars, building, people, etc. All of these things we can easily imagine in a relationship to something else.
Quick test: Do people go inside of buildings, or do buildings go inside of people?
Duh. One of those makes perfect sense, one of those makes no sense.
Here's another test:
Do methods go inside of classes, or do classes go inside of methods?
Playing with Ruby for long enough, this is an obvious answer. Of COURSE methods go inside of classes, and classes cannot go inside of methods.
But this makes sense only because we've got a solid mental model of classes and methods.
How about something else:
Do global variables go in methods, or do methods go in global variables?
That's a bit harder. I'm positive that global variables cannot go in methods, but I don't know if you can/cannot call a method in a global variable. Maybe you can.
Here's another mental model question:
When a server requests a page from your ruby application, does it hit a view first, or your controller?
Depending on how comfortable you feel with the MVC model, this is easy or hard. But the goal here is to be building mental models, not just rote memorization. With a good mental model, you can manipulate abstract concepts as easily as you do concrete ones. this is our goal.
- Effective learning: Twenty rules of formulating knowledge
- Spaced repetition: Never forget vocabulary ever again
- Memorizing a programming language using spaced repetition software
- Mind for Numbers(book)
- Detailed summary of the above book
- JANKI METHOD: Using spaced repetition systems to learn and retain technical knowledge.