Few thoughts on Learning

I was learning how to program during the mid to late 90s.

Finding learning material in a world without the Internet, Google, and YouTube was incredibly challenging.

I struggled to understand how pointers in C worked. Yashavant Kanetkar’s Understanding Pointers in C book helped me grok the concept. I looked up to Kanetkar as my hero and thought it would be amazing if I could learn the C programming language directly from him.

A friend informed me about Kanetkar’s C programming course offered through distance education, and I quickly enrolled. Even though Kanetkar lived in Nagpur, which is 700 miles from my home in Chennai, the Indian Postal Service made it possible for us to communicate.

Every week, I would receive reading materials and programming exercises from Kanetkar, which I would diligently tackle and then send my written solutions to him on paper. He would go over my work, make corrections and send it back, along with the next set of tasks for me to work on. After 3 plus months of hard work, I was rewarded with a completion certificate, signed by my idol.

The world I live in now is very different. I can educate myself about anything at any time without paying a dime. Approximately 30,000 hours of videos get uploaded to YouTube every hour. This limitless choice is a challenge to my monkey mind, which constantly jumps from one shiny thing to the next.

Motivation to learn isn’t a problem for me. The ability to selectively choose what to learn is crucial in this era of limitless choice. I evolved into a 2 bucket framework to select topics to learn. Need-based learning and Curiosity-based learning are those 2 buckets.

Need-based learning

Learn as you need is my definition for need-based learning. Let me give an example from my own personal experience.

I joined a tech startup early last year after being in an engineering management role for a decade. I was aware that my role in the startup would be more hands-on and it had been a decade since I was an individual contributor.

The programming languages have evolved significantly in the past ten years, with a shift towards more functional compared to imperative style of programming. I needed to unlearn the old ways of doing things and quickly adapt to the new paradigm.

Modern Java in Action came to my rescue as it was written specifically for individuals like me who were transitioning from imperative to functional Java. I devoted several days to writing code in the new style and spent countless hours reading and practicing at work. Through constant practice and learning from mistakes, I am now comfortable programming in the new paradigm.

I was forced to learn as the situation demanded it. I was able to retain most of what I learned because I was learning through practical application, rather than just theory.

I discovered the idea of “Line Extensions” while reading Nick Sleep’s investment letters. What does it mean? Colgate-Palmolive introduced their initial “Winterfresh” blue mint gel in 1981 and later launched “Total Advanced Whitening.” Customers were already well-acquainted with “Winterfresh,” and the company didn’t have to invest heavily in advertising to educate them on “Total Advanced Whitening,” resulting in huge profits.

I compliment my need-based learning with “Line Extensions” wherever possible.

Our world is hyper-specialized. As an engineer, I work with people across many domains including product managers, designers, marketers, operations, and sales. Every feature requires collaborating with all these domains. I educate myself on their domains.

I won’t become an expert in their domain, but it helps me ask the right questions and have intelligent conversations. It helps in building my mental database with depth in my domain and breadth in other domains as shown in C below. If I had the opportunity to go back in time, I would do more of this.

I view need-based learning as the superior form of learning as it’s contextual. I am working hard to learn from the need-based bucket as much as possible.

Curiosity-based learning

Learning to scratch my itch on a topic is my definition for curiosity-based learning. Let me give an example from my own personal experience.

I had a severe itch to understand why Calculus was invented and how the concepts like derivatives and integrals are used in real life. I was on a vacation for a couple of months, and used that time to understand Calculus. 

I find a couple of challenges with curiosity-based learning.

First, there’s opportunity cost. A subject like Calculus mightn’t be applicable to what I do at work. Time spent on something else is time taken away from need-based learning. This is true for most curiosity based learning, but not entirely true for Calculus. The Gradient Descent algorithm in Machine Learning uses derivatives from Calculus to minimize the loss function.

Second, I tend to forget concepts from this bucket easily as I don’t put these concepts to practical use. For example, I enjoyed reading Central Banking 101 to understand how the Federal Reserve functions. How useful is this for an index fund investor like me with a strategy to buy-and-hold forever? Or how will this help me in what I do for a living?

I like learning just for the fun of it, without being concerned about its end goal. I learn things I’m curious about as long it doesn’t affect need-based learning. That takes care of the opportunity cost. How do I solve the forgetting part?

Project based learning is the only way to minimize forgetting and make learning more durable. Daniel Shiffman’s book The Nature of Code and TheCodingTrain YouTube channel is one of the best you can ever find.

I learnt concepts such as vectors, velocity, acceleration, and force by programming and creating animations of objects on the screen – causing them to move, attract, and repel each other. I wish that schools would adopt this method of teaching science and math, using computation and hands-on projects.

I tend to shift my time between need-based and curiosity-based learning. The illustration below summarizes my approach to learning from both these buckets.

The draft of the post originally had a third category called “Rest”. But, I later changed it into “Things I will avoid doing while learning.” Here are three things that I will avoid doing.

First, avoid reading multiple books on the same subject in succession. Instead, focus on summarizing 1-3 key takeaways that I can put to practical use.

For example, after reading “Psychology of Human Misjudgment”, “Thinking Fast and Slow”, and “Predictably Irrational” on the topic of human psychology, the value gained from reading the 4th book on human psychology is likely to be limited. Rereading these texts is better than reading the next book on this topic.

Second, if I want to understand the big ideas from multiple disciplines, don’t read a book or a blog on mental models. Instead build something physically or through code using those big ideas. The Nature of Code is a great way to learn some of the big ideas from Physics.

The chapter on “Understanding rates of change” from the book Math for Programmers is a great way to learn The Fundamental Theorem of Calculus by writing a few lines of Python code. You can’t bullshit with code. A thorough understanding of the underlying concepts is essential to write code that works.

Yesterday, I was asking my friend on the best way to understand how Generative Pre-trained Transformer works. His suggestion was to learn by building applications using a platform like Hugging Face. I can learn theory as needed while building the application. This approach to learning is just the opposite of what I was taught in school.

Finally, avoid the FOMO to consume content. Technology has turned everyone (including me) into a content creator. I am learning to say “no” to most things. I remind myself of the saying, “If you’re not paying for the product, then you’re the product,” as a way to avoid the fear of missing out.

2 thoughts on “Few thoughts on Learning

  1. Great post Janav at always. Really appreciate your clear thinking. Some key points on effectively learning rather than just churning through volume with no retention or practicality.

Comments are closed.