SRS Application

Wanikani made me fell in love with spaced repetition, because it’s just so efficient at putting things into your long term memory. Once you realize how powerful spaced repetition is, it becomes intoxicating to think that you could learn anything like this and retain information for a long time.

So i’m trying to apply SRS to learning coding syntax and software engineer knowledge. What I’m looking for is an easy-to-use app that lets you build custom decks with your own flashcards and where you can customize intervals. It’s vital to me that it has a good visual design and preferably statistics of reviews, retention rate etc.

I tried Anki, but it honestly feels extremely buggy and old. Syncing between devices isn’t working properly for me, settings are really complicated and some seem unnecessary, visual design is plain bad. Also tried Kitsun and it does check a lot of boxes, but it feels like deck building for anything outside of language learning is quite tough, complicated.

Is the holy grail out there?

1 Like

To answer your direct question (unhelpfully), I don’t know of any general SRS programs besides Anki and Kitsun.

That said, I don’t think programming is a good match for SRS. Generally I think SRS is good for input, but not for output. And programming is all about output. Who cares if you can read code if you can’t write it? I think you’d be better off doing interactive/guided practical learning for programming. Stuff where they start you off easy and then slowly build up to a complex set of functionality to demonstrate the capabilities of whatever language or library it is you’re learning.

6 Likes

Tbh, I wouldn’t recommend using it for coding syntax, I know this isn’t the response you are looking for, but SRS mainly excels in those areas, where you have a large quantity of items, you do seem them from time to time, but not often enough to properly commit them to memory, and they can stand on their own. For language learning this is great, because that ticks all three boxes, 50k words, some you only see once a month, and they have a tangible meaning on their own.

However for coding it’s just a huge miss on all three fronts. Most sane languages have a limited number of keywords, and even if you count standard library things, there will be a clear line of features you use daily and features you only need once or twice a year. And worst of all, just because you know what a given feature is, it doesn’t mean that you’ll be able to use it effectively. Features come in sets, they have common usage patterns, best practices, non of which are easy to learn with SRS.

SE knowledge is in a similar boat. It doesn’t make sense to learn it on its own, you need to apply it.

Instead I recommend challenging yourself each day, either by coding up personal projects, or just going through a coding interview site. My personal recommendations are CodeSignal and CodinGame for the latter.

Just so I can also put in some more helpful advice, it’s best to get used to anki really. The desktop interface is in the middle of a rewrite and redesign, and it isn’t as daunting once you get used to it.

8 Likes

Another option is mochi.cards which also its API exposed, just like Anki + AnkiConnect, and WaniKani API v2.

Card template can be customized well, but not sure about deck intervals.

Depending on the preferred degree of customization, Anki might be the only option…

1 Like

As a software developer, I’ve never memorised language syntax. I suggest installing decent IDE and practicing writing programs. Basic language syntax will stick very quickly and for the rest there are autosuggestions feature.

5 Likes

I taught myself Rust last december by watching one or two videos of theory and then doing a little bit of coding everyday for a month. This will take more time if you are not yet familiar with other programming languages, but coding is something you will only learn by doing, and very little initial theory is required before you can start. I participated in the advent of code together with a group here on the forum. All coding problems from previous years are still freely available and solutions are available online for virtually every language out there. Somehow even in japanese.

1 Like

Just a comment though that Advent of Code challenges can be pretty tough, especially the later ones (the first days start out rather easy), though it does get considerably easier with practice. So if anybody struggles, they shouldn’t despair.

3 Likes

yes, for someone starting out I would probably recommend doing the first couple of several different years instead of one full set.

1 Like

To clarify, i’m most definitely not using SRS alone to learn coding. I understand that it’s for the most part a practical skill, and 70% of it is learning through doing. I still believe SRS has a purpose in learning coding more efficiently, and i saw a few people who did this successfully (a popular “Janki” method for example).

Even from personal experience, after learning a request library in Python and using it for a project i then stopped using it for a month or two and when i needed to use it again a few weeks ago, my memory of it was blank and i had to refresh it with docs. My personal opinion is that because SE problem-solving often requires creativity, having a lot of information in your head that is semi-forgotten and needs to be refreshed causes a situation where that useful knowledge is not being accounted for in creative thinking. I genuinely believe that if you are able to refresh that knowledge, so that on daily basis, for the most part it’s “there” a bit more than it’s not, then it opens more paths in your head to solve the problem more efficiently.

Also, people will always recommend to others the option they used to learn a skill/ability and since SRS is definitely uncommon way for coding, it’s understandable for people to be skeptical.

In the end i think what matters is the ability to stick to studying for a long time… even if this method ends up being not as efficient, if it’s fun enough for me to allow myself to not burn out and study it longer vs. burning out the traditional way and taking a few months break, then this might end up still being a positive result.

Interesting. I use latest Anki on 3 different devices and syncing works no problem. It’s far from buggy.

Then again, I don’t think a SRS for coding makes too much sense. Coding is way more about what one wants to do and a methodical mindset than the syntax.

That’s completely normal in a dev’s daily life :grin:

3 Likes

Plus for a lot of libraries the APIs change in new versions of the library anyway…

2 Likes

using it for libraries (standard or otherwise) seems p reasonable to me

give it a shot. i feel like you would get more mileage out of more trivia-type knowledge (of which in programming there’s a fair amount); with the right cadence seems like it could be amusing to revisit old problems, but then you’re kinda just doing leetcode innit

controversial take: the highest leverage Anki SWE deck would just be one about your coworkers. what their interests are, what their motivations are, etc

1 Like

I feel like the highest-value “I remembered something” moments I have working in software are things like:

  • there was a related bug to this in the bug tracking system that I read six months ago, let me just dig it up rather than redoing the analysis from scratch
  • oh yeah, there’s a reason we didn’t take this approach when we built this three years ago and it was X, so don’t bother trying that as a redesign now
  • I read something on the internet by somebody with a clever approach to this problem ages ago
  • there’s an algorithm for this and it’s named topological sort

which I’m not sure really lend themselves to SRS. (Mostly the memory is “I know there’s a thing here and now I can go search the bugtracker/email/google for the details”.)

2 Likes

Maybe that’s normal in dev’s daily life, but to me that just sounds like yet another reason to give it a try with SRS. I could put in a few minutes daily to retain for long term, the same information that another coder will forget and refresh it for an hour when he needs it. Next time other devs might be re-reading on the same thing they once learnt to refresh it, while i might be already working on the tool and overall performing more efficiently. And having a lot of relevant information retained in your head at all times in my opinion, should allow you to think more creatively about solutions to dev problems.

I’m just a begginer developer though, so this is purely my speculation and i might very well be in the wrong here. But because very few people tried this, there’s little evidence saying whether it’s a bad or good idea. So i guess i’ll be the rabbit and see how it works out.

1 Like

I went with Mochi, it’s actually really well designed. Haven’t tried API yet, will do soon. Project seems solid, regularly updated and for the most part it has everything i wanted. Most importantly it’s easy to use.

I can also make cards like this, where i have to type in syntax and it will mark correct/wrong answers.

I’m gonna give it a go for some time and maybe update this thread in future about whether my “coding with SRS” was a success.

Thank you so much for suggesting it :smiling_face_with_three_hearts:

2 Likes

Not gonna lie, I think I have ran this command a grand total of two times, once for each of the two computers I have used git on. I think I’ve saved time not trying to memorize this and instead spending ~10 seconds looking it up each of those times.

1 Like

Especially given that (for once) the git UI is helpful and will tell you the command to run if you do try to create a commit on a new machine without the user info set up…

1 Like

Maybe so, that’s a very basic command. You supposedly only spend on avg. 4 minutes per flashcard by reviewing it every day for 5 years. So it’s more reasonable to add a flashcard and waste 4 minutes out of 5 years than to spend time and mental juice thinking whether a flashcard will provide value in the long term before you add it. That also means around 20 minutes on reviews per day to retain 10 thousand things and keep it refreshed.

On wanikani you’re learning words that you might encounter once a year as well, it’s the same concept.

Although it may work, either googling when needed or making a short note (file) isn’t really that difficult.

I wouldn’t want to learn basic commands for 5 years. First one month or one year may already help much for memorization.

Also, maybe leave a room for discovering new combinations. Git too.

Probably the easiest way for this, is copying ~/.gitconfig to a new machine.

1 Like