Hacker News new | ask | show | jobs
by nomad225 2042 days ago
Any suggestions for what to use Anki to remember in everyday life as a software engineer?
13 comments

Author of the piece here.

My number one recommendation is to not get overly excited about it. One of the first things that happen when you start using Anki and realize the superpower that it is being in charge of your memory is that you want to include EVERYTHING in it.

You start creating cards with obscure bash one-liners, little-used git commands, or Javascript functions you read about in a random article. You add all of it to Anki. After all, you might use them in the future right? And it doesn't cost you anything to create a card with them so why not.

What happens is that because you don't have a clear picture of why those cards are valuable to you - you just added them because they might be useful, one of these days - you will have trouble retaining their knowledge, meaning that you will keep failing to successfully review those cards.

And because of the way spaced repetition algorithms work, those cards will be constantly appearing in your reviews, and you will keep failing them. And they will keep appearing. And so on and so forth until you lose all motivation to use Anki because it's becoming a frustrating experience to do your reviews.

The most important thing about using Anki is to keep using it. That's how you get the benefits of it, so be more selective about what you add to Anki instead of profligately adding cards that you gain nothing from.

This was exactly my experience when I tried to use it for software engineering. This is after having used it incredibly successfully to learn Japanese a decade prior and being very experienced with it.
I’m having some success remembering C++ with Anki because the language itself has such massive complexity and syntax. I am inputting Scott Meyers books into it right now. Its still really hard to write good prompts with enough context- akin to writing an interview type quiz. So far I think the main benefit is in understanding complicated template code I wouldn’t have a reason to write myself. I don’t expect to be able to use these features just recognize them though.
I think a good way would be to only ankify things that would save one 5 or so minutes of one's time.
Do you have a sample deck
I use it to remember the names of persons I encounter in my day-to-day.

Coworkers, neighbors (like that neighbor 3 blocks away that I talked with for a few minutes about {such-and-such}, but don't see that often), restaurant employees/proprietors, delivery people, maintenance workers, friends-of-friends I've met.

Without Anki I have an abysmal memory for names. I have aphantasia[0] which might relate to my difficulty with names.

Now, with Anki, (if I'm using it regularly) I have a freakishly good memory for names. :)

Goes a long way to helping others feel welcome and appreciated, which in turn means _I_ end up feeling welcome and appreciated. A very virtuous cycle.

Edit: I'm a software engineer, but most of my Anki usage is not focused on software engineering directly. To create new Anki cards, I follow the "20 rules for formulating knowledge"[1], so it takes a bit of work before I can take some new bit of information and "process" it to something ready for Anki.

[0] https://www.facebook.com/notes/blake-ross/aphantasia-how-it-...

[1]: https://www.supermemo.com/en/archives1990-2015/articles/20ru...

I'm curious, what format do you use for cards to do this? Do you use Cloze cards like: My delivery driver is ___? How do you specify in the card which co-worker you mean?
I'm a few days late, so I don't know if you'll see this.

When adding "people cards", I do anki's forward-and-reverse card, and I build the card so I can read both sides, and generate the opposite side.

I'm just trying to build an association in my brain for their name, so I might do:

Front: "people: Neighbors to west, older couple, he likes woodworking"

Back: "people: Joe and Trish"

I only use a single Anki deck for all my cards, which span many interests, so I'll usually give myself a word to specify the topic, like "Go, Ruby, People, Mental Models"

Or if I can grab a headshot or picture from Slack, Twitter, or LinkedIn, I'll often put the picture on the front, name on the back.

When I review the card "from the back", I try to remember what the person looks like.

I have aphantasia [0] so this form of recall is effortful.

[0] https://www.facebook.com/notes/blake-ross/aphantasia-how-it-...

I did come back and see this, so thanks for taking the time to write it up! That's very interesting and useful.
I worked on a relatively narrow part of a complex domain, I had an anki deck to keep track of the various acronyms and remember some of the weirder processes my systems participated in. Most of the questions were one of:

- what does ABC stand for

- describe process X

- how process X differs from Y, and why

- what is the role of system A in process Z

- what is the shape of data that comes from A to B in process Ł

This vastly reduced the number of times I got stumped with something during various high-level meetings (to the point that I routinely pointed out some false assumptions people made). It worked better for me than passive documentation. The domain was unusually complex though.

I use it to help me as a cloud engineer. For an example of some of the things I use it for. I have cards that are for

- Emacs Commands

- Emacs Key Strokes

- Greek letters, words and sounds

- The wikipedia List of non-standard dates

- Physic ideas

- General principles of organization

- Learning principles

- Bible verses

- Command line utility options

- Vimium key strokes

Basically anything that I want to learn I end up ankifying. I find that Anki is most effective for remembering things that I don't do all the time, but need to remember two or three times a week/month. Here's a good tip, if you need to DuckDuckGo it more than once it's probably a good idea to throw it in an Anki card.

That feels like a really broad question. I always find it useful to look up the reading lists for university courses on subjects I’m interested in. You can usually find the PDFs with a quick search in Google Scholar. Then, using something like Polar, you can annotate the readings and directly save your annotations as Anki cards.

That way, you can build a knowledge base of what actually interests you, which you’re much more likely to study and retain in the first place.

* [your lang] std lib functions, their arg order.

* HTTP status codes

* Acronyms

* Syntax mistakes (spot the bug).

* Command line or vim snippets, e.g. "write a for loop over all files in a directory in bash" "grep and only show match"

I find it most useful for catching things I commonly screw up. The trick, of course, is to build the habit of identifying when you've repeated a blunder and then to make it into a card. An example for this in Go would be using `range` and forgetting the second arg: `for val := range slice` is legal syntax, but `val` is actually the index var here, it should be `for _, val := range slice`.

I've been using them to remember specific things I look up commonly. The rule is if I look things up 3 times, I add a card. If I can remember these things, I won't have to break my flow to look things up on Stackoverflow.

It's usually simple things, like what's the method signature for slice? Or how do I run bash inside of a docker container?

The tough part for me is sticking to reviewing. There, I'm trying to figure out where to attach it to something I often already do.

> I'm trying to figure out where to attach it to something I often already do.

I've started reviewing a question or three in the rest breaks during my workouts.

Not all exercises or routines work great for that, but it works surprisingly well for things like bodyweight HIIT.

As a software engineer I spend hours a day in the languages and tools I use. That's more than enough reinforcement for me. I've never felt like I couldn't remember enough in 20 years of programming. What sort of things do you think it would be helpful to memorize?
Possibly command line utilities like awk/sed/etc? I've used them a bit for Docker commands.
Acronyms. In my role as software architect I encounter a new block of acronyms every few months.
Just make a card for anything that you had to look up more than once.
The NATO phonetic alphabet. If you've ever tried to read an email, password or any set of letters over the phone, it makes it a lot easier. It's not an obvious thing, but it's only 26 cards.
Maybe start by using it to remember git commands, or something of that nature