Test-driven Learning
While working on my new book, I came across an interesting idea that extends the popular agile notion of “test-driven development” to learning a new language or a new technology.
As it turns out, just studying something new over and over again doesn’t actually help you remember the material very well. However, if you keep testing yourself by trying to recall the material over and over, you’ll strengthen those connections in your brain.
Try to write a program in that new language you’re studying—-you’ll need to retrieve the key information to do so. Try to explain key parts of that new methodology to a colleague. Keep at the retrieval—-the testing of your knowledge. It’s kind of like “test-driven learning,” but in a good way, not like those horrible social studies quizzes in eighth grade. The idea is to practice retrieval, not input.
You can also take advantage of the spacing effect to make this all more effective.
Cramming, or studying a lot of information in a short amount of time, doesn’t work very well. We tend to forget things along an exponential curve, so spacing out your quizzing reinforces material much more effectively. For example, you might plan on retesting yourself along a 2-2-2-6 schedule: retest after two hours, two days, two weeks, and six months.
But that’s not the most efficient use of your time, especially with a large amount of material. Some facts and ideas will get memorized more easily, and others will need more work. Trying to keep track of an individual memory-decay curve for each fact you’re trying to memorize is too hard to do manually. But, hey, we’ve got this nifty computer that we can use.
Piotr Wozniak developed an algorithm to take advantage of the spacing effect, implemented in the commercial product SuperMemo (there’s an open source implementation available as well). It’s basically a souped-up flashcard program that keeps track of your performance and schedules retests according to an individual decay curve for each item.
It’s a great way to take advantage of the brain’s caching and archiving algorithms.
/\ndy
An interesting website to find some programming problems for that kind of practice is: http://projecteuler.net/
Posted by: Timothy Knox | October 07, 2008 at 03:22 PM
Just wanted to point out that I write a program for the Mac and iPhone called Mental Case, which works on similar principles as Supermemo.
You capture information in any number of novel ways -- enter text, drag in an image, take a screenshot, or even a photo with you iSight -- and it becomes a 'mental note'.
Mental notes are scheduled using algorithms similar to what is mentioned in the article, and can be reviewed in a lesson slide show.
Check it out: http://www.macflashcards.com
Drew McCormack
Mental Case Developer
Posted by: Drew McCormack | October 08, 2008 at 12:22 AM
Hi
I am a software tester and not a programmer.
I have just started reading your book. I believe the concept is very good. I believe that this book might be useful to a software tester too. I intend to discuss your book with other software testers.
As a starting point, I have started a discussion thread on a topic from your book.
You might be interested in have a a look (maybe participating/answer questions) at the discussion:
The URL is
http://www.sqaforums.com/showflat.php?Cat=0&Number=526530&an=0&page=0#Post526530
Posted by: Knowledge Worker | October 23, 2008 at 08:06 AM