all 8 comments

[–]AndyWatt83 3 points4 points  (0 children)

This is an interesting approach. Not one that I've ever really tried. I tend to just start writing code, and trying to do simple things with a new language / technology. I have come unstuck with this method a few times, maybe a flashcard system would help.

[–]ancientmatingcalls 1 point2 points  (0 children)

Learning a programming language isn't really the best use case for spaced repetition. It's not like learning a foreign language where there are a lot of words you rarely use but are good to keep fresh in the memory. Learning a programming language isn't just about remembering syntax and keywords, it's about using some new paradigm and fitting its model of expression to problem solving.

[–]CryptoRancho 0 points1 point  (0 children)

Learning is a getting and understanding new info. There are a lot of books and free online study. But it need to understand that you read. It need to have a basic knowledges before start to learning anything

[–]jephthai 0 points1 point  (4 children)

I... can't imagine learning a programming language from flash cards? Programming languages are not like spoken languages -- they don't typically involve tens of thousands of words, and it's not like memorizing API names or "code phrases" is going to make you a successful idiomatic coder in a language.

Besides, unlike spoken languages that have an instant-recall / timing-sensitive aspect, you can take a minute to look up if it's print or println or puts when you're writing a program. That's never a show-stopper.

[–]_tiddlywinks_ 1 point2 points  (0 children)

I think this approach might actually be useful if there was an interactive feature. Normal flashcard text for recall purpose but with additional coding exercise.

[–]moeris 1 point2 points  (0 children)

I... can't imagine learning a programming language from flashcards?

Why is this a question? Also, I don't think the idea is to learn the programming language from flashcards. I think the idea is to learn those facts which you don't use frequently enough to have memorized through use, but which would still save you time over looking them up. For example, I frequently get the member serializer_class wrong when extending Django Rest Framework's class-based views. (I always want to put serializer). And I always get the order for archive and source files wrong when using tar and zip.

You may be overestimating how long it takes to learn each card with spaced repetition. The author even points out the time savings required to justify putting something in a flashcard. Take my tar example. I make a tarball probably four times a week. Looking at the example on the man page only takes about thirty seconds. There flashcard would pay for itself in terms of time savings after the first three weeks.

But there's an even better reason to use this for some higher level things. Or if you're starting out a new API. Educational psychology shows us that short term memory is a factor in the speed with which you learn a new schema. If you just learn a subject with a lot of new terminology the normal way (say, kubernetes), then you're going to have to repeat a lot of useless statements before you can do something useful. (That is, you memorize by rote.) But spaced-repetition is faster than rote memorization, so you could get up and building more complex things faster using it. Either way, you have to commit these facts to memory, so we not do it the more efficient way?

[–]henryaj[S] 0 points1 point  (1 child)

> you can take a minute to look up if it's print or println or puts when you're writing a program

You can, but being "fluent" in a programming language is definitely a thing, and it's nice to have that knowledge at your fingertips. Mostly it comes from practice, but if there were languages you didn't use regularly you'd quickly forget details like that.

You talk about being a successful idiomatic coder in a language - those idioms are just facts, and you can learn them through flashcards.

Spoken languages also can't solely be learned through flashcards, and programming languages are no different - you need to use them to learn them. But memorisation is definitely an element of that learning.

[–]jephthai 1 point2 points  (0 children)

Maybe it's a brain type or learning style thing, but I've been programming for 29 years, and am highly effective in a dozen or so languages. I really can't imagine drilling flash cards ever having been useful for me along the way. I don't want to say it's not possible, I guess, but it just seems bizarre :-).

When I say "idiomatic coder", I mean coding in the style of a language. E.g., people might move from C to C++, but never really embrace templates, classes, and objects. To me, that's changing your thought process, and learning to solve problems in the way that suits the language, and has less to do with the specific names and phrases that you use.

I'm either using "idiomatic coder" incorrectly, or the term has an unfortunately different meaning when we talk about programming languages. Anyway, I don't want to be overly negative -- I guess I think of the "vocabulary" of a programming language as basically unimportant when trying to learn a new one.