I'm always thinking about learning: what I want to learn, what I have learned, what I never quite learned as well as I'd like, how I can learn more effectively. Lately, I've particularly been thinking a lot about relearning, or the activity of refreshing and deepening previously learned knowledge and skills.
Relearning is top-of-mind lately because I've been focusing my study efforts on fundamental computer science topics that I previously studied in college courses (years ago). Specifically, I've been refreshing and deepening my understanding of computer hardware architectures, low-level software abstractions, and algorithm design.
The major difference between now and my previous bouts with these subjects is the appreciation and perspective that I've gained working as a professional software developer. Through practical experience I've gained an infinite list of questions, and I continue to have moments of awe at the rich complexity and technological capability that has been built from some simple mathematical principles and silicon circuits.
Though I found those subjects interesting while in college, I didn't have much experience and context to fuel that interest towards fascination. Amidst the stress of "school", I was mostly concerned with earning a solid grade. Unfortunately, the testing and schedule constraints of accredited education can often leave the pursuits of mastery and deep exploration of subjects by the wayside. To be completely honest, I also hadn't yet developed the life skills or maturity to consistently keep my priorities, commitments, and interests well managed and in focus.
Now, there are years of exploration, mistakes, and clarification between me and that younger self. I'm committed to my chosen craft and infinitely fascinated by the technology I work with. I've also long since come to terms with the iterative nature of learning — the "two steps forward, one step back" relationship that one develops with a subject and skillset. With every project built, book read, lecture watched, and course taken, shaky foundations are strengthened, forgotten knowledge re-emerges, old questions are answered, and new questions are collected. If you love what you're learning, it's a perpetual quest to be glad for; an ever-expanding Zelda map of knowledge to uncover.
So, I've been especially enjoying this recent dusting off of my computer science fundamentals. Going forward, I'm going to keep a schedule for reviewing core subjects at regular intervals. I'm also using Remnote to continuously build a personal knowledge base that helps be make connections and remember things for the long-term using spaced repetition algorithms.
I will try to record and share the most standout "Aha!" moments that come out of my relearning endeavors. I'll do this in the form of blog posts with a prepended title of "TIR".