Jack Kinsella on learning a programming language with a spaced repetition system:
Knowing thousands of commands saves time otherwise spent looking up reference materials. You instantly recall previous solutions when faced with a problem, and dozen of possibilities spring to mind when architecting a system. You will read other people’s code rapidly, confident in your understanding. The closest analogy is fluency in a natural language. You will speak code.
I’ve started applying this with all of my current work. Some of those finicky GIT commands and SQL syntax have already been committed to long term memory. I’ve used Anki before with language learning, but sort of fell of the band wagon. This is by far the best method for learning anything for the long haul. The commitment to daily review is the tricky part, though.