I see spaced repetition tools like Anki and clones on the front page HN every month but in the tech world, I've never needed to rote memorize items that would require it. The challenge is understanding a new confusing topic rather than memorization.
Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.
>Do you prefer to learn from books, articles or videos?
All the above because they have different strengths.
- books: good for more foundational information (theory) but will be out-of-date on software tools and cutting edge info (e.g. latest machine learning developments). When using books to learn a subject, I always read 2 or more in parallel to get different authors explanations. Many times, one author will explain a topic in a better way than the other. A huge problem with books (and book publishing in general for all domains) is the avoidance to criticize or find faults in ideas. E.g. a Java book will not "point out all the problems with Java". To fill in that knowledge gap, you have to supplement with blogs/videos.
- articles/blogs: more up-to-date info on tools usage. Also because web articles have less "unspoken etiquette" about omitting criticism, you have a higher chance of reading about the negatives and drawbacks of whatever topic you're learning.
- videos: good for visual explanation of tools usage. E.g. Tutorials on IDEs.
So an example application of the above roadmap for me learning Javascript:
- book: O'Reilly book "Javascript in a Nutshell"
- video: watch a bunch of videos for learning F12 Google Chrome Dev Tools to inspect Javascript
- articles: learn what the new Javascript runtime Deno is about because books won't cover that topic.
Like many other tech topics including Javascript, I didn't have a need for spaced repetition techniques.
> Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.
I'll give a few examples of cards that I have.
> Why is the time complexity of Java's List#subList constant?
> Why are OOM errors common in Spark?
> What does EXPLAIN do in Postgres?
> How do you run a command on the command line in Vim?
> How are map entries in HBase/BigTable sorted?
> Why are HBase column families difficult to modify?
> When should you use a JtaTransactionManager?
> What makes read-your-writes consistency difficult?
Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.
That's the easiest and most known use case of anki, but hardly the only things suitable.
In any case, memorization is always made easier if you understand a concept, and yes you can ask conceptual questions in anki.
For example of a conceptual question: Q: What is the purpose of an aileron? A: To control the roll of an aircraft.
Then you ask the question: Q: The roll of an airplane is on what axis? A: longitudinal axis.
Or maybe this prompt? Q: What component controls the roll of an aircraft? A: The aileron.
Then you can continue to ask question like what forces limit the speed of an airplane, or what makes it fall, or what control surface do you need to use if you want to increase elevation of an airplane, and so forth.
I'm going to agree with @dempedempe , and throw out examples of questions (not company-specific) that I've added in the last week:
> The git command that returns the .git directory that's controlling the directory you're in is git rev-parse --absolute-git-dir .
> In Scala, you have an array, a. What's the best way to turn a into a String? a.mkString(" ")
> In HTML, how do you tell an li tag to start at 3? <li value="3">
> In Scala, how do you do exponentiation? Use scala.math.pow(). Do not use Math.pow().
> In Scala, you have a variable "val l: List[SNid]". How do you convert l to a ListBuffer[SNid]? "l.to[ListBuffer]". Note that it's not "l.to[ListBuffer[SNid]]" or "l.asInstanceOf[ListBuffer[SNid]]"
> In multiple linear regression, is it better to have a large or a small RSE? A small RSE is better. RSE is the Reducible Standard Error.
These questions came from things I got wrong in the last week.
> Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.
The only case I can really think of is learning the useful shortcuts for your IDEs, especially if you're switching between multiple IDEs for multiple languages. But even then I would rather just note them down and look them up when I need them. I tried Anki to learn emacs shortcuts and it's just such a slug. I don't want to spend time daily to maintain a mental database of senseless shortcuts.
I see spaced repetition tools like Anki and clones on the front page HN every month but in the tech world, I've never needed to rote memorize items that would require it. The challenge is understanding a new confusing topic rather than memorization.
Yes, if you're learning arbitrary lists of items such foreign language vocabulary, or a medical student memorizing the Latin naming for all the various bones of a human body then spaced repetition is what to use. I've just never had an analogous situation in programming.
>Do you prefer to learn from books, articles or videos?
All the above because they have different strengths.
- books: good for more foundational information (theory) but will be out-of-date on software tools and cutting edge info (e.g. latest machine learning developments). When using books to learn a subject, I always read 2 or more in parallel to get different authors explanations. Many times, one author will explain a topic in a better way than the other. A huge problem with books (and book publishing in general for all domains) is the avoidance to criticize or find faults in ideas. E.g. a Java book will not "point out all the problems with Java". To fill in that knowledge gap, you have to supplement with blogs/videos.
- articles/blogs: more up-to-date info on tools usage. Also because web articles have less "unspoken etiquette" about omitting criticism, you have a higher chance of reading about the negatives and drawbacks of whatever topic you're learning.
- videos: good for visual explanation of tools usage. E.g. Tutorials on IDEs.
So an example application of the above roadmap for me learning Javascript:
- book: O'Reilly book "Javascript in a Nutshell"
- video: watch a bunch of videos for learning F12 Google Chrome Dev Tools to inspect Javascript
- articles: learn what the new Javascript runtime Deno is about because books won't cover that topic.
Like many other tech topics including Javascript, I didn't have a need for spaced repetition techniques.