Background: In 1998, Derek Sivers founded CD Baby and turned it into the largest online retailer of independent music. In 2008, $ 22 million from the sale of the company to Derek donated to a charitable trust for the needs of music education.
Derek's speeches on TED were viewed more than 5 million times, and his own book ranked the first line in the chart of business books on Amazon.
Derek considers himself a "eternal student."I have been using this training method for a year now and I can say that it is the
most effective one I have come across in 14 years of studying programming.
My history
')
I admit, I'm a mediocre programmer. I have no special education. I just learned something because of the need - I launched a small CD Baby site that over time began to grow, and since I could not afford to hire a specialist, I just spent about $ 25 on books on PHP, SQL, Linux and Apache. Of these, I learned the minimum knowledge that helped me maintain the site in working condition. For years, I used this modest set.
However, later, when I had the opportunity to work side by side with REAL programmers, I was just amazed at the amount of their knowledge. All of these commands and functions just bounced off their fingers. We used the same language, but they kept in memory such an incredible amount of information that I felt like a third-year student next to a university professor. I wanted to achieve the same speed of work.
I thought about how many times over all these years I studied and forgot something. I read some interesting technique in a magazine or book, tried to use it once, after which something distracted me, I forgot about it, and continued to do everything in the usual way.
I wanted to reliably put the commands and language tricks in my memory so as not to forget them and be able to use them at the right moment.
Interval repetition
When you come across a new fact, you run the risk of forgetting it soon, if it does not occasionally flicker before your eyes.
This can happen by chance, if, for example, if you are immersed in one or another language, you will from time to time come across repeated words.
However, according to the results of the study, the most effective time for the repetition of what was learned is the moment when you are about to forget it.

Suppose you have learned a new foreign word. Repeat it a few minutes after you heard it, then after a couple of hours, then after a day, then after 2 days, then after 5 days, then after 10 days, 3 weeks, 6 weeks, 3 months, 8 months, etc. After some time, it will sit firmly in your head - you will only need to repeat it occasionally.
Software based on the interval repetition method will do everything for you, all you need is to enter into it the information you would like to remember, then test every day - the program determines the repetition intervals based on your own assessment of your own knowledge.
If, by answering a question, you rate it as easy, then the next time the program offers it is not soon, if you make a mistake or do not remember the answer, the program will ask the question again several times until you can cope.
On this link:
ankisrs.net you can download Anki software - the free and most popular program of this kind. There are versions for Mac, Windows, Linux, iPhone, Android, etc. Written in Python.
Well, now let's talk directly about programming.
What if you could memorize everything in the programming language you are studying? All commands, parameters, functions. Solutions for hundreds of the most common problems - all this is almost at the level of muscle memory? Imagine reading a book or a document and remembering everything in the smallest detail!
Well, well, it's time to move from the introduction to the case.
Start by learning!
To begin with, I will clarify one important thing:
Cards are needed in order to remember what I learned.Before you create a card dedicated to something, you first need to
understand and remember something. Whatever your source - be it books, lectures, videos, code, online lessons, or any other - you can create a card only after the new information has been learned and learned.
(That is why using other people's decks is not as effective. It's just a reminder.)
Formulate knowledge in the form of small facts.
You have to create a huge number of cards. The question is on one side. The answer is on the other.
If you use this method to learn a foreign language, the design of cards should not cause difficulties. There is a word or phrase in the question field, a translation in the answer field, and vice versa.




With other disciplines, not everything is so simple - you will need a bit of creative thinking.
We will have to work a little - study the relevant material, select key facts, break them into minimal fragments and arrange them in the form of short questions, - something like a quiz in which you have to participate.
I have been doing this for about a year, so I can share
how to save time as much as possible .
Replace long descriptions with examples using code
If you learn JavaScript, and you encounter the following rule:
“The addition operator (+) ... if at least one operand is string, the second one is also converted to string, thus the result of the addition is the union of two string operands.”
You check this information in practice, study the question far and wide, eventually finding out that 1 + '1' is still equal to '11'. Then create a card that will help you remember this fact:

Sometimes I write an explanation. Sometimes there is no need for it, since in some cases a simple answer is enough.
Set yourself trick questions
Here is the following excerpt from the JavaScript tutorial:
“If a positive positive number follows the constructor of a new array, the result is an empty array of the number of elements designated by this number. Any other combination of arguments yields an array containing these same arguments. "
Check in practice, try different options, and create two cards. Let's try to catch ourselves in the future:

... and behind it - almost identical question ...

When the program checks you, it will issue mixed question cards, so the trick is waiting for you - as usual - at the most unexpected moment.
You can try more sophisticated options that will make you remember “interesting” cards for a long time:

Do not forget to ask yourself small tasks:

Memorize interesting tricks
If you get an interesting trick that you would like to remember, turn it in response to a card question.

Ask multiple choice questions
If there are two or more solutions to this or that problem, and you want to remember everything, formulate the question accordingly, so that in the future, answering the question, you will remember all the possible options. (By the way, the following examples are taken from the Ruby language.)

Learn three-dimensional concepts through short examples.
Suppose you spent 20 minutes studying a concept that has a rather conceptual nature, requires more understanding than learning a number of functions. In such cases, you can reduce everything to a small example that will remind you of the essence of this concept.

Another example:

Read Peter Wozniak's 20 Rules of Formulating Knowledge.
I recommend reading Peter Wozniak’s article “20 Rules of Formulating Knowledge” on this topic - there you will find a lot of useful tips. The article is here:
http://www.supermemo.com/articles/20rules.htm .
Practice every day
For the most effective results, run the program every day. If you abandon it for a long time, you will get the hell out of it, as a result, you will have to re-learn the things you are supposed to remember.
You can memorize thousands of facts, spending on them for 20 minutes a day. For me, it's a morning ritual. Pour a cup of hot tea. I open Anki. I drink seagulls.
You can do everything much more interesting - get yourself to answer questions as quickly as possible.
It reminds me of a workout for the brain. 20 minutes of "weightlifting" per day will pay off in the form of instant and long-term results.
Add all new and new cards, and you will be surprised how fresh all this information is in your head.
Conclusion
I have been practicing this method for a year now, and I can say that it has significantly increased my productivity. Therefore, I highly recommend it to you.
You can use this approach in the study of anything.
This article can inspire.
Feel free to email me (derek@sivers.org) at any time, ask questions or just share your successes.
UPDATE
After I published this post,
I was shown this excellent article , which explains the method even better than me, therefore I
recommend reading it .
Also, many have asked me to share my Ruby and JavaScript decks.
Actually, I don’t think this is correct, because Anki cards are not a source of knowledge, but a mechanism that helps you refresh this knowledge in memory. The acquisition of knowledge itself must come from a different environment. But, since you want it so much, here are my decks on Ruby and JavaScript as of January 7, 2013.
To import them into the program, click File → Import.
Javascript deckRuby Deck