frn.sh

In defense of rabbit holes

I’ve been thinking about education for a while now. Some time ago, listening to Remzi’s lecture about operating systems, I heard him say something like this to his students: “Don’t just learn the general aspect of things; learn the details. Having just a notion of a subject is precisely the definition of ignorance.”

This idea from Remzi got me thinking, and today I want to write about what I’ve been reflecting on regarding this matter.

Understanding the details of things

When we don’t understand the details of things, we fall into the following traps: 1. we think we know something that we don’t actually know; 2. we develop preconceptions about it, which cloud our judgment; 3. we lose the chance to effectively understand something by assuming that the little we know is all there is to be understood about that subject.

To go deep into a topic, however, we need time and effort. We dig a hole with our bare hands to unearth a hidden treasure. One must be willing to deal with the dirty part of things – and the details are usually dirty and complicated. It takes consistency and, like it or not, love for it. Understanding something deeply will always be a mission in the name of love.

On the other hand, as I said, our most important and limited resource is time; consequently, we can never understand all things in depth. This task is restricted to a small circle of meaningful interests.

In defense of rabbit holes

The thing about diving deep into a question, and eventually stepping into rabbit holes, is that you often get this feeling that you’re “wasting time.” But I’m here to tell you that you’re not. Think again about Remzi’s phrase. When you dig deep enough into a subject, spending weeks, even a month on it, savoring every detail and exploring every corner, what you’re really doing is understanding the details of things.

And when that happens, something extraordinary takes place: that little thing you discovered — let’s say, a small quirk about how containerd works — suddenly expands into a much wider world, where you can leverage that knowledge in other areas. Each detail you learn doesn’t just stay isolated; it acts like a diffuser, opening up new ways of interpreting things, new pathways to explore.

This is why I defend rabbit holes, these little curiosities that turn into excavation journeys for treasures still unknown. A perhaps silly, even obvious example: understanding what a “process” is in Unix operating systems is essentially understanding the entire foundation of distributed systems.

Personally, I have a hard time shaking off the feeling that I’m “wasting time” when I let myself wander so far into interests that initially seem trivial, without much value. But, at the end of the day, that’s precisely what happens: these interests expand, radiating into other areas. They’re like little suns illuminating dark spots in territories we already thought we knew.

alt

One way to make studying more rewarding without losing the thrill of diving into rabbit holes is to create a “question document.” Something like: “How does Linux execute binaries?”, “What’s the difference between a script and a binary?”, “What happens when we change the DNS?”. You create this list, try to group the questions by similarity, and make a conscious effort to structure the knowledge you’ve gained, picking one question at a time like those claw machines grabbing stuffed bears at the mall — this could be a solid strategy for people who struggle to maintain focus on studying things that, at first, don’t seem that interesting.