Slow, but Deep
Maybe the reason I have taken so heavily to learning how to learn is because I absolutely sucked at it growing up, even though I liked it. I can still remember one of my practice books from kindergarten and sounding out the word “the”, ascertaining a bit of gratification. A subtle detail, but clearly a foundational memory, and one that I think has stuck with me because it was a moment of my young life that brought a particular type of joy. A joy I had for sounding things out, figuring things out - learning. Something that I think lead to me being placed in gifted classes in the 2nd grade, after excelling a bit from kindergarten to then. I say “something that I think lead me…”, because I’m convinced I was just really good at spelling, and a bit better at math because I liked learning in general, not because of a particular gift. There are some grade A cognitive outliers out there and I’m not sure I can say I’m one of them. I don’t think I was misplaced, but to say I was “gifted” might be a stretch.
Anyway, in 3rd grade I started messing around more in class, not taking school seriously. By 4th grade I was struggling, I think I barely passed 5th and I failed 6th grade, barely passing my 2nd round of 6th grade (a common theme). I think I did a little better in 7th, having paid a little more attention. Then in 8th grade my care for school diminished significantly, while I cared more about exogenous substances. I only passed 9th grade because of summer school and I finally dropped out of school the next year after attending about 30% of the school year, opting for a GED.
Then around 2020, after a year or so of jumping on the self help bandwagon I had some solid mindset shifts.
Mindset Shifts
-
Shift 1
Around the end of 2020 I was blown away by a YouTube video called “Study Less, Study Smart”, which was essentially a video explaining the Pomodoro Technique. Up to that point I thought the only way to study was to sit down and suffer through long hours of work you didn’t want to do (though, I believe this has its place). I’m not sure why, but the idea of taking conscious, deliberate breaks didn’t occur to me. Eventually Pomodoro became more of a way for me to warm up for longer work sessions, but at the time it was a crucial shift in my mindset around learning. -
Shift 2
From there I watched 2 Ali Adbaal videos. One about Active Recall and another about Spaced Repetition. Mind blown once again after learning there were different ways to study and they could be more effective than whatever rote techniques I had picked up?? Another mindset shift, and one that was bringing me closer to an entirely new paradigm of thinking. I think in both of those videos Ali mentions a book by the name of Make It Stick. I soon thereafter went to my local book store and had them order me a copy (I know, old school). About 2 weeks later I had it in my hands, opened it up and I was hooked… -
Shift 3
One thing most people are told is that you can pretty much expect your level of success to be related to your level of effort. The work hard and everything will be ok mindset. It’s something most people, including myself, are told from the time they’re children and deep down I always knew if I put in the work then I can be successful in something. It’s not a complicated method, but it never really clicked until I read this book. Maybe it was because I always thought of “work hard and become successful” as a vague notion and never thought to ask for some clarity. Regardless, when I read about the same thing in Make It Stick it was described differently. Effort was described as something our brains need in order to really learn things. As well, effort was described as a piece of the puzzle. Something that needed to be applied over and over, each step building upon the last. Maybe I’m not that smart after all if I never really grasped the simpler notion of “work hard, be successful”, but all I can say is that this really put into perspective something I’d been struggling with for…decades. -
Shift 4
Once I put together that “work hard, be successful” can be simplified to “put in some effort today, tomorrow, the next day, etc.” I was reeling off both excitement that I was beginning to understand something I’d been struggling with almost my whole life, as well as some disappointment that I’d been struggling with this my whole life (haha). I continued reading and slowly began to learn that, despite its importance, effort wasn’t everything. The same principles from the 2 Ali Abdaal videos, as well as others, were described in rigid detail in anecdotes from teachers, students and learners of all types. I was learning that I can take the principles detailed in the book and apply them in different ways to come up with custom learning frameworks of my own. This may have been one of the single most influential moments of my life.
Experimentation
Fast forward a few years and by October of this year I had read Make It Stick 3 times, along with other books that detail different ways of learning things. Peak (Anders Ericsson) is a book that details a term the author coined, known as “Deliberate Practice”. A type of practice that focuses on pushing past comfort zones and progressively increasing difficulty and complexity (more or less). Ultralearning (Scott H. Young) is a book which provides a framework for learning new things, as well as strengthening skills, each step taking some principle from Make it Stick or Peak and distilling it into an actionable practice.
Over the last few years of reading these books I slowly fell more in love with the prospect of being able to apply simple rules to my studying to see better results, similar to feeding a machine inputs and receiving outputs. This shift propelled me into a period of experimentation where I did my best to apply the principles found in these books and create custom learning frameworks of my own. One thing I began to realize is that, at least personally, there isn’t a one size fits all framework. I have needed different structures for learning CS principles, math, computer networking, web development and most recently computer architecture. What follows is my current framework for studying a textbook called Digital Logic and Computer Design:
-
GENERATION
Generation, or generative learning, is a learning principle that can be described as attempting to solve a problem before you know how to solve it. It would be like being told to find the area of a cone, not knowing how to do it, and trying anyway. You might get it right, you might be miles off the right answer. The point is to try anyway and the idea is that once the solution is explained to you it sticks better than simply being shown how to solve it right away. Step 1 in this framework is to go to the back of the chapter and try problem #1. -
MISTAKES
After I attempt to solve a problem it’s time to go into the chapter, find the sections with the material related to that problem and study it. The way I personally do this is by taking the problem I just tried to solve, compare what I did to how the problem actually needs to be solved, analyzing my initial mistakes. Then I close the book, try again with a new problem (usually generated by AI) and repeat the process. I basically do this over and over, making mistake after mistake, until I’m able to properly solve a problem, making sure that each problem is different to better ensure that when I do solve a problem I’ve solved it because I understand the concept, rather than having memorized the problem. This is essentially a process of working with my mistakes, instead of fighting against them and allowing them to teach me, instead of allowing them to break me. -
AR/SR
”AR/SR” stands for Active Recall/Spaced Repetition and you can learn more about what these are by watching the videos I linked in the Mindset Shifts section above (Shift 2). In a nutshell Active Recall is the practice of recalling information at will - think flashcards or quizzes. Spaced Repetition is the time between sessions of Active Recall, which allows a bit of forgetting to occur. I apply this principle by going back to problems I had solved in the past and attempting them again. Basically periodically testing myself. I choose a date in my planner and write in a task to take a small quiz on a concept. Sometimes I do well, which means I genuinely understand the concept and sometimes I have to refer back to step 2. Combining both Active Recall and Spaced Repetition has been quite powerful in allowing me to store information in long term memory, rather than being able to solve problems simply because enough time hasn’t passed and I’m pulling from short term memory. In the meantime, between sessions of Active Recall I am going back to step 1 and doing it all over again with the next problem from the back of the chapter. -
ENCODING
Encoding, when it comes to learning, is the process of applying different strategies to essentially “encode” information into your brain. It’s what most people think of learning as: storing information for later use. Storing information and being able to recall it to solve problems can be seen as the “holy grail” of learning. That’s what most people are trying to do when they’re learning something. Now, by just applying the first 3 steps of this framework I’m probably doing enough for encoding at that point, but I decided to apply one more step in this process. I basically take what I learn and do my best to turn this concept into code. Almost…literally encoding. When I learned how to convert decimal numbers to binary I wrote a little script that turned decimal numbers into binary. This step has drastically reduced the time it takes to finish a chapter, while drastically increasing my understanding for each concept I study. I have to really understand something before I’m able to take the concept and apply it to programming. This isn’t always done after step 3, however. Usually I need to apply steps 1 - 3 to multiple problems in the back of the chapter, before I understand a concept well enough to move on to this step.
It’s probably clear at this point that this framework isn’t necessarily done in a “step 1, 2, 3, 4, repeat” fashion. I usually go through steps 1 - 3 multiple times, for multiple problems before applying step 4. As well, step 3 is only executed when enough time has passed that I quiz myself on a concept. This may seem erratic and unorganized, and it did take some working with to get a hold of the reigns, but so far this series of steps has been powerful in my journey through Digital Logic and Computer Design.
Slow, but Deep
“learning is an acquired skill, and the most effective strategies are often counterintuitive…” - Make it Stick, page 2
I started learning to program in early 2019 and I didn’t fully understand for loops until about a year ago. This could be seen as me taking 5 years to learn looping, but the reality is that it’s me having spent 5 years diving into something like web dev then when it got tough I’d say “Hmm, maybe this isn’t what I actually want to do” and switch to something else like networking. Something would be simple and straightforward at first, but then when some thinking or problem solving was required on my end I’d check out. Over and over again. I didn’t want to lean into it when it actually became challenging. The thing is that at least 4 of those 4 1/2 years between when I started learning to program and when I learned for loops, I was still reading about the science of learning and experimenting with different ways to study. The problem was that I wouldn’t stick to a plan long enough to see it work. Then around the end of last year I put together a simple study plan and told myself I was going to stick to it. I’ll spare an explanation of the exact plan, but first thing on the agenda was to focus on for loops until I understood them. It’s hard to explain, but at that time I was almost scared of them. I was almost scared of anything that seemed too challenging for me, but I decided to face that fear (as ridiculous as that sounds). I had AI give me 5 simple coding problems that involved for loops. They were things like find the largest integer in an array, sum all integers in an array, reverse a string, etc. My plan was similar in some ways to what I’m doing now. I would try to solve a problem, see where I went wrong and try again. I did this over and over, each time analyzing my mistakes and learning from them, until eventually I started making progress. I started understanding what the iterator variable was doing, why I needed an iteration limit, increment/decrement operators, etc. I was actually learning. This was so different than what I had been used to for the previous 5 years. On top of that I started realizing that it wasn’t scary to face this challenge. It was just…challenging. I no longer felt like things were too hard for me to learn. Rather, I accepted that it would take time, effort and mistakes to learn them.
And here I am, 14 months after learning for loops and my new goal is to learn as much as I can from Digital Logic and Computer Design and at as deep of a level as I can. Some would say my current way of studying is unnecessary, but is it? There is a mountain of research that suggests practice, and more importantly the way one practices, is the single most crucial divider between a simple practitioner and a Mozart. Not an expert, but an absolute outlier. This undermines the idea of innate talent, but that’s a conversation for another blog post. Regardless of whether Mozart was talented, if it was because his father was an extremely skilled music instructor, instructing him in a way that most children do not experience (and certainly not at the age Mozart began), or both one thing is clear: progress compounds more, or less, depending on how one practices. How one studies. Maybe the way I study is unnecessary for progress, but progress is only a symptom of the way I study, while I aim to steadily build the momentum that fosters progress. I think this is going to be the best way for me to be able to learn as much from this textbook as I can, or at least this is best way I’ve personally found so far. Is the way I study the best way? Probably not. I’m sure someone out there has figured out a way of studying that is far more effective than what I do, but like any skill the more you do it the better you get. A consequence of putting time and energy into formulating my own custom learning frameworks is I am getting better at it. It’s a beautiful cycle of building momentum through the way I study, while getting better at finding ways to study and finding ways to build more momentum.
I am about halfway through chapter 1 and at this point I have built 3 tools as a way to encode the material I have studied, which can be found here (the first 3 projects). Has my progression through the textbook been much slower than some would consider acceptable, because of this? Probably. Is this necessary for the goals I have in mind? I think so. Will my movement continue to be slow, thoughtful and deliberate? Yes.
Conclusion
After I got my GED I experienced about 15 years of job hunts and blaming the economy for my misfortunes, while making choices that wouldn’t be wise in most economies, let alone post 2008. I tried college in 2010 and 2013. I almost immediately dropped out of the 2010 semester. I did ok in the 2013 semester, doing pretty well in an Electricians Math course. I think I enjoyed the math more than I did wiring the light bulbs. I eventually dropped out because I didn’t have money for textbooks and I wasn’t driven enough to make a friend and ask to make copies of pages from their textbooks. I say this all to drive the point home that at this point in my life I’ve found a path that encompasses the joy and challenge I faced as a child who loved learning. I am excelling much more than I expected to and I think it has much less to do with any innate gift and more to do with taking the time to stick to a framework, while leaning into the challenges that come with it. I spent a lot of time bouncing between technologies, and not learning any of them at a significant level. 6 years after I started learning to code and I think I’m just barely getting to “beginner” status. I participated in last years Advent of Code, and I plan on participating this year. Over the last 6 years I may not have accomplished what some have accomplished in 1 or 2 years, but at this point the momentum I am building is growing and it will only continue to grow.
If you took the time to read this, thank you.