Spaced repetition turns reading into a physical activity with feedback. If you had an activity that required the knowledge you were hoping to acquire, you would learn at the same rate or faster by practice. Most lessons are encoded really poorly. I think spaced repetition is great, but practice at something is better.
A hacker is just someone who has practiced learning independently and has become exceptionally good at it. The reason people say you can't teach the hacker mindset is because without the underlying drive, there's nothing you can tell anyone. It's like when teachers who lament students don't care what they say so long as they get the right grade, it's because those students are optimizing for approval in a system because that's sufficent for their limited purposes. The more you profess to them, the more you reinforce that learning is passive submission to authority. If you want to make hackers, start with necessity, and technique will emerge as the artifact of navigating constraints. If you want to make people smart, challenge them instead of just telling them things. Hackers aren't defined by knowing more, they're defined by having physically done more. Spaced repetition as it's usually presented optimizes for outcomes in an approval environment that produces people who have been rewarded for cheating themselves out of knowledge and expereince.
I would say, want to learn physics? Build mechanisms or make radios. Number theory? Break cryptosystems. Astronomy and geometry? Sail at night. Lead? Ride horses. Fluid dynamics? Tune engines. Statistics? Write a spam filter. Speak a language? Tell their jokes, etc. Imo, most education is set around meaningless but scalable exercises of professed skills instead of meaningful exercises that are more powerful, but don't scale. We've optimized for scale at the expense of quality. It's the solution to an inferior problem.
So sure, learn spaced repetition, but really, find something and practice it for more joy and better results instead.
“One will weave the canvas; another will fell a tree by the light of his ax. Yet another will forge nails, and there will be others who observe the stars to learn how to navigate. And yet all will be as one. Building a boat isn’t about weaving canvas, forging nails, or reading the sky. It’s about giving a shared taste for the sea, by the light of which you will see nothing contradictory but rather a community of love.”
I've integrated spaced repetition quite effectively into my daily life and I've found that it's incredibly important to learn how to write good prompts.
The naive approach definitely leads to rote learning of factual trivia, but proper prompts can definitely foster curiosity and understanding. In fact it's often times the process of creating new prompts that reveal a gap in my understanding.
Of course it doesn't mean that practical experience is obsolete, quite the opposite. But spaced repetition works great in conjunction with practice. I'd go so far that it's more effective to do both, than just practical experience.
Hey, you sound like me! I’ve been using SuperMemo daily for more than a decade, and I’ve noticed something similar. Processing information and thinking in terms of “how do I make a flashcard that covers this fact?” has been helpful at both making flashcards but also just general understanding stuff. Taking notes in my Notes app in the form of questions and answers has been very useful.
I agree completely. Creating good cards, or thinking about how to cover a topic/fact with cards well forces you to break it down into very small pieces. Otherwise the cards get bulky, aren't precise enough and are generally annoying.
Breaking it down into such small bits makes it immediately obvious if I haven't understood something, because I either wouldn't understand the answer for one of my own cards, or wouldn't even know how to create an answer.
If done properly, it's much harder for something to "slip through the cracks" so to speak.
When I first started properly integrating this into my day to day life I also noticed that I was interested in remembering many more mundane things than I would've expected. Simple stuff that I really didn't have a place to write them down for, but that also weren't really important enough to take time out of my day to actively memorize it. There's a place for that now. It's been really interesting to see how broadly applicable spaced repetition is and that it's not just useful to learn for college exams.
Yes, exactly! I frequently notice during my day-to-day life, I will ask myself simple questions like “what is the state department?” and then I Google the question, read the answer, and create a question and answer pair in as simple language as possible and then store that in my notes app. I no longer feel embarrassed, but I’m actually excited to find these kinds of gaps in my knowledge. I also feel way less pressure to act like I understand something that I don’t out of fear of looking stupid. It has been such an overall net positive for my brain.
Reading this comment had me cheering “yes, a thousand times yes” but then it occurred to me how often I turn to an O’Reilly book instead of a concrete project and I wondered why.
I think I subconsciously avoid new projects to learn something programming-related because of how often they end up unbounded in time due to one of the fundamental attributes of writing software: unknown unknowns. The kinds of sticking points in a project that could take you minutes to figure out, or days, or even weeks.
I have limited free time and I want only so much of it to be _more_ programming. (I’m a professional software engineer) If I can’t be certain I can timebox a new pet project with _some_ degree of successful outcome, I think I’m low key anxious enough to avoid starting it.
Does anyone else struggle with this? How do folks overcome it and work on new things without them taking over?
I run into the same thing with projects of many kinds.
If I want to do something like move a light fixture in my house, it seems like it should be fairly straightforward. Choose where I want the new one to be. Create hole. Move wires. Connect fixture.
But it only seems that simple because I'm ignorant. I have to install a new junction box, which requires having a joist nearby, or adding a cross-support between two. Am I going to need to move any insulation? What insulation do I even have? Is the existing wiring long enough, or in the right place, or am I going to have to replace it? And I need to pin the wires down every so often? What? How? Where? Where do I even find that info? And never mind patching the hole I'm leaving behind. It's not just eyeballing a drywall patch. I can't match the old texture of the ceiling, even if I thought it was plain. My patch is really noticeable. And on and on.
Unknown unknowns take what I thought was going to be a little afternoon project and turn it into asking all my friends for recommendations of people who aren't booked 6 months out and are willing to handle a tiny little project cleaning up after my ignorance.
Taking on projects before I even know what I don't know has gotten me into more trouble than just about anything else.
I've never nearly burnt my house down taking notes from a book and hiring a professional to do the actual work!
Limit the degrees of freedom. If the goal is to learn a new programming language, pick an interesting problem that you’ve already solved (e.g. todo list manager, pomodoro timer, etc.). If you want to learn a new domain (e.g. networking), pick a familiar language. Choose boring tech for everything else—-things like deployment, monitoring, etc. If your goal is not learning k8s, just SCP stuff to a VPS. It can be crappy. Crappy is how you learn.
It’s like you’ve seen into my very soul. I often struggle to isolate individual problems within a new problem space because my brain prefers to see the interconnected web of what could be if I just did this thing right. Excellent advice.
For sure it's also good to practice things aswell, it doesn't have to be only one or the other. My understanding and experience is that if you do 95% practice & 5% spaced repetition you will be significantly better over the long-term than doing 100% practice.
This is a good way to think about the subject. Still, education at a higher level like uni is often good to get a sound understanding of a subject (more so than optimizing for grades).
Also learning a new (natural) language sometimes requires hammering words or gramatic rules into memory, and having a good teacher can be much faster than learning on your own by reading texts.
As a counter point to this, anecdotally though it may be, I've never seen anyone come out of a Comp Sci program (and I've seen a lot now) who was ready to go as an engineer (sound understanding as you put it) unless they had significant practical experience through projects of their own or internships.
In general:
A priori knowledge only gets you to the starting line. Experience carries the rest. And you can only get that experience by doing yourself, not second hand.
In the context of software development, sound understanding as you'd expect from a uni arguably includes CS concepts like algorithms and data structures. I find that there is a bit of a memorization aspect to simply knowing a lot of those and their properties, advantages,
... It seems like a pretty good application area for SRS to me, really wishing I'd heard about it sooner.
So much this. People learn so much better when that knowledge is functionally applied as part of a goal they want to achieve, and that also teaches people to be doers who can follow through with a project. Too bad it take more teacher skill and student freedom, and it's not good for producing factory drones.
Yeah. I've tried to learn a few programming languages without having a project and it just. doesn't. stick.
Ever.
Even reading a great O'Reilly book being sure to complete and understand the examples isn't enough. Without that immediate practical application, it's no more educational than any other form of entertainment, and much drier.
I totally agree with you here. It's personally my best type of learning. The only downside of this approach is the cost. It takes a lot of time compared to other types of learnings, including reading + spaced repetition explained in the article.
Do you have thoughts on the cost or how to optimize that type of learning?
This stuff could be picked up in internships and apprenticeships, though in a lot of cases the state of the art is quite far beyond that, so you'd need to join a hobbyist club to really get that sort of experience. Hacker/maker spaces often have outreach events, and builder fairs are good for reaching out as well.
A hacker is just someone who has practiced learning independently and has become exceptionally good at it. The reason people say you can't teach the hacker mindset is because without the underlying drive, there's nothing you can tell anyone. It's like when teachers who lament students don't care what they say so long as they get the right grade, it's because those students are optimizing for approval in a system because that's sufficent for their limited purposes. The more you profess to them, the more you reinforce that learning is passive submission to authority. If you want to make hackers, start with necessity, and technique will emerge as the artifact of navigating constraints. If you want to make people smart, challenge them instead of just telling them things. Hackers aren't defined by knowing more, they're defined by having physically done more. Spaced repetition as it's usually presented optimizes for outcomes in an approval environment that produces people who have been rewarded for cheating themselves out of knowledge and expereince.
I would say, want to learn physics? Build mechanisms or make radios. Number theory? Break cryptosystems. Astronomy and geometry? Sail at night. Lead? Ride horses. Fluid dynamics? Tune engines. Statistics? Write a spam filter. Speak a language? Tell their jokes, etc. Imo, most education is set around meaningless but scalable exercises of professed skills instead of meaningful exercises that are more powerful, but don't scale. We've optimized for scale at the expense of quality. It's the solution to an inferior problem.
So sure, learn spaced repetition, but really, find something and practice it for more joy and better results instead.