Ask HN: What's your learning strategy?
What's your strategy for retaining knowledge from lectures, papers, textbooks, talks, etc?
Specifically, 1) Do you take notes? 2) Do you compile/rewrite notes? 3) Does spaced repetition work for you? 4) Do you have a methodology for extracting common themes/patterns across topics?
Thanks!
90 comments
[ 3.1 ms ] story [ 235 ms ] thread- don't take rigorous notes because it ends up replicating a lot of the material that I'm consuming anyway
- still write some notes if something interesting stands out; it's usually related to some core idea/explanation, not to technical details
- don't obsess over having "complete" notes or worry too much about organizing them
- try to write some relevant code alongside whatever I'm learning
- spaced repetition is for memorization; I'm not trying to memorize
This is different from how I used to learn for exams at school/university where I would repeatedly re-synthesize notes to a shorter and shorter format until I can reproduce the material from a cue.
I think the distinction between the two modes is important; it seems very weird to me to see knowledge workers putting so much effort to memorize stuff that they can look up anyway.
Only if you use it as such. SRS is a scheduler to help you optimize your time, to not spend time on things you probably don't need to refresh. The actual memory/learning part is orthogonal.
I use SRS to plan different practices of things (in my case programming languages or concepts). If I consider that I did one of them well, I mark it as such and won't see it for a longer time, if not, I mark it badly and I'll see it again sooner.
I’m curious. If you would be willing to share, could you demonstrate an example of a prompt? My learning items have almost always been questions and answers, and occasionally image occlusion (‘label this part of the diagram’) and cloze deletion (‘fill in the blank’).
[0] https://www.supermemo.wiki/en/learning/spaced-repetition
For the tech things, the prompts are things like:
"Do an exercism.io exercise in <language>" where language is one of the programming languages I'm studying or want to keep "fresh"
"Write the basic 'counter' in React. With class compoments" or "... with functional components".
Things of that nature. Stuff I can get done in a half hour or less.
I thought I was the only one that did this.
I strongly agree. In the learning blogs (e.g. SuperMemo wiki) and forums I’ve read (r/Anki), there is a bias to solve every learning problem with space repetition (very roughly, flashcards on a computer program scheduled in an optimized way).
I’ve seen users try to make it work for math and physics, and though it may work for some users, the approach was ultimately a distraction in my experience, from doing lots of practice problems.
I think memory plays a key role in learning and especially recognizing opportunity to use something I've learned.
But remember that it's just a scheduling mechanism to save you time, not to help remember, necessarily. I like the Harry Lorayne book on memory for various tricks and techniques to actually remember. It's not groundbreaking but goes over a lot of the standard and proven memory hacks.
The best form of spaced repetition IMO is the application of the acquired knowledge in a big project over time. That way re-visiting the concepts comes naturally as you continue to develop something over time.
I copy/paste what I think are the "atoms" of the thing to learn. And i build a small graph of interconnected .md files in Obsidian.
To me, it is very important to break the medium that brings the information into a graph that suits you the most. (call that process my knowledge ETL, and the result .md files my personal knowledge graph :)
PS: the funny thing is that you indeed refactor your graph when you come back to it with more knowledge. You usually do not remove things, but reorganize it in a better way. Very interesting process...
Obsidian looks really cool - I'm doing a lot of projects in a very chaotic manner and have been wanting something for personal knowledge management, that graph / links thing is really cool.
I chuckled when you mentioned refactoring your graph being an interesting process - because I've done similar but with notes and folders no visual linking system just pretty much putting notes in the right folder/book/whatever I'm using - and it's a right pain in the ass compared to this way.
So my strategy is to work first and learn second. When I encounter a roadblock I try o learn something new, but in most cases I then quickly forget about it soon. This might happen several times over. Once I had to learn about unix file permissions, I knew all the commands and numbers and what they meant and it all made sense. But now I only remember `chmod +x` and that there is a command named `chown`. This satisfies for my day-to-day needs and is enough so that I can re-learn the thing if necessary.
And for the general context that are important to know in detail I found that teaching is a good way to remember and reinforce. I teach a course every year and every year I am surprised how much I've forgotten. But it quickly comes back after I start preparing materials for the class.
When I was young I used to think that you can learn a thing once and then remember. Now I know that, speaking strictly for myself, this is not the case.
When a child learns a new word, they may go around gratuitously using it for a while.
When you learn a new concept or technique, gratuitously apply it in every way you can think of. Having done that, you will be able to use it appropriately when the need arises.
For example, in music, if I learn or discover a new kind of chord substitution, I will gratuitously apply it to a bunch of chord progressions. Then I'm left (hopefully) able to apply it when that sound is what I want, or when it solves a voice leading problem.
This is a good habit. A technique I have been using in previous weeks is to initially do a superficial read (inspired by Mortimer Adler's "How to Read a Book"), not worrying if I understand every piece of information, highlighting along the way. The goal is to understand the overall structure and broad arguments of the text.
Since highlighting is ineffective for learning [0], these act as markers to focus on for creating flashcards as learning material upon a second, more in-depth read.
[0] Research paper [PDF]: https://pcl.sitehost.iu.edu/rgoldsto/courses/dunloskyimprovi...
In programming, examples would be:
• writing code and reading and understanding other people's code.
• `executing' some code with pen and paper
• translating a formal statement of an algorithm into code
• translating some code into a formal statement of the algorithm
• translating code between two languages
• implementing the same functionality in as many different ways as you can think of
In learning scales on a musical instrument:
• ascend, then descend
• descend, then ascend
• start/end on notes other than the root
• all of the above but whilst playing the scale in intervals or arpeggios
In learning the times tables, examples:
• what are the factors of 24?
• recite the multiples of 7 backwards from 70
"There are four key steps to the Feynman Technique:
"-Choose a concept you want to learn about
-Explain it to a 12 year old
-Reflect, Refine, and Simplify
-Organize and Review"
[0] https://fs.blog/feynman-technique/
When you start something new, all the symbols are "too close together" and it takes time and repetition to increase the "resolution" on that map so that you can put the symbols into position with more precision and not have them confused with one another. You don't yet have a good intuition for the significance of each symbol and it won't come from being told, because sources have biases - frequency over time and space is a much stronger signal. It's the same with connections between symbols.
Doing, rather than just reading, is important; you need to try and find that Goldilocks zone of growth, where if things are easier you're not learning but if they're harder you lose hope. Try something just beyond what you know how to do, page in new information on demand when you get stuck (from docs, people, source code, whatever it is).
Writing notes helps me personally creating the space for symbols and reminding myself of what I already heard about but I don't know that it's necessary for everyone, and I especially think I've found it more useful as I've gotten older (and know more stuff already). Sometimes when I learn something "new", I pin it close to a concept I already know, which dulls its novelty and I'm probably more inclined to forget it, until I'm reminded of it again. And this is down to that "creating mental space" idea again.
Repetition increases symbol salience, particularly when you're surprised by the divergence between what you thought something meant and what it actually means. The risk of simply reading, and not doing, is that you're not surprised often enough. Doing stuff keeps you honest.
That might be how you learn, which is a good thing to know, but the presentation of your personal understanding of yourself come off like “this is the way for all”, which gives me the yucks.
For me I need to re-formulate things in my own words (or my own code) until I understand which parts of a system I have blind spots on, then dig into those, then rinse and repeat.
If I can express it in simple language in a way that hangs together, and go into detail about complicated parts of the system, I’m getting somewhere.
The downside of learning a system of human invention fundamentally is that one invariably comes to understand that it is a Rube Goldberg machine that some yahoos figured out how to sell.
Not sure why you assume OP is speaking about his own personal experience?
I am unsure what OP background is, but I will assume he knows what he is taking about.
there are theories of the mind that actually supports this view.
It goes back to early attempts at AI [0], and different perspectives on this also caused a split amongst researchers.
> If I can express it in simple language in a way that hangs together, and go into detail about complicated parts of the system, I’m getting somewhere.
What you have said does not actually contradict what OP has, but rather could be used to support what he said.
Yet it seems you believe it contradicts him?
https://en.m.wikipedia.org/wiki/Physical_symbol_system
The summary is that doing practice tests (e.g. creating flashcards in a question-and-answer format, or regularly doing practice problems) is highly effective, along with studying over a longer period of time instead of cramming. Switching between learning subjects ("interleaved practice") is also effective, along with creating explanations in your own words about a text, together with asking yourself questions about the text. In contrast, highlighting the text and rereading as a way to learn is relatively ineffective.
[0] Full text [PDF]: https://pcl.sitehost.iu.edu/rgoldsto/courses/dunloskyimprovi...
Somehow I failed to learn things when I was taught in "official ways", yet I managed to learn the language by being brutally forced into practice and environment that pushed me to make it happen. I moved countries when I was 12, they put me in school straight away without knowing how to speak (although I have been studying for a few weeks, at least the basic grammar).
The language group has been similar to my native tongue, however the alphabet was different (as I was used to cyrilic). Nonetheless, as a kid - I already saw some patterns and similar rules.
I managed not to fail my class as well as spoke and wrote really well after 2.5 years. After 5 years I was better than most of the native tongue speakers in terms of grammar and on par with their vocabulary. Obviously using the language every day and being pressed to do so contributed.
Years later I started learning German in high-school... was so bad it and never managed to even get to the basic level after 4 years. I moved to Berlin again years later but because English was already quite prevalent, it never pressed me to learn German and I never did.
Somehow the most effective learning curve was just doing the thing, making a lot of mistakes and I never took textbooks into account even when doing so.
The methodology was just deliberate practice and tacit knowledge in the end.
I went through a bad patch as the nineties ended and I thought that computer note taking might be a good idea. It produced pretty good notes (I type well) but was much less conducive to learning. In fact, I felt it was distracting and counter-productive.
Handwritten notes. Definitely my first line of offense against ignorance.
After that, teaching it. If I can find an opportunity to make a presentation. That's great. I will always confirm understanding and level up when I explain what I know in a semi-formal way. Explaining to colleagues and friends is good. I didn't do study groups in college but found analogous social activities very helpful since.
After that, doing it. If it's a practical topic, putting the lessons into practice asap is very helpful. Like, I'm sure, many of you, I am a programmer. If I start using a new tool, technique or idea, I will soon have solid understanding.
Of course, I also keep going. If I do not keep seeking progress in a topic domain, then any knowledge I have will fade.
I only integrate one or two practices at a time, and I stopped short of implementing SRS or a Zettelkasten because I began to realize I was spending too much time on productivity to actually get anything done. I'll probably return to them later - I think SRS especially gets a bad rap from people who like to think about things conceptually as "just being rote memorization", but IMO the human brain is not a computer for Platonic objects. It thrives on hard data and real-world examples, and "memorizing" components or instances of a particular concept so they're at hand for effortless retrieval just makes connecting them to existing ideas easier (which is arguably all understanding things is).
[0] https://pastebin.com/sk6iNDpp
This will make you look like a „genius“ to outsiders, but it only works on subjects that allow for short feedback loops.
(example where it works: coding, example where it wouldn‘t work: raising a child)
[1] https://www.amazon.com/Mind-Over-Machine-Hubert-Dreyfus/dp/0...
Say somebody says a long string "The Cap Theorem is Consistency, Availability, and Partitioning," you write down the initial letters with space to come back and complete the words: T__ c_____ t_____ i_ c_______ a______ p_____. Once you have the initial letters down the hardest part is done. For very long sentences you want to remember this helps a great deal because you will still remember the last several words with the hint of the first letter when you do a second pass to fill the (rest of-the-word) in.
2) n/a
3) yes, sort of. Learning something an hour per day over 10 days > learning something for 10 straight hours in one day
4) no method, but I tend to naturally go just below the surface on many different topics, so I think that helps.
A key thing for me is that I learn best by doing.
So maybe watching 5-10 hours of a structured "course", usually at 1.5x speed is about my limit before I have to get started on my own project applying what I'm learning.
After that, it's mostly blog posts, GitHub, and Stack Overflow to learn the more advanced aspects.
The idea is you consume and apply, then quickly turn a combination of theory + practice into your own words which is proving to yourself that you understand it. The key point there is "you", you don't need to publish the written component to anyone. Its purpose is to force you to come up with unique thoughts to combine this new information into something coherent which I'm sure has some benefit in making your brain remember it (but I have no scientific proof of this). It can also be used as a personalized detailed reference in case you ever forget the details which IMO is much better than scattered notes you tried to quickly write while you listened to or read something.
I don't know if this is a formal way of learning something. It's something I've done for most of my life because it felt intuitive at the time and still does.
In tech this can be an obstacle when communicating because many engineers have an extremely fine-grained memory, seemingly all the time. I will hand wave different concepts as a black box that we don't need to know right now, where they are happy to explain them at length, in detail. But if it's not relevant, I just don't care. They will also expect me to explain concepts that (to me) aren't relevant to the problem, and I have to say "I don't remember."
You're a mapper, like me. The only reason I ever want to learn details is if they are important corner cases.
>In tech this can be an obstacle when communicating because many engineers have an extremely fine-grained memory, seemingly all the time.
Those folks are packers, they know all the corner cases, and worry incessantly about them.
Google "mappers vs packers" to learn more, far more.
[0]: http://programmersstone.com
This leads to then what I consider "foundational knowledge", or refining your understanding on Bloom's Remember, Understand, and Apply categories. I think we try too hard to push students toward the Analyze, Evaluate, and Create categories too quickly, which results in poorer performance, especially in the classroom context where the next course assumes "mastery" (another term I dislike, I prefer proficient). Once a student is proficient, then we can talk theory all day.
So, in my classrooms, I mirror the methodology I commonly see in martial arts - warm-up, demonstrate technique, drill the technique, and (depending on the art) spar, or apply the technique. If you are struggling at one of these steps, then we can identify the issues and provide intervention practice at the appropriate level. Traditional classrooms don't really allow for extended spaced repetition, but I do believe it helps form autonomy.
More specific to your question since most of the above is just my general opinions on learning:
- Notes are good and writing notes is better than copy-pasting them [1]
- Highlighting your notes for important details is a lower level practice that is also beneficial [2]
- If you are given a technique/algorithm, attempt to do it on additional practice problems. If you can, through spaced repetition. For example, if you were learning the A* Search algorithm, change the starting and goal nodes in your current examples or make a new one with randomized numbers.
- Chi's ICAP Framework has a few additional points as well on which lower level practices are better than others [3]. However, as I'm arguing in my dissertation, better overall may not be better for the individual. If a student is struggling in a Constructive activity, I'm arguing it may be better to 'downgrade' them to a lower-level activity to reinforce understanding (again, my thoughts toward foundational knowledge).
[1] https://dl.acm.org/doi/pdf/10.1145/1240624.1240773
[2] https://www.sciencedirect.com/science/article/abs/pii/036147...
[3] https://files.eric.ed.gov/fulltext/EJ1044018.pdf
This is a great view. To add to this from a learner's perspective, though I'm not a professional educator (thanks for sharing your perspective as one): I've found that the ideas about worrying about "perfect practice" to be intimidating, especially as I've struggled with a 'perfectionist' tendency that causes procrastination and hesitation to attempt any practice at all.
People are wary of learning something wrong, then having to re-learn it, but I think that's a far better problem than delaying or avoiding learning something at all (with quality instruction, it's unlikely one can practice too far from the ideal; and even if that happens, it's not the end of the world. When attempting to learn, I try to remember the following quote from a webpage shared on HN a while back [0]: "Stay calm. Remember, you can’t become worse off than when you started."
[0] https://devjac.dev/posts/2021-05-29-my-personal-creed-of-emp...
Yup! I refer to this an "analysis paralysis" (a lot of my terms I'm stealing from martial arts). In essence, I freak out trying to fix my car because there are so many parts and I don't want to get it wrong, so I just... "don't". This is why we pay professionals the big bucks, but from a learning perspective, I think its what causes many people to abandon attempting something. They are scared to mess up, end up messing up, and leave due to feeling like a failure.
If, on the other hand, you can have an environment that supports experimentation and failure, and provides feedback on that failure, there will be less chance for abandoning the skill. This can be orchestrated through a combination of practice and a positive social network within the skill (peer mentors, growth mindset instructors, etc.). While persistence/perseverance/grit is still being researched, I think the social aspect can help strengthen it as well because you have a vested interest in succeeding and helping peers succeed.
"Sucking at something is the first step to becoming sorta good at something" ~Jake the Dog