Using spaced repetition to supercharge your programming skills
If you are a software programmer or if your work demands any sort of computer science knowledge; it is not uncommon to get overwhelmed with the amount of information available and the associated steep learning curve. Adding to woes is the pace at which this industry rolls. Of course, you’ve got to always keep your learning hat on; but, that steep learning curve that never seems to end might make all your effort look tiny and tiresome. Learning is tricky and different for everyone. Among a plethora of learning techniques out there, in this article, I emphasize leveraging the science of spaced repetition to commit almost anything to memory; including programming principles.
Did you ask what is Spaced repetition?
Spaced repetition is a study technique that places increased intervals of time before reviewing the information you’re trying to learn. This idea originated with the work of German psychologist Hermann Ebbinghaus, who pioneered ways to measure learning and memory. The concept of the learning curve? That was all Ebbinghaus. As was something called the “forgetting curve,” a concept Piotr Woźniak introduced and Ebbinghaus made use of in his groundbreaking 1885 study “Memory: A Contribution to Experimental Psychology.” After doing memory recall tests on himself, Ebbinghaus noticed a sharp drop-off in information retention after just 20 minutes. This laid the foundation for the spaced-repetition method.
With that tiny introduction to spaced repetition, I want to now focus on understanding — How easy is computer programming?
A lot of people get excited by the “learn to code” craze. They expect that they can become a coding wizard just by completing a tutorial or two. So they find some code tutorials online and complete them, but then realize that they’re not getting anywhere. They still don’t have a clue about the layers of software intermediation before it becomes a product. This is where many either give up or worse, start hating it more than before; despite the need for it.
Computer programming languages are not easy to master, but that doesn’t mean they are impossible to learn, either. In a lot of ways, coding is like cooking — both require you to follow a set of instructions with no room for error. It also helps if you understand that the most common state for a programmer, especially a new programmer, is a sense of ineptitude. There is almost a limitless amount of stuff to learn, so programmers constantly need to learn new tools, languages, and technologies.
The “Learn to Code” movement has done a fantastic job of breaking down barriers and showing people that code is actually quite harmless.
But, here’s the problem — So, you enrolled in that awesome online tutorial that your mate recommended. You really watched all the videos and feel accomplished for receiving a course completion certificate. You’re in what I like to call the “Hand Holding Honeymoon” phase. Though you may feel like the end is around the corner, you’re only a fraction of the way there. This is just the beginning…
The trek towards job readiness or being a doer instead of a talker is best visualized in this image:
Are you thinking about what I am? By the way, I was thinking — Can this learning technique called spaced repetition be used to make the learning of computer programming — if not easier, more effective?
The most common and effective implementation that leverages spaced repetition is often associated with flashcards. It works like this — you create a flashcard consisting of a question and an answer to it. The next day you get asked this question. If your answer is correct, you will continue to get asked this same question at different intervals. For example, in 1 week, in 3 weeks, in 2 months, and so on. The most well-known apps that function as above are probably Anki and SuperMemo.
Whilst this is a naive solution to learn a new spoken language or help learn terms in biology, it is not so easily adaptable to learn computer programming. You ask why?
Well, because programming is often not so much fun without:
- At a minimum, a basic code editor.
- Some detailed reasoning about why things are done or expected to be done a particular way.
- Some documentation.
On one hand, it gets tricky to include all those in an Anki or a SuperMemo flashcard alongside the correct answer. And on the other hand, an Anki or a SuperMemo flashcard that does not have some reasoning, notes, or documentation but just some code pasted as an answer, is your welcome to feel lost in an ocean of information to find why that answer is what it is!
I believe there is an inherent need for a tool that gets the best out of the flashcards style of learning but is also targeted toward helping people master computer programming. Out there, I could not find anything to my interest. So, I created one! And, I named it Sparkle. Because that is what it aims for — to help you sparkle in software programming :)
With Sparkle, you may create your flashcards and practice Anki's way of learning by leveraging spaced repetition to master anything and also software programming.
Here’s the summary of everything Sparkle does:
- You start by either purchasing a course from the Sparkle Marketplace or creating a course yourself.
- A course or a section is a collection of flashcards.
- A flashcard has 2 sides. On the front, you see the question and a code editor (basic enough to start coding) which is your practice area. You also see a button to “Reveal” the answer which when clicked, flips the card. Here, you see the correct answer to the question in context. Oh, and, of course, documentation, notes &/ references for that respective flashcard — to help make the answer convincing &/or understandable.
- Every time you practice, you may click on “Verify” to check if your answer matches the correct answer. You will be served with an accelerometer that visualizes the % match of your answer with the correct answer. The goal is, you’ve gotta be in the “green” zone. And, by the way, when you click on verify, Sparkle automatically categorizes your answer as either “Expert” or “Good” or “Needs Improvement”. This is where you measure the effectiveness of your efforts. Remember “spaced repetition”?. You’ve got to practice until you are always an “Expert”
- And, the best part (at least I think) is, that you can easily make your learning material a commodity that can earn you real money! Yes, you may register your course for sales in the Sparkle Marketplace. When a fellow sparkle user purchases your course, you get paid — straight into your bank account! Ah, and they also rate and review your course, of course! So, you learn, earn money, and respect, and (hopefully) attain mastery by making that concept stick.
- Did you say insights? Sparkle ships with interesting and insightful dashboards. The insights are about your own learning effectiveness at spaced intervals and your sales of course.
That is a tiny gist of what Sparkle does and what it was created for. You may signup and start using all of this for free. I mean, if you are a person who is hungry for knowledge and dreamt of acing computer programming — be it for whiteboard interviews or just, generally, you know; being that person who does not just talk but actually does things; if Sparkle does not interest you, I don’t know what else could?
Here is a detailed brochure/application navigation assistance pdf to help you get the best out of Sparkle.
Next time you sign up for any interesting video tutorials or start studying a new programming book, do remember to create a course in Sparkle. Not only will that help you centralize your learning material, but, you may easily make your learning material a commodity that can earn you both respect and money. Sparkle is available here — https://sparkle.adroitcorp.com.au
Given the time of the year and COVID 19 situation, I suppose you’ve earned a lot of time (reduced commute and reduced outdoor activity). I hope you can make the best use of this time to gear up and take a step closer to mastery. I wish you all the best in whatever you want to learn and master; I’m sure Sparkle should help you get there!
I’d love to know if you had any feedback or opinion. You can write to us at support.sparkle@adroitcorp.com.au
Take care, stay safe & stay home