Common wisdom says that teaching is one of the best ways to develop mastery of a topic. Why is this? It's the grapple - struggling to meet eye to eye with a student and molding your own understanding of the topic to their learning style.

But still: why is this so effective? I'm not an expert in developmental psychology or linguistics, but I propose a hypothesis.

Teaching is an effective learning tool because it forces us to shape and describe a concept with language in many different ways, because of that trial-and-error approach of figuring out a student's learning style.

Language is how we model thought, and using different approaches to model a concept will highlight different facets of the concept. A concept will become intuitive when all facets of the concept are ultimately brought into relief. That's what intuition is, after all: understanding all of the different ways a concept can take form and interact with other concepts.

One analogy is music. You may know how to play a C major chord, but you don't truly understand it until you know all of the voicings and all of the ways it can transit to other chords.

Language shapes concepts, and it's easy to use language to highlight only the parts of a concept that you want to highlight. Biased publications do this all the time. But when you want to learn, or teach, you need to use language to illuminate as much of the concept as possible. That's means saying the same thing in as many different ways as you can.

One way to test this hypothesis is to remove the student - or more accurately, to make yourself the student - and concentrate only on the verbal aspect of explaining concepts.

Take a topic that you have only a rote understanding of, and explain it - out loud - to yourself in as many ways as you can, from as many different angles as you can think of. Add analogies and metaphors, even if they're a bit of a stretch. Make sure to also move both higher and lower in abstraction ("programming languages are really just a grammar for a formal logical system, in that way programming is just like Law" vs "programming languages are just interfaces around hardware-driven bit manipulations").

Your goal, whether learning or teaching, is to shine light into all the nooks and crannies of a complex topic at all levels of abstraction. Imagine you're explaining the topic to an advanced coworker, and then imagine explaining it to a layman. Try this exercise for one hour, as you're showering and getting ready for the day, and you'll find yourself with a deeper intuition around a topic that you once had only a rote understanding of.