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

Anki is a shortcut to muscle memory. Learning-by-doing is great, but inefficient. And when you stop, you forget. Anki cards space themselves out based on your responses, so there's almost no cost to maintain memory.

Part of how I got the job I got (an amazing dream job) is because the interviewers were flabbergasted seeing me live-code flawless idiomatic code like it was the back of my hand. Difficult to achieve that without SOME sort of systematic study. Most master pianists don't get there by just doing lots of casual play.

I should also mention, one of my main language is kdb+/q. Try mastering THAT without flashcards ;)




Im really curious.

Could you explain in some detail how this works out in practice ? For example with someone learning JavaScript or Python ?


How I learned ES6: I have a 1 hour commute each way. When I was learning ES6, I spent roughly half my commute creating Anki cards and half my commute studying those cards.

I created cards by going through this excellent free online book (I skipped chapters I wasn't interested in): http://exploringjs.com/es6/index.html

The process of creating cards: (A) read a paragraph. (B) make flashcards for everything new introduced in that paragraph. (C) goto A.

As for B, I would take great pains to make the cards as terse as possible while still drilling the concepts. Over-verbose examples should be rewritten more tersely (and tested in the browser to make sure you didn't screw up).

For example, from the first paragraph of Section 4.1 I might make this card, among others:

(Front) Evaluate:

var x = 0;

function f(){ if(false) {var x;} return x; }

f()

(Back of card) undefined

(Notice how I distilled the much-more-verbose examples from that paragraph down to a core that illustrates the key point.)

If you're serious about this, it'll take a lot of time. I used it to crash-learn basic kdb in about 1 month, but that required spending ~4 hours/day that whole time. Making cards is a skill in itself, you'll get better at it over time (a lot of my early cards are way too verbose and sometimes I'll rewrite them now that I've gotten better at making terse cards)


Wait a second. This is not how programming works at all. Flashcards are for memorization. If you need to memorize the answer to your "var x=0;..." example, that means that you have not understood how your programming language works. This sounds like a horrible idea. What happens if I change the variable names? Would you still know the answer? You can memorize as long and as perfectly as you want; if you struggle with such basic understanding of the programming language, I will not let you touch any of my software products.

I cannot believe that you are following such a strange approach to learning programming. In fact, I believe that you are using Anki for something completely different than what you are claiming here. You are not making flashcards and you are not memorizing the answers. You are making quizzes and you are using Anki to check whether you are able to solve them. At least, that's what I hope.


> You are not making flashcards and you are not memorizing the answers. You are making quizzes and you are using Anki to check whether you are able to solve them. At least, that's what I hope.

I think you have this weird idea that flash cards are only good for memorizing the things written on them.

That's a really limiting, and false, idea.

A flash card is just a pairing of a specific question with a specific answer. How you use that simple framework is up to you.

I used them for trig identities. That was straight memorization.

I also used them for proofs. As in 'Prove every edge in G^k is a walk of length k in G'. Then I'd work through the proof, and check my answer against the one on the other side. That's not memorization.

It's still flashcards though.


I don't see it in such a bad light; a correctly targeted quiz that effectively targets one unique concept, is asking you to use that concept, and for that you need to remember it. It is testing another dimension of how you learnt that concept. Although I agree it is not the most efficient way of learning to program, it sure seems like a good way of not forgetting corner cases of the language...


> Flashcards are for memorization.

But in your own post you point out that flashcards can be used for quizzes as well?




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

Search: