Live data from Hacker News

Memorizing a programming language using spaced repetition software (2013)

sivers.org

1–10 of 44 posts

Re: Memorizing a programming language using spaced repetition software (2013)

#2
Great post! Whenever I’ve gone down the path of trying to memorize stuff using spaced repetition or flash cards, it has rarely paid off. I’ve found that real practice works better for me. For example, I’ll create and run a vim macro command 10 times when I realize I’ve forgotten how to write macros. It’s like playing a musical instrument.

Re: Memorizing a programming language using spaced repetition software (2013)

#3
Is there a benefit to trying to actively memorize the syntax/semantics of a language rather than just looking it up when you need to know something, and then passively memorizing the parts you use often?

Also a huge component of memory is contextual cues, which is why people find it so hard to code on a whiteboard vs. being at their normal computer/keyboard.

Re: Memorizing a programming language using spaced repetition software (2013)

#4
I tried spaced repetition for a few months, but I found that I wasn't actually learning anything, I was only remembering facts. I'm not sure what I expected, but when I "learn" something, I grasp the "shape" of the concept...how it fits with other things...where its edges are...where parts of it are unexplored etc. This only comes to me by using the thing I'm trying to learn, not by injecting random facts into my memory.

If anyone has had similar experiences, I've found the best way to learn has been writing about things that I use, as I'm using them. The rule for writing in that way is only write what you've come to understand...don't just copy text that is "useful" from another source. Dive deep and learn the shape of the concept, then write about it in your own words, then move on.

By writing from your own perspective it has 2 effects: 1) it helps solidify the concepts a bit more, because you can only explain something once you've reached a certain level of comprehension. and 2) it serves as a "stack snapshot" of your mind when you had a handle on the concept, and re-reading that snapshot loads the context back into your mind very quickly.

Re: Memorizing a programming language using spaced repetition software (2013)

#5
If you're memorizing very specific information that's going to be presented to you in exactly the way you've memorized it, this is great. I am a little skeptical, however, about how well the specific information you've memorized generalizes to knowledge of the principles behind what you've memorized.

Taking one example from the article, if the front of the flashcard is:

  var a = 5 + '5';
  // what is a?
And the back is:

  '55'
  If either side of + is a string, the other is
  converted to a string before adding like strings.
I'm sure it would work great if in a real programming context you're ever presented with literally: 5 + '5'

But whether you'll remember the principle that "If either side of + is a string, the other is converted to a string before adding like strings" when you see, say 237 + "foo" is open to question.

Of course, in this highly simplistic case you probably would remember, as it's not difficult to memorize this principle even without the flashcards, but with more complicated examples I suspect it could be a real problem.

Re: Memorizing a programming language using spaced repetition software (2013)

#6
I have been using anki for almost ~3 years now to study Korean vocabulary, sentences, and Japanese kanji. I'm also a software engineer for my day job. I've also written about anki. [0]

I don't see the value in memorizing programming -syntax-. It's irrelevant to me to remember how to open a file in ruby or do a specific command- that's what search engines and then my personal wiki is for.

If I worked -only- in ruby, then I'd likely remember those specifics much more, but since I hop around with rust, python, c#, clojure ... depending on our clients, there's no way I'm going to remember stuff like that for every language. Especially since languages tend to get updates and changes!

I would use anki to retain knowledge of stuff like more complicated data structures. Right now, I just search for what I need, then toss it into my personal wiki folders. I can then use notational-fzf-vim to rapidly fuzzy search my markdown files. [0] I keep these synced across computers with a selfhosted nextcloud instance.

[0]: https://andrewzah.com/tags/anki

[1]: https://github.com/alok/notational-fzf-vim

Re: Memorizing a programming language using spaced repetition software (2013)

#7
post #3

Is there a benefit to trying to actively memorize the syntax/semantics of a language rather than just looking it up when you need to know something, and then passively memorizing the parts you use often? Also a huge component of memory is contextual cues, which is why people find it so hard to code on a whiteboard vs. being at their normal computer/keyboard.

Is there a benefit to trying to actively memorize the syntax/semantics of a language rather than just looking it up when you need to know something, and then passively memorizing the parts you use often?

This is akin to looking up words you don't know in a foreign language and hoping through repeated exposure that you learn the right words to use. It's very slow and frustrating. It is much more efficient to just know stuff off the top of your head.

Just because you look stuff up doesn't mean you efficiently memorize those things either. Reading had been proven to be a poor strategy for studying.

Also a huge component of memory is contextual cues, which is why people find it so hard to code on a whiteboard vs. being at their normal computer/keyboard.

Context clues can be embedded in flash cards as necessary.

Although it's also possible that you're associating arbitrary clues to your cards, which would be to your detriment. For example, an arbitrary part of the card trigger the answer, instead of an appropriate context.

It's why some academics recommend studying using different rooms so that the context for your answer don't become glued to that environment.

Re: Memorizing a programming language using spaced repetition software (2013)

#8
post #3

Is there a benefit to trying to actively memorize the syntax/semantics of a language rather than just looking it up when you need to know something, and then passively memorizing the parts you use often? Also a huge component of memory is contextual cues, which is why people find it so hard to code on a whiteboard vs. being at their normal computer/keyboard.

It kind of covers this in the article, but the theory is that by actively memorizing these things you become a better programmer because you have more tools at your disposal (and more knowledge about exactly how those tools work and what they are good for).

I'm sure all of us programmers have been in the situation of discovering a faster/better way to do something that we've been doing for years.

Re: Memorizing a programming language using spaced repetition software (2013)

#9

If you're memorizing very specific information that's going to be presented to you in exactly the way you've memorized it, this is great. I am a little skeptical, however, about how well the specific information you've memorized generalizes to knowledge of the principles behind what you've memorized. Taking one example from the article, if the front of the flashcard is: var a = 5 + '5'; // what is a? And the back is:…

If you're memorizing very specific information that's going to be presented to you in exactly the way you've memorized it, this is great. I am a little skeptical, however, about how well the specific information you've memorized generalizes to knowledge of the principles behind what you've memorized.

Difficulty in generalizing things is a common problem from learning. Unfortunately, from what I know from research, the best way to overcome this is through lot of examples, especially examples that seem contradictory.

Re: Memorizing a programming language using spaced repetition software (2013)

#10
post #4

I tried spaced repetition for a few months, but I found that I wasn't actually learning anything, I was only remembering facts. I'm not sure what I expected, but when I "learn" something, I grasp the "shape" of the concept...how it fits with other things...where its edges are...where parts of it are unexplored etc. This only comes to me by using the thing I'm trying to learn, not by injecting random facts into my mem…

I tried spaced repetition for a few months, but I found that I wasn't actually learning anything, I was only remembering facts. I'm not sure what I expected, but when I "learn" something, I grasp the "shape" of the concept...how it fits with other things...where its edges are...where parts of it are unexplored etc. This only comes to me by using the thing I'm trying to learn, not by injecting random facts into my memory.

One of the first rule of spaced repetition is that SRS is a system for retaining information, not learning.

Once you learn the information, then you use the SRS to retain the knowledge you built up.

Also, if you have trouble connecting individual facts into larger conceptual framework, you may not be making enough connecting notes to connect those facts.

By writing from your own perspective it has 2 effects: 1) it helps solidify the concepts a bit more, because you can only explain something once you've reached a certain level of comprehension. and 2) it serves as a "stack snapshot" of your mind when you had a handle on the concept, and re-reading that snapshot loads the context back into your mind very quickly.

Writing is what I do too. I have a note system that I devised that I looked up and revised all the time. It's part of my learning system, but I considered it secondary storage.

But beware of reading. It can make you feel like you understand something, but you really don't. Reading is considered a poor study strategy, since it mislead you into thinking you have fluency when you don't.

Post reply on HN