Hacker News new | past | comments | ask | show | jobs | submit login

Spaced repetition is good for pure memorisation but I'm not so convinced it is an effective or even helpful way of learning programming --- it seems it would just make you fixate on syntax and not truly understand things.



I agree it's not a good way of learning programming. To me it's a way of retaining some programming knowledge - but to retain something you need to understand it beforehand. It doesn't make sense to use this type of thing for things you don't understand in the first place.

One way I like to think about it is as a continuum - there are certain things you use everyday and thus in a sense over learn. Then there are things you only use once or twice in your life, such as a specific configuration you have to do. Code Cards is for the things in the middle, the things you only use every now and then but keep forgetting and having to google over and over again.

In terms of using it as an aid for people learning programming, I think if you spend 4 hours a day effectively coding, then spending 5-10% of that time reinforcing some of the things you've learned during the day is not a bad use of your time.


Lately I've been finding it more efficient to just offload a lot of that to search queries and reference sites (i.e. StackExchange, MDN, DevDocs).

Rather than trying to remember how to do a hundred trivial tasks correctly I focus on the task at hand and keep the reference document up on the other page.

I find it more valuable to have up to date and practiced referencing skills than to memorize a few hundred utility functions.

As an added bonus there's an intrinsic passive search for new techniques and depreciated methods.


I think it useful when learning a new language or framework. When you are completely new you can spend 90% of the time just searching for trivial answers. It also takes longer to search because you don't know really how to frame the question. I find it more useful to go quickly go through a book or online course and try to memorize some of the basics from the book before starting. Not reviewing earlier topics results in very little retention.


Yeah, exactly. I also use this for Math–there are many concepts from Statistics that I end up using a couple times a year, and which are most helpful if I remember most of the details when I need them.


> To me it's a way of retaining some programming knowledge - but to retain something you need to understand it beforehand

A critical factor here, though, is that it's very clear from the spaced repetition/testing literature that the way you learn beforehand affects retention. (e.g. Karpicke and Roediger 2008).


Yes – Piotr Wozniak (creator of SuperMemo and one of the pioneers of spaced learning) designed the system as a way to retain knowledge you've already ingested and understood.

Rule 1 and 2 from https://www.supermemo.com/en/articles/20rules are these:

> 1. Do not learn if you do not understand

> 2. Learn before you memorize

I use Anki to retain programming snippets and gotchas in the same way that Derek Sivers describes here:

https://sivers.org/srs

This article cited there is well worth reading too, as it's specific to programming:

https://www.oxbridgenotes.com/articles/janki_method_refined


I think it strongly depends on how spaced repetition is being done. Spaced repetition of content isn't useful (simply viewing), but spaced testing is [1]. Also, a test might be just testing syntax (could only know answer via docs), or more syntax+conceptual (e.g. would know answer if you understood the concept of a pipe in x language).

A big benefit of testing concepts is that people often overestimate how well they've learned something, so someone may think they have the concept down and that testing is unnecessary, which makes seeing spaced tests is a sort of long-term memory reality check.

[1]: http://learninglab.psych.purdue.edu/downloads/2008_Karpicke_...


I attempted to study for a programming certification using Anki.

In the end, I determined that I learned a lot more from making the cards than I did from studying them.

So yeah, it was a win... But hardly the way I expected.


> I learned a lot more from making the cards than I did from studying them

I found the same thing. The discipline of boiling things down into their essentials really forced me to pay attention and really thinking about the reading material.


Might be useful for some APIs and libraries. At the point you are dealing with those, you already know how to program and understand the language's syntax.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: