Remember cramming for a test? Notes sheet between your hands on the desk in the passing period before your highschool history class, repeating “1914, Sarajaveo” over and over in your head, stuffing the notes into your backpack as the bell rang. Nailing that item on the test but having to slam all that knowledge back into your head again come the final exam?
And even now, do you know what historical event happened in 1914 in Sarajevo?
If you didn’t before now, you probably will next time it’s relevant. Why? Because learning things repeatedly, in different contexts, is key to comprehension and memory. And that’s one of the reasons I am already in love with programming. Programming is full of singular concepts. Loops, boolean, iteration, scope, returns, arrays, hashes/objects, methods/functions. Learning Ruby from scratch and learning Javascript from scratch, I’ve covered these same concepts each time and learned more each time about their essential qualities.
The idea of units of code or design as atoms and molecules is getting a lot of play these days, and we can extend it up further. Take loops. Loops are biological to programming. They’re the Krebs Cycle of programming.
One of the only reasons I remember the Krebs Cycle is that I learned about it twice – first during high school biology, then again six years later, while studying for a personal trainer certification. The same concept, applied for different reasons:
- An understanding of basic cell processes.
- To make dietary recommendations for exercise.
Similarly, I’ve learned about loops first while studying Javascript, then while studying Ruby. A loop is the same in both contexts in the same way the Krebs Cycle is the same in both contexts: there are immutable qualities to it that will never change. But also, a loop is different in each context. The syntax is different, the way languages construct the logic behind the loop is different, certain aspects of how the loop should be utilized is different.
Learning multiple times, in multiple contexts, helps us to expose a pure, core nugget of truth about a concept, and to understand that concept more fully. It’s tempting when you’re exposed to material you “already know” to skip over the basics and proceed directly into the more complex concepts beyond it. But I like giving those basic concepts a review. You never know what nuance you migth uncover.