Learning

Learning is a lifetime practice. No matter how much experience you have, you will still discover new concepts daily. Similar to elite athletes, they train daily to maintain their skills and identify areas to improve.

Over the years, I've developed a personal learning system that has served me well. While it may not work perfectly for everyone, I believe the core principles can help any engineer looking to have build learning as a habit.

Understanding the Learning Process

The human brain isn't a database. They're pattern-matching machines that thrive on connections and context.

When we find new information, our minds don't simply store it in a file. Instead, they wire it into existing neural networks, strengthening some connections while pruning some others.

This is why passive consumption rarely leads to understanding. Reading or watching tutorials might feel productive, but without active engagement, that information remains meaningless.

Real learning happens when we force our brains to struggle, to build bridges between what we know and what we're trying to understand. It's that process of transforming unstructured information to structured knowledge.

Identifying The Gaps

In his amazing blog post, Tackling Complexity, Dr. Doug Belshaw, explained the known/unknown spectrum in this figure.

Copyrighted to Dr. Doug Belshaw

Applying the same paradigm in the learning process. The first step is understanding what you don't know.

  • Known knowns: Skills you've mastered and use confidently.
  • Known unknowns: Areas where you recognize your limitations.
  • Unknown knowns: Areas where you've mastered/understand but don't apply regularly.
  • Unknown unknowns: Concepts you don't even know exist yet.

The real growth happens when you systematically convert all unknowns into known areas. This might seem a tiring and overwhelming process in the beginning, but once you build the learning loop. It becomes much easier to grasp.

The Information Overload Problem

Search for any topic online, and you'll find millions of resources—blog posts, videos, courses, certificates. Take Python as an example: the sheer volume of content is overwhelming. You could spend years reading every Python book ever written, but that's not learning, that's hoarding information.

The challenge isn't finding resources, it's filtering signal from noise. You need a system that transforms unstructured information into structured knowledge that your brain can actually use.

The Learning Loop

💡
This is my personal learning process and doesn't apply to everyone. My advise is to build a system that works for you.

My learning loop looks like this

  1. Identify gaps: Either stuff that I encounter in my job. Or read/hear about it while interacting with people.
  2. Gather focused resources: With all the available AI tools, you can easily find good quality content that you will like (or have AI build it for you).
  3. Transform information into knowledge: This is the most interesting step, you go through the resources that you find thoroughly, and you start identifying practical examples that you can apply either on a silly side project or in your job.
  4. Write about it: Once you build the habit of writing about this knowledge either in private notes, blog posts or even README files. You will force your mind to process this knowledge and build a deeper understanding.
  5. Discover new gaps: As you are writing about what you learned or building a practical example, you start finding areas where you still need to learn about. Doesn't mean you have to go through everything, but it means those have moved from unknown unknowns to known unknowns.
  6. Repeat.

This creates an infinite loop of improvement. Initially, the unknown territory feels vast and intimidating. But as you build foundations, you develop intuition for what to learn next and what you don't need to learn, but you know is out of your depth.

Practical Techniques That Work

1. Build Broken Side Projects

When learning new topics, don't spend a lot of time building a complete project. That's not the goal, Instead, create something that captures 20-30% of the core concept that you fully understand. My GitHub is littered with incomplete projects, and that's by design.

The key is setting boundaries, making Assumptions and ignoring edge cases. Focus on understanding the core problem domain. You can always add those complexities to your learning backlog.

2. Write to Teach Your Future Self (And others)

Writing is programming for humans. When you force your brain to build structured knowledge out of the information it has. The gaps in your understanding become very obvious.

This doesn't need to be a complete or good writing. You are writing what you actually understand and can reason about. It's meant to be private (though it doesn't have to). And similar to my graveyard of half-complete projects in Github, My writing tab in Bear is the same. It's full of incomplete notes of subjects that I learn about.

I usually start with the table of content, I try to reason a lot about it and then quickly try to write (or draw, I'm a visual person) about that section. And immediately I'll know what I fully understood and can reason about, and what I need to learn about more. I use AI to get reviews on those notes, and in some cases, friends or colleagues that are far more experts in those areas.

This helped me to build a habit of writing. Most of it never sees the light of day. But every time I think about a topic or read about it or even answer a question about it, I try to dedicate 10/15 mins to turn it into a mini blog post. This creates a personal knowledge base I can reference and share. And force my mind to re-process this knowledge.

This extends to talking about those topics as well. Mentoring is a big part of my day, and I can argue that it benefits me more. Teaching or discussing topics that you know (known-knowns), Usually makes you identify what you don't know and strengthens the knowledge you already have.

Transform Your Mind into a Learning Machine

The core insight is this: treat your mind as software that transforms unstructured information into structured knowledge. Every blog post you read, every video you watch, every conversation you have. These are inputs to your learning system.

With the right mental models and practical techniques, you can dramatically accelerate your growth as an engineer.