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.
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.
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.
This Article from Andy Matuschak is a very thorough introduction to the art of prompt writing: https://andymatuschak.org/prompts/
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.
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.
Do you have thoughts on the cost or how to optimize that type of learning?
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.
— Antoine de Saint-Exupéry, Citadelle, 1948
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?
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!
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.