I spend a fair amount of time thinking about how to learn; and I want to drill into one aspect of my approach to learning. Specifically: when learning, spend most of your time aligning your mental state with how experts think about the topic, and intersperse that with rarer periods when you step back and think in a way that’s grounded in your personal point of view.

There are a few points here. One is that it’s really easy to coast and do things that feel good under the guise of learning; I do this all the time myself! But, when I’m doing that, I want to be honest with myself: my goal in those moments isn’t really focused on deep learning, it’s using shallow learning as a tool towards some other kind of enjoyment. And that’s totally fine, maximizing learning isn’t everything; but I’m making a choice in such situations, and I want to be conscious of that.

Another point is that any successful learning is ultimately going to involve some kind of paradigm shift. Maybe it will open you up to options for how to think about situations that you didn’t have before; maybe it will present some ideas that are actively at tension with how you think about certain situations; maybe you’ll ultimately decide that those new ways of thinking about situations are better than how you’d been thinking about them. It’s hard to know where the shifts will be in advance, or how profound they will be; and with deep enough learning experience, you’ll find that your perception is changing over and over again, as you uncover subtler (and potentially more profound!) differences between how experts think about a topic compared to how you think about a topic.

So it’s really important to adopt a mindset that opens yourself up to that possibility! And this is an active process: you spend a lot of your time trying to match your thinking to how you currently believe experts approach a topic, but it’s also very important to have another layer of your brain trying to detect situations where experts are doing something that doesn’t match your mental model of their approach. (Which is different from the very common situation where they can do something that fits into your mental model but that you can’t yet carry out.) Because following up on those leads are how you can make leaps in your understanding.

(An example: when I first heard about Test-Driven Development, I felt like I understood it fairly well; and I tried it out, and listened to people talk about it, and that definitely helped solidify my understanding. But then I read Kent Beck’s book on the topic, and he gave an example where, to make an initial test green, he hardcoded the answer, and I realized: wow, he’s willing to cut corners in the green phase of red/green/refactor a lot more than I realized.)


I’m not saying that, whenever you decide to learn something, you’re automatically signing up to get sucked into a cult. Though I’m not exactly not saying that, either: to me, an important part of really deciding that I want to learn something is figuring out how to make space for that learning. A lot of that making space is time based — what am I going to stop doing in order to be able to spend enough time on my new learning project to make a difference — but mental space is important too. I need to be not just open to but actively seeking out new ways of thinking about something, or even new things to think about that I’d never thought about before; and I need to actively practice those new ways of thinking, analyzing scenarios in light of that way of thinking, while actively quelling my old ways of thinking in that area to the extent that they conflict with the new ways.

But that’s not a lifetime commitment: it’s also important to periodically (not constantly, maybe once every three months or so?) step back and think from a broader position. Are you getting the benefits you expected from what you’re learning? Are you getting benefits you didn’t expect from what you’re learning? Alternatively, are some of the ways of thinking that your new learning suggests not panning out well in practice, even though you’ve actively been trying to give them a fair shot? Or are things somewhere in the middle, where you’re happy to be learning but you’re not uncovering big surprises.

Depending on how you answer that question, you might want to stay on track, you might want to increase your studying, or you might want to dial back. Or you might still feel that there’s something there, but that things aren’t firing on all cylinders: maybe you should explore switching teachers or something.


I can’t remember where I heard the following, but it stuck with me: when programmers are listening to a talk, they’re waiting until they hear the first thing that they disagree with, at which point they stop listening. Whereas, when sales people are listening to a talk, they’re looking for one idea that will help them close a sale: if so, the whole talk is more than worth it. And I think there’s an uncomfortable amount of truth to that.

So: at least in this regard, act like sales people, not like programmers! If you want to learn something, then open your mind and actively seek out ideas that feel different, even wrong. There will be time later for you to step back and do a more global evaluation; but, if you’ve decided you want to learn, then learn.

Post Revisions:

This post has not been revised since publication.