Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

At the last programming job I was fired from, I was deemed to be a slow and all around poor performer. About a year ago, I started doing my own version of Jack Kinsella's Janki method. As a result, I've leveled up to what some call a "full stack" web engineer.

SRS is a fun way to learn or else I wouldn't have kept at it so long. I would even go as far as saying it's made my personal projects a little bit easier for me to execute on. However.....

What I don't know is how applicable this is in the "real world". SRS systems don't translate well in the "Learn-in-5-days-or-die" approaches to IT training. As for benefits for work-related development and maintenance, I don't have a clue one way or the other.



I'm surprised that memory or memorization would be the key (for some people? for yourself?) to learn a programming language.

I've studied a number of different subjects in my life, from foreign languages to computer science to math, etc. I clearly see the benefit of SRS and necessity of memorization in foreign languages (vocab is so critical, and there's really no way to avoid straight memorization of it), but I don't see how you could effectively encode your knowledge of a programming language on to flash cards. And I'm not sure why you'd want to when you can easily look up things in the documentation or on Stackoverflow.


> And I'm not sure why you'd want to when you can easily look up things in the documentation or on Stackoverflow.

Why would you memorise foreign vocab when you could just look up what you want to say in a dictionary or phrasebook?

It's a silly analogy, but there's some merit in the comparison. Searching documentation takes time - perhaps not that long, but enough that if you had to do it constantly you'd become frustrated very quickly. If you look at some code you wrote recently, it's almost certain that there's a bunch of standard library function calls in there that you didn't have to think twice about writing. The same goes for basic programming patterns. The more you expand your repertoire of memorised functions and patterns, the easier it becomes to go from design to code.


> It's a silly analogy

Right, very much so, because a live conversation using vocab is very much different than anything you'd do while programming.

> The more you expand your repertoire of memorised functions and patterns, the easier it becomes to go from design to code.

Yeah sure, but the criticality is much less, isn't it? Like it's not the rote memorization of function calls, or standard libraries that makes a good programmer. Design patterns, idiomatic language structures (i.e. how do I write truly "Pythonic" code), etc are all way more important than, say, what does library X provide or what are the args to function Y.

Flash cards don't address the important parts of learning a programming language. And if you focus on the important parts, generally you'll get enough experience in the language that the things you'd want to memorize naturally just stick.

My 2c.


I don't think it's a particularly a silly analogy. You're going to be able to work better if you know what you're reaching for rather than googling around.

Idioms and design patterns are also very well suited to flash cards.


I think very few programmers used memorization techniques to learn a new language. When learning your first language (or one very different from those you know), understanding the ideas is much harder than remembering the facts, and when learning similar languages you start by coding something you know using syntax cheat sheets and Google, and by the time it works you remember the basics.

If I had to switch between perl, python, ruby, php, lua, javascript all the time, I would consider Anki to keep the rosetta stone data in memory, but not otherwise.


Like with anything, there's a time to practice a craft and a time to perform it. All SRS does is optimize those practice sessions. It's still up to me to go beyond that and work the projects.

Stackoverflow and documentation serve to complement my Anki deck. I learn what I need and apply it to my project. After that, Anki cards get created.

Ultimately, I just see "stuff that you can google" as supplements to memory rather than replacements for it.


> All SRS does is optimize those practice sessions.

I think I'm struggling to see how flash cards would be an effective practice session. Why not just code something? Start a hobby project, contribute to something open source, etc. You'll use everything you'd rote memorize in context (and naturally start remembering it).


Example from something I added today....

-------------------------------------------------- Front: Setup a flask view that requires basic authentication. Use the httpauth extension.

Back: How did it go? --------------------------------------------------

I have a lot of cards like this where I put the onus on myself to code up my own samplers.

My hobby is one where I'm playing around with Magic the Gathering data in JSON format. Over the past week, I designed a database, wrote SQLAlchemy scripts to populate it, and built up some RESTful web service views over it in Flask. It's been a lot of fun.

There'a a natural harmony where my performance on Anki reviews boosts my project work and vice versa. If there's a "key thing" to it all, it's that I have a project flow that works for me and makes me happy with the whole process.


Yep, exactly. The majority of the cards I do are either a problem where I convert a sentence from English to X, or it's create a function that takes in these parameters and returns this. Most cards should be challenges, not just quick one word answers.


Because "just coding something" won't cover every method/function idiom you've ever learned. Creating a card with a corresponding challenge can do that. If you just make a Ruby script to practice programming you're allowing yourself to forget another language or framework knowledge.


Not with the same precision of targeting weak areas and optimizing your review time.


Memorization is definitely useful for programmers. It means you will spend less time browsing API documentation looking up existing functions applicable to your particular problem. If you program a lot in a particular language or API, a little bit of rote memorization saves a lot of time in the long run.


But if you just hit the docs as needed, you will automatically be doing spaced repitition on anything that isn't a one-off need.


Spaced repetition relies on reviewing items before you forget them, and works best with active recall, not simply reading answers. Reading the docs whenever you forget is much less effective.


I've had success using it to remember terms, usually term -> description.

My problem wasn't that I'd forget what the technical thing was, but that I'd just forget the vocabulary to talk about it.

Looking things up isn't that difficult, but it's much better to remember a term and say it than it is to halt a conversation while you look it up.


"...I don't see how you could effectively encode your knowledge of a programming language on to flash cards."

I've occasionally wondered if an Anki deck composed of Clojure idioms would be valuable. It would be dependent on paredit conventions, teaching "shapes" along with symbols.


I have a Clojure Anki deck of function-name -> the output of (doc function).

The reason I started it was because I just kept forgetting the names of functions. I'd know exactly what I wanted the code to do, but then I would find myself not remembering the which word to invoke to do it. The flash cards have helped a lot there.

I'm not sure how you would fit an idiom into a flash card, but try it out and see how it goes.


> I'm surprised that memory or memorization would be the key (for some people? for yourself?) to learn a programming language.

There's syntax and there's idiomatic library usage.


Try that in an interview. Unfortunately, too many interviewers rely on one's ability to memorize obscure tricks to cute programming puzzles.




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

Search: