On memorizing piano pieces: I took several years of piano lessons. I once learned to play a piece from memory, only to forget the opening chord at the recital. I was completely stuck, so after a minute of trying I had to just apologize and sit down again. It was likely the most embarrassing experience of my childhood.
I learned the hard way that just playing the piece every day was enough for my "muscle memory" to know what to do. At some point, during practice, my hands would just play the piece correctly without any conscious thought or effort. But that was actually my downfall - my muscle memory could easily evaporate when I was in a different setting. And under pressure, my conscious brain discovered that it wasn't prepared to step in and help.
After that, my piano teacher helped me try some other techniques. The strategy that worked best for me was to both practice daily to engage my muscle memory, and also to consciously memorize the exact notes in several key measures (usually the opening of each section).
Another thing that might have helped would have been to practice the same piece on many different pianos, ideally with strangers in the room. When you play the same piece on the same piano, you're not only immersing yourself in a specific piece, but in a specific instrument/environment/social context. When you keep the piece the same but change the context, the memory risks falling apart.
Yeah, I forgot to mention, I actually tried that too! I at least visited one of my teacher's other students and tried performing on her piano.
It's harder for me to tell how much it helped, but I think it was useful, at least for my own confidence.
One challenge in understanding your own memory slips is determining their cause.
For piano performance, is it insufficient practice? Leaning too hard on muscle memory? Not playing on enough different pianos/environments? Playing in front of an audience? Or maybe you just had a bad day that day for some completely unrelated reason, like some other stressor prior to the recital?
There are lots of things you can do to avoid memory slips, and the more the better. But I think it's also good for people to be skeptical/open-minded about inferring cause and effect. Better just to do the virtuous actions and assume they'll all work together to give a benefit.
Is there a way to build broad knowledge for sight reading pieces, or is it merely a matter of sufficiently immersing oneself by just practicing?
To me, being competent at sight-reading comes from immersive practice. But sight-reading itself helps you build broad knowledge, because it gives you the ability to sample lots and lots of pieces of music - not just the sounds, but the physicality.
And uniting mind and body in sight reading is an excellent complement to just listening to other people's recordings as you explore the world of classical music. For example, let's say you were capable of stumbling through a Beethoven sonata at low speeds via sight-reading. You might be able to play (badly) 1-2 pages of the sonata in the time it would take you to listen to it.
One way to really get familiar with a wide swath of the classical music literature in, say, an hour a day, might be to listen to 2 sonatas (each ~15 minutes), and sight-read two other sonatas for ~15 minutes. Try to space out your listenings and your sight-readings of the same piece. For example, listen to them in order from first to last, but sight read them in reverse order so that most of the listenings/playthroughs are spaced out. This capitalizes on the spacing effect.
In this way, you would be able to expose yourself to all 32 Beethoven sonatas in a couple weeks. I bet you'd have a much better memory of how they go if you did the sight reading + listening combo, rather than doubling the amount of listening and doing no sight reading.
In the comments to TurnTrout's Lesson's I've Learned From Self-Teaching, adamzerner made this important point:
He then went on to give an example:
I can give another example from my own life. My bachelor's degree is in music, and I spent years studying music theory. My composition teacher asked us to memorize the music we were studying. It's very hard to memorize this by reading the score, but much easier if you just spend a lot of time playing it on the piano:
Whether we're learning about programming or piano performance, real-world projects usually require us to achieve project competence in a narrow range of skills. The project itself defines the skills we need.
Move to France to learn French, and you'll learn pretty quickly what words are most important to learn. Work on a programming project in a language with infix operators, and you'll understand the distinction between infix and prefix in no time. Spend three years driving around London if you want to become a cabbie. You'll learn how the notes in Chopin's Ballade go much more quickly by playing it than by trying to memorize it off Anki cards. If you want to get good at gel electrophoresis, you should probably do it about 1,000 times.
The only problem is that, from the point of view of basic conceptual understanding, you'll overinvest in the narrow set of skills that each of these projects requires. You'll get more practice in commonplace French words than you strictly need to memorize them, and not enough practice on more unusual vocabulary words. After a year, you'll be great at placing an order at a restaurant, but if they asked you to translate Baudelaire into English, you might struggle more than if you'd focused more on the flashcards.
Likewise, if you're programming every day in an infix programming language, you'll develop a fast, intuitive understanding of the difference between infix vs. prefix operators, and probably for several other concepts as well. The only problem is that you could have acquired 80% of that understanding in 20% of the time using flashcards and spaced repetition. So from the point of view of trying to gain maximum general knowledge with minimum effort, immersion is inefficient.
Working with flashcards reinforces general knowledge. This won't make you good enough to be competent at any specific project. But it will make you more able to transition between projects, acquire more advanced skills, and imagine technically advanced projects that you might not even conceive of otherwise. With spaced repetition and flashcards, you'll spend the minimum possible time to have an adequate memory of a huge number of concepts.
So the question of whether or not to use a spaced repetition system is really the question of whether or not to build a broad knowledge base. If you want to become extremely competent at the narrow skills required for a well-defined project, immerse yourself in the task. If instead you want to preserve a huge amount of general knowledge for those rare occasions when it proves to be unusually important, then flashcards and spaced repetition is your best friend.
Combined Requirements, Moving Targets, And Similar Projects With Different Demands
Many projects require a combination of general knowledge and technical competence, within some more-or-less defined domain. If you're working on a natural language processing program, you might get really good at regular expressions, building technical competence, but also need some general knowledge of a more substantial NLP library that you use occasionally. If you're a manager, you might need to immerse yourself in the personalities of your team members and superiors, but also need broad general knowledge of more remote teams and people at other companies whom you work with.
On some projects, including coursework, you might also face a moving target domain. If you're taking a chemistry class, you might be expected to be fairly fluent at a certain set of equations in time for exam 1, then never need them again until you need to once again be fluent at them in time for the comprehensive final.
It is therefore also valuable to distinguish the multiple purposes of your learning project, and optimize for them separately.
For example, you might be learning biochemistry both to pass a class and to build general knowledge for a future career as a tissue engineer. You can optimize for both.
To pass the class, you need to devote some study time to temporarily drilling the knowledge that's most valuable for the upcoming assignment or test. You're becoming a very temporary, very narrow "expert" in a handful of equations or concepts by immersing yourself in them.
To build general knowledge to prepare for a future career, you need to also devote study time to concepts that are from much earlier in the quarter, from previous classes, or even from classes that you haven't taken yet or might never take a full class on.
When you're focused on class-oriented study, it won't make sense from the perspective of preparing for your future career. Likewise, the best approach to prepare for a career, it won't make sense from the perspective of passing the class.