Why It Works

(Short Version)

By reviewing six cards a workday, in 10 minutes or less, you move keyboard shortcuts, commands and syntax into your long term memory.

LearnShortcuts uses spaced repetition, association, and visual memory to help you painlessly learn.

(Long Version)

Let's say you want to learn a basic, useful bit of Linux so you can code like a master in Terminal's Command Line Interface (CLI). Take for instance grep, a powerful command for filtering file names. While ls will give you all files in a directory, "ls | grep pack" will give you all files that start with pack (package-lock.json, package.json). "Piping grep" (connecting the output of the ls command as the input of grep using the "|" character is very handy).

The educational principle of spaced repetition applied to this bit of knowledge means you should review the flashcard "ls | grep pack" right now, again in 2 minutes, again in 10 minutes, and again in a day, a 5 days, 25 days. Each time you review it, this bit of knowledge sinks a little deeper into your long term memory (as opposed to your short term memory, which you use and flush hundreds of times a day). There is no one magic interval pattern, but some pattern of repetition spaced over time gets the job done: you will remember "ls | grep pack".

Now there have been on the market for years several different implementations of spaced repetition: Anki, SuperMemo and Brainscape are probably the best known. And if you invest the time, both in creating flashcards, then reviewing them, you will remember "ls | grep pack".

But.

There's a big but: all of these tools are designed for students in high school or college. They're not designed like LearnShortcuts for working developers. First off, each developer speaks their own collection of programming language/frameworks/IDE/libraries. Second, we work for a living - most developers don't have the time to mess around with flashcard software or actual paper flashcards: if we already knew what these terms meant, we wouldn't need to put them into flashcards! Finally, while there are literally tens of thousands of sets of flashcards out there that students have shared with the world, there's just 10 in English for "bash" at https://ankiweb.net/shared/decks/bash and the quality/utility of these decks is very uneven.

These tools are not made for working developers who need 1) current information, 2) organized by and limited to the languages/frameworks/libraries they use, 3) in a format they can consume easily each workday. The tools are very much in the way. And by the way, developers lust after frictionless, easy, robust ways of doing things: taking about 10 minutes a day to quickly review six cards each workday is about as easy as it gets to learn good things to push into your longterm memory.

And there's a deeper problem: forcing each bit of knowledge into a standardized general format. Reading "ls | grep pack" in a sentence like this is a very different thing from seeing it happen in a gif taken from an actual terminal session. This hits on another three principles of learning: context, visualization and association.

Context, Visualization and Association, oh my!

If you were learning how to repair a drone, would it be easier to learn the names of each part if you read them in a list or if you saw them in either a schematic or better still, a YouTube video? Context provides the linkages to retain knowledge. The more you have to contextualize a bit of knowledge, the weaker that bit of longterm memory is. All of the flashcard products out there - and I've looked at about 20 so far - miss this point. That's why when you are exposed to a keyboard shortcut in LearnShortcuts I show you the actual keys you press - They're easier to remember because they're the actual keys you'll be pressing. So too with CLI commands - I show you a gif of the command being entered into a bash session and the results. When it comes to syntax, I show you what that syntax looks like in an actual IDE, not just as text. Removing the intermediate steps between you and actually knowing a particular keyboard shortcut because you remember the actual keys or a bash command because you can imagine exactly what you see makes for easier learning.

I think of Context, Visualization and Association as the three legs of a tripod: for any random fact (like ls | grep pack) to stick, I need to see it where I'll use it (the gif of the Terminal), so that I can visualize me doing it and associate it with all the other bits of bash knowledge. This last leg of the tripod - association - is funny how it works: take a bit of knowledge, and imagine some sort of weird, funny image of it, and the association will get made. So you can stare at "ls | grep pack" until you eyes water, or, you could think "Image a giant green lizard named Grep eating all my files and pooping out just a few files, each one on a stick". Thinking about this weird (and the weirder/more ridiculous the better) image is far more "sticky" than 16 specific characters.

Use your imagination - that's why it there. Associations and Visualizations are glue that holds together our longterm memories - and they are available to everyone.

Apples to Apples

Developers want to know the numbers, be it how they score in a game or how their learning is progressing or how many queries to the database a particular routine will make. That's why I baked into LearnShortcuts "Points".

Every time you review a Card and assess how well you know the Answer to the Question on that card, you get points. No, the points don't get you anything good like airline milage points, but they do let you answer a really important question: Are you doing as well or better than the week before?

There's no way to quantify whether those five CSS selectors you now know are worth more or less the six Rails CLI rake tasks you'll learn this week. But if you earned 21 points last week and 25 points this week, you are doing well. By layering on a points system to the pedagogical process of memorizing, we get the ability to do apples to apples comparisons, and a small, but important psychic reward. Both with ourselves, and coming soon, with other developers we are friends with.

Points are rewards, the more the better. That's why LearnShortcuts sends you a weekly email all about the points you've earned.

The Bits that Matter

Remember when I said that spaced repetition works for memorizing? It does, but it turns out that the schedule you keep to is a lot less important than you having a regular schedule. And, developers hate "wasting" time on things they know. That's why LearnShortcuts is coded so that most of the time you won't see Cards you've marked Green, but occassionally they will pop up.

In fact, the "big idea" baked into LearnShortcuts is helping you turn cards you don't know (marked as red) into cards you do know (green). That's what matters: how many cards you can mark now and later as green.

The ideal usage of LearnShortcuts is spend 10 minutes or less a workday, reviewing just six cards. If you [now] know the answer to a card, mark it Green, get your 2 points, and move to the next. If you don't know the answer to a card, mark it Red, and don't stress about it: you can take another shot at it tomorrow. And if you sorta kinda know it, great, mark it Yellow and you'll see it later too.

In fact, the "secret sauce" baked into LearnShortcuts is helping you turn cards you don't know (marked as red) into cards you do know (green). That's what matters: how many cards you can mark now and later as green.

So this is how LearnShortcuts earns your 10 bucks a month: a) it offers you keyboard shortcuts, syntax and commands for the stuff you code b) helps you learn these bits by showing you meaningful and direct usage, c) tracks and organizes what you learn and what you need to learn better, d) lets you see and tells you about your progress over time and e) offers encouragement and a stressfree experience because you probably don't get that at work.

Beating the Developer's Dilemma

Back to our situation: we're developers, usually part of a team of developers, working with a very specific set of languages/frameworks/libraries in a code editor, in a structured environment, on a new or existing codebase. Think JavaScript (ES6)/React 16/Styled Components in VS Code using Git and GitHub writing a new feature. So we do our coding thing, the paychecks come in, life is good. Until it's not, because some new things (Vue?,Hooks, Web Components, etc., etc.) gets hot and now employers and clients want their code to use the new hotness and you don't know it.

When I started coding nearly 40 years ago when dinosaurs roamed the earth, I had to learn the ins and outs of just two languages JCL and SPSS and that was that. Later, I got into programming Excel, Lotus 1-2-3, then Microsoft Office, Visual Basic and eventually .NET. All in all, a handful of languages that might get updated once a year, if that. New stuff was coming down the pipeline, but at a slow enough rate that paper books could be written and used for three or so years.

Then the Internet came along and Boom! Everything is faster, and more of it, just a click away.

Nowadays, I need to know a bunch of languages (think ruby, js, css, html, sass), bunches of frameworks and tools (think bootstrap, bulma, Rails, React, etc.) each constantly evolving (Rails 6, ES6, etc.) and dozens of tools, from Adobe CC to zoom. I figure about 25% of what I know about programming goes obsolete each year, which means I'd better keep learning, and fast.

What I call the Developers Dilemma is having to spend big chunks of time learning new stuff to stay employable, but being stuck with old, crappy tools and approaches that take too much time away from developing. It gets worse the more you learn, because the more you learn, the more stuff turns obsolete (remember MongoDB and Redux?) and gets push to the sidelines, and the more new stuff you have to learn (like CSS Grids). This is painful.

If you're a working developer, you should be spending something on the order of 20% of your work time learning. So you can either spend the time creating your own programmer flashcards, plan out a schedule for reviewing them or have someone else, like me, do that for you. I hope you'll let me make it easier for you to learn the keyboard shortcuts, syntax and commands you need in our constantly evolving industry. Now, get back to work!