I was burned out and my software career was stalling just three years in. My memory sucked. Was my poor memory from stress, lack of sleep or was it always this bad? Work was a cycle of "TODAY IS THE DAY I CHANGE" and end in a self-loathing dopamine-addicted HackerNews, Reddit and Medium. I was a failure.
Advice I Needed But Ignored #213: Don't tie your self-worth to your work.
I wanted to be a good, hell, great software engineer. But my work was mediocre. Even worse, I was trying. My ass was in that chair twelve hours a day, six days a week trying to write beautiful Python code. I was constantly looking up documentation and sucked into the internet's rabbit-hole of distractions. I was a try-hard failure.
And then there was Kyle. Kyle and I had started programming from scratch; we were both learning on the job. Three years later, our progress was nothing alike.
"Kyle is the first 10X engineer I have ever worked with." - Every. single. coworker. w/ 15+ years experience.
Kyle worked weekdays from 10AM to 4PM. He got his work done early and single-handedly output 80% of the entire team. Adding more insult to injury, he only worked like 60% of the time. The rest of the time was spent on ... HackerNews, Reddit and Medium. I was the try-hard slow brute, and Kyle was the graceful hare.
Kyle didn't have a secret routine. He never meditated. He was skinny despite McDonalds for breakfast, lunch and dinner. But, Kyle had a super hero ability. Photographic memory in API syntax and documentation.
I wanted that and I was jealous. My career was stuck and something needed to change. And so I began a dedicated journey into spaced repetition. Every day for three years, I spent one to three hours in spaced repetition. It was brutal and I needed it.
Spaced repetition is a remembering technique that will remind you concepts at spaced intervals to maximize memory retention efficiently. It's a strategy to remind our brains of facts; it exploits that the best time to be remember a fact is right before we forget it. Our brains are forgetful, but we can use strategies to make it less forgetful.
At increasing spacing intervals, memory is more likely to be consolidated into long-term memory (and less likely forgotten). Notice the duration of each reminder is further out every time.
Note: This image represents exactly the same as above, but in different colors to promote retention. I'm full of brain hacks.
Pretend you had six chances in a year to remind Bill Gates your name. If Bill remembers your name a full calendar year later, you get a million dollars!
Which reminder interval would you pick?
Option 3 (Spaced Repetition) gives you the highest probability of Bill remembering your name. Ah, the Captain Obvious Blog Writer.
But Why Option 3?
Outside of medical students and language learning apps like Duolingo, spaced repetition isn't common. It's not as cool as cramming, but it works. Medical students use it to memorize those awful thousand page textbooks. Duolingo uses it because it's effective. Remember that guy dominating Jeopardy a few years ago? Spaced repetition fanatic.
If it's so amazing, why isn't spaced repetition common?
But software engineers already have these pain points ...
Anki and SuperMemo are the most common spaced repetition applications. Both help create flashcards and quiz based off an spacing algorithm. If you get a question right, it'll ask again further out. Get a card wrong? It'll remind you tomorrow. I use Anki. Anki seems more common among software engineers. Download the mobile app (iOS/Android). The Android app is fantastic.
Some quick terminology (in case you forgot ...)
Habit: Whenever I search StackOverflow, I'll immediately create a flashcard of my question and the answer(s) into Anki.
Example: Parameter about gsutil.
An easy question I got wrong yesterday. I was almost too embarrassed to show this example.
Spaced repetition is an offline poor man's StackOverflow (Yes, I tried Dash). Pre-Anki, I was forgetting syntax equivalent to my daily learnings. I was already using Anki for general knowledge. Why not embrace programming flashcards for Anki? I was hesitant because of a few reasons.
And for the last three years, I've added EVERYTHING to Anki. Bash aliases, IDE Shortcuts, programming APIs, documentation, design patterns, etc. Having done that, I wouldn't recommend adding EVERYTHING. That topic of my Anki mistakes deserves it's own article ...
EDIT: I've compiled the list of Anki Tips and Tricks here
After embracing Anki, once I had mastered a card, the quick recall around language and framework APIs was like having my prayer to the flow gods finally being answered.
Three years ago, my all-too common pattern was :
Now equipped with an improved memory in API syntax, documentation, country capitals, and engineering — there's a stark difference.
2016 - A year described as short bursts followed by frustrating distractions ...
Current Year to Date - I Should Find A New Hobby ...
Spaced repetition requires a daily commitment, but guarantees a great memory. Most users average about twenty minutes a day reviewing. If you're adding zero additional cards (cough, slacker), your review time averages to zero as knowledge become long-term memory. The confidence of knowing that once something is added to Anki it won't be forgotten is intoxicating.
Spaced repetition is my most important career/life-hack. It's not always easy. It doesn't guarantee you'll be a better engineer (best practices and design beats syntax), but it'll make you a capable one. When you can quickly recall syntax, you'll be amazed at how fast you can code. Sometimes that just results in shitty code, faster. But the best coders code a lot. And that's the only guaranteed way to improve.
Knowledge compounds in interesting ways. Many of my flashcards include blogs and articles about engineering — knowing the history of RPC, SOAP, REST and GraphQL has lead to improved design and architecture decisions. Counter: Memorizing binary search tree algorithms has yet to come in handy ...
I began this by chasing an absurd dream of "becoming a 10X engineer". Like there would be a graduation ceremony or something ridiculous. On second thought, the "Biggest Tool of the Year" award sounds about right.
I have no idea what constitutes a 10X engineer; we don't have benchmarks that encompass output, leadership, code quality and technical debt. Chasing 10X became meaningless when I finally had the confidence that I was shaping my own self-improvement. An improved memory gave me control of my own destiny.
Kyle is still multiples better than I will ever be, and that's perfectly fine.
Advice I Needed But Ignored #421: Don't compare yourself to others. Just make sure you're improving everyday. Compound interest is the most powerful thing in the universe.
Other Great Links About Spaced Repetition: