« iPhone NDA lifted, we're back in! | Main | Always an exception... »

October 07, 2008

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

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/t/trackback/2362356/34246819

Listed below are links to weblogs that reference Test-driven Learning:

Comments

An interesting website to find some programming problems for that kind of practice is: http://projecteuler.net/

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

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

Post a comment

If you have a TypeKey or TypePad account, please Sign In

About Me

  • Andy Hunt is co-founder of The Pragmatic Programmers, LLC, and is well known as a programmer, author, and publisher. His email signature, "/\ndy", dates back to the paleolithic days of uucp and ihnp4.

    See my home page.

    Subscribe
AddThis Social Bookmark Button

Books I've authored

Where I'm Speaking

Are you a nerd?

  • I am nerdier than 96% of
all people. Are you nerdier? Click here to find out!