Learning a technical subject

I love learning. I wanted to write about how I learn, so I can analyze if there is a method to this madness. I will first talk about what my learning process looks like in abstract terms, and then I'll give an analogy to make things more concrete and visual.

Learning is a messy process for me

I know some very clear thinkers. They are very organized and methodical. I am not like that.

These tidy thinkers seem to learn a new subject quickly (and effortlessly) by studying the rules of the subject and then deriving everything about that subject from that set of rules. They speak in precise statements and have clear and hard-set opinions about the subject. They seem to thrive most in theoretical subjects.

In my observation those tidy learners are in the minority. Maybe the tidy thinkers are able to pull this feat off because they come from a neighboring domain/subject and map the context there to this subject quickly. But, again from my experience, it doesn't feel like that. It seems like they are wired that way.

I am not wired that way. I am a messy learner. I yam what I yam.

I need the context

I am not able to learn by studying rules/principles and deriving everything from them. That shit only works for the tidy thinkers.

Context is my crack, the same way rules/principles are the crack for the tidy thinkers.

I need to know why, why not, surrounding, as much context as possible. The more context I know, the better I become able to locate something almost spatially, and the more I can make sense of it. Even reading the history and motivation for the subject can give my understanding a big boost.

This is inefficient and slow. This is more of an inductive/intuitive method than a deductive one.

I learn by making (mistakes)

I need to wrestle with the subject myself. I need to grapple with it and roll on the floor. This comes in the form of asking questions, making guesses, trying things, and seeing them broken, and amending my understanding to make new hypotheses.

This is not efficient learning, but that is not the goal most of the time. So I am not sure if efficient deductive learning is better than a gradual and more intuitive/inductive learning.  

In fact, not being able to learn all at once, and not being able to fit too many things in your head could be an advantage. It is like the Haruki Murakami quote about how non-gifted writers have to dig wells and get good at it. Similarly if you are unable to fit too many things at once in your head, you learn to decompose complexity to fit in your head and spatially/intuitively compartmentalize things in your brain. That can even make you a better and deeper learner than a rule-based learner.

It turns out I had written about a similar thing 10 years ago:

Falling short of superpowers (genius/giftedness), we invent processes/systems to succeed, and the good thing about these processes are they are replicable (unlike being genius/gifted). This is why I argue that explaining thought-processes are very important. The novelist Haruki Murakami comes to mind here. On his book "What I Talk About When I Talk About Running", he says roughly the following. Gifted writers write without effort; everywhere they touch in the ground the water pours. Other writers have to strive (he gives himself as an example); they have to learn to dig wells to get to the water. But when the water dries (inspiration leaves) for the gifted writer (which happens sooner or later), he becomes stuck and clueless because he has not trained for this. On the other hand, under the same situation, the other type of writer knows how to keep going and succeed. This is the reason we should teach our students/audience how to dig wells, and not to rely on occasional strike of insights for success.

Re-reading that post, I think is fair to call Bourbaki-style mathematicians the tidy thinkers as the clothes fit:

"[The Bourbaki project] changed the style of mathematics for the next fifty years, imposing a logical coherence that did not exist before, and moving the emphasis from concrete examples to abstract generalities. In the Bourbaki scheme of things, mathematics is the abstract structure included in the Bourbaki textbooks. What is not in the textbooks is not mathematics. Concrete examples, since they do not appear in the textbooks, are not mathematics. The Bourbaki program was the extreme expression of the Cartesian style. It narrowed the scope of mathematics by excluding the beautiful flowers that Baconian travelers might collect by the wayside."

I need to revisit things to make sense of them and connect them to other things

If you just understand how something works, you are missing out big time! You are missing out why it works.

After understanding how something works, it is important to understand how this particular approach/design avoids mistakes and make things work well. For this you need to change things slightly to see why the variations would not work.

This is what I observe when teaching students distributed algorithms. By just understanding how the algorithm works, they think they understand the subject. No, they are just a consumer/end-user of the algorithm, and they only have a superficial understanding of it. This is why I give TLA+ modeling assignments to get the students play with the algorithm, to see what breaks it, and understand better what makes it work.

Only after all these grappling, you start to understand why that thing works. But you are still missing out. Is there a better way to restructure this, is there a different design to solve the problem better?

This is where I step back at the meta plane, and start doing analysis and synthesis work. This is my way of getting closure on the subject and packing and compartmentalizing it for long-term internalized storage in my brain. The way I do this is by trying to teach it, and writing blog posts about it, and finally writing papers about it. This process of getting closure also involves a lot of learning by way of mistakes. It turns out, I had also written about this as well.

In that down hour after teaching, what do I do? I have regret-flashbacks about some parts of the lecture I delivered. I have remorse about how I botched some parts of the lecture and how I couldn't answer a student's question better. The reason I botch up a part of the lecture is often because I haven't internalized that part yet. The reason I wasn't able to make a smooth transition from one part to another part is often because I didn't have a better understanding/insight about how those parts fit. It is likely I was missing some context about it. Or maybe more likely that I knew the context, but I didn't internalize it well enough. There are many different levels of knowing, and the more reliable/resilient/dependable level of knowing is knowing by experience. Teaching is a way to have hands-on training in your research area. You learn through your regrets about how you couldn't explain it better.

The indication that you have internalized your learning sufficiently is that you can teach it well. At this point you not only know why the way things are, but you also have a good sense of what other ways would fail to work and what other ways will work better. This comes from experience and making the mistakes. Negative results are as important as positive results. When you level up, you also notice what mistakes the current approach has, and you are able to suggest better designs/solutions.

"What I cannot create, I do not understand." --Feynman

Here is another gem from an earlier blog post:

You truly master a [subject only when you master yourself and bend yourself with that [subject]'s thinking mode. Mastering the [subject] and yourself through the [subject], takes many weeks, and sometimes years. When you pay your dues and go deep, only then, you transcend and level up.

Exploring a city analogy

Suppose you are beamed up to a foreign city in another galaxy and you have to learn your way around.

Why is there not a map? Oh, there are actually many different maps and books written by the locals. But these groups speak all different languages. You cannot understand the ledgers in these maps. No one uses standard lingo, there are a lot of technical (often inconsistent/incompatible) jargon in the maps/guides because this is a complex/complicated city terrain. Moreover, the maps/guides are incomplete due to uncharted territory, not enough details, not enough instructions.

In your quest to master the city, you go through different roles: spectator, participant, citizen, and architect.

Initially you are a spectator. You follow your roommate while he walks around between home and work. You look at everything with confusion and awe. Nothing makes sense, and everything looks foreign.

Then you become a participant. You learn to walk between home, park, and the cornerstone by using landmarks you identified. You get lost a couple times. Good, those are learning opportunities.

Then you become a practitioner/citizen of the city. You learn your way around, and you start working. You are now contributing to the city, even starting to do some community building maybe.

At this level, you start to notice larger blocks of the city. You start to develop a higher-level view of the city. Now those maps finally started making sense. New suburbs/towns of the city now open up to you. You start discovering highways between the suburbs. (Oh, that obscure dashed line in the map is this fast highway!)

But you also go low-level. You start noticing ornaments on building tops, the different architectural styles, even different fonts in shop signs, and which eras they were built and how they interplay with each other. You start to recognize the 3 groups of people and become conversant in their languages as well.

This is when things become intuitive as you internalized things thanks to all that context you gathered. Now, you know the culture, and start to enjoy the hip places and the city as a whole. You start to contribute to the city more and more.

You now develop a taste for the city. And slowly you will realize, for certain places, doing things another way would actually work better. That means you are becoming an architect. You start building things. Maybe you first start-up a corner-convenience store, then you build a park, a canal, and ultimately a new neighborhood in the city.

When you become an architect, you publish your own map. You also use different ledgers, you have to. The city is sophisticated/complicated, and you need the jargon/symbols to describe things.  Hopefully, you have not forgotten about the lessons you learned as a starter, and you are emphatetic, so your legends are  easier to follow. But when another stranger arrives in the city, as helpful as your map and guide is, they need to learn their way around themselves inevitably. Of course, you will give them a hand and provide enough scaffolding to learn safely.

Having/cultivating the following attitudes help you navigate this process better:

  • curiosity: being adventurous, asking a lot of questions, and not being content with your own corner helps the most.
  • relentlessness: not giving up, and putting in the hard physical and emotional work. Your success in this endeavor depends on emotional management for the most part.
  • being a hands-on maker:  not just being a tourist or spectator. You should get involved, you should walk the streets and participate in the bazaar.
  • being social, learning to communicate well: for this you should cultivate good written and verbal communication skills. To level up to an architect, you will need to do some community organizing.
  • analyzing and drawing lessons: this is how you make sense of things and learn meta-lessons.
  • leveraging previous experience: If you have visited/explored many cities before, you can transfer some of your experiences (at least the emotional and attitude management), and learning this new city becomes easier.


As i see it said…
Such an insightful post and brilliant analogy. Thank you for writing this
Interesting. I too learn by understanding how something works. Which is why I'm good at things like electronics, programming, any kind of mechanical or electrical construction or repair, and bad at things that require a lot of memorization like languages. I have a terrible memory, so things like mind maps are useless. When I'm studying something, I get multiple texts so I can read alternate explanations on the subject. I think that each person needs to discover what their strengths are and use those to develop their own learning style.
Anonymous said…
Wow. Thank you very much for this beautiful piece.

This is also how I learn. I used to think that something was wrong with me because this method was slow-paced. But I ended up having a deeper understanding of the subjects if time permitted. I was also able to creatively use what I learned to make variations.


Popular posts from this blog

Learning about distributed systems: where to start?

Hints for Distributed Systems Design

Foundational distributed systems papers

Metastable failures in the wild

Scalable OLTP in the Cloud: What’s the BIG DEAL?

SIGMOD panel: Future of Database System Architectures

The end of a myth: Distributed transactions can scale

There is plenty of room at the bottom

Distributed Transactions at Scale in Amazon DynamoDB

Dude, where's my Emacs?