The best way to learn is to teach.
You've heard many people say this. But is it true?
I knew teaching had benefits. For example, if you teach, people will know you exist. People may be able to learn from your experience. But learn? I was skeptical.
But I realized the statement is true. You learn best when you teach. I can vouch for it after teaching frontend development for many years.
This article explains my thoughts on why teaching others help you learn.
To understand why teaching helps you learn, we have to first talk about learning. You can't teach something when you haven't learned it.
The learning process
Let's say you want to learn JavaScript. All you know is you're on one side of a cliff. The endpoint is on the other side of the cliff.
You don't know how to cross the gap (yet).
When I tried to learn JavaScript, I read through countless books and tutorials. I even looked at source code to see how people coded. I also searched for best practices.
Each material I come across acts as a tiny foothold for me to get to the other side. Some materials are easy to understand; some are hard.
Sometimes the footholds were too wide apart. I miss my step, I fall into the valley, and I try again.
Sometimes I hit a wall. I don't understand articles I read. I fall into the valley, and I try again.
After trying enough (and losing enough lives), I toned up my leg muscles. I can jump a little farther and higher than before. I try the articles I couldn't understand again.
And sometimes I succeed in getting past the stage I was stuck at.
And I get to the other side.
Only to realize there's more to go...
But that's okay. There's always more to go. That's what makes learning fun.
Teaching helps you gain perspective
I didn't know how far I've gone until I started teaching JavaScript. I thought I knew very little. Not enough to be "an expert" yet anyway.
But it turned out that I knew a lot. Enough to even make a super comprehensive course on JavaScript.
So here's a side benefit to teaching.
When you learn, you focus on moving from cliff to cliff. You have no idea how far you've gone because you don't stop to think.
But when you teach, you stop.
You pause, you look backward, and you realize how far you came. You gain perspective, and this perspective gives you a confidence in your abilities.
You know more than you give yourself credit for.
The teaching process
When you teach, you try to help someone cross the cliff you crossed.
One way to teach is to direct people to resources you went through. They will face the same difficulties you face. They'll hit walls; they'll miss their steps. Hopefully, they'll gain enough strength to move past the obstacles themselves.
But this isn't teaching. This is simply... pointing people to the resources you used. You can help shorten their learning curve, but you're not teaching. Not yet.
To teach, you walk backwards. You stand beside the student and help them through the gap.
You can point them to a tutorial while you wait for their questions. Sooner or later, they'll ask questions that surprise you, like "Why this and not that?".
Sometimes, one is better than the other. Sometimes, both ways are possible. And you learn there's another way to cross the cliff.
Sometimes, you think of a better example to help them cross the chasm easier. When you do this, you build another foothold for yourself.
That's why you learn when you teach—you build more footholds.
Maybe one day, when you've answered enough questions, you build so many footholds that you fill the gap.
That's when your knowledge is rock solid.
There's no need for footholds anymore. You can simply walk across. Students you teach can walk across too.
Who can you teach?
You don't need to be an expert to teach. You can teach anyone who wants to cross the cliff you crossed.
It's best to help immediately because you know how it feels to go past the cliff. You know danger spots where students need to be aware of.
Sometimes people will ask you questions and you go, "I don't know".
That's okay. You may not be able to fill up all the gaps yet. But you know you're missing a piece. You can fill it up later by doing more research.
Sometimes you won't be able to fill up the gap immediately. There are too many things you don't know about.
That's okay too. Maybe you'll find the block of stone you need as you progress to another cliff. It'll be plain as sight.
When you see it, you can go back and fill it up.
That's another reason why you learn when you teach—you see gaps in your knowledge.
Want to learn to teach better?
Some developers are horrible at teaching. They'll throw resources your way and ask you to figure it out yourself. Others talk in alien FOOBAR language that you'll have a hard time understanding.
Don't blame them. They're doing the best they can. Maybe they're not interested in teaching. And that's okay.
You can teach well if you want to.
I know a thing or two about teaching after writing tutorials for years. I want to share these things with you.
Will you be interested?
If yes, I'd love to hear:
- Why you want to teach
- What are your greatest obstacles to teaching
Can't wait to hear from you in the comments below :)
Top comments (23)
I agree. I often tell students to explain a concept or how they got to a solution in their code to the person sitting besides them. The greatest obstacle is pretty much communicating using metaphors/examples that are most relevant to the code block/concept.
1) I am the only senior developer, on charge of 4 other juniors. They're great people, eager and willing to learn. So I want to help them as much as I can.
2) Patience. I get frustrated when I have to repeat myself.
Have you thought about writing things down so you don't have to repeat yourself?
Yeah I definitely need to set up some kind of manual of operations or something
Nice article and illustrations, Zell. I often use interactive method in my classroom, because its the most effective way to teach and learn. BTW I recently took a course called "learning how to learn". Author claims that you can read some info and might think that you understand it, but in fact it's not true. So she suggests to discuss a book or an article you recently read for better memorization.
Would love you hear more about this. I love helping others get better. My company almost always has some short-term interns around that I would love to help out.
However, I never seem to connect with them so that they 'get' what I'm trying to tell them. Of course, it's almost always an informal setting, we need a task to be completed which I've done many times but they have never even seen the system they need to perform it in.
Tried talking with them and writing out a sequence of actions in steps. But always end up 'showing' as in, taking control of the pc and doing the task like I would do it. Which is somewhat awkward for both of us.
Being quite socially awkward myself probably doesn't help.
I'll certainly read up if you end up doing more of these pieces.
I'll write more :)
Your question pertains more to training than teaching, but I'll see what I can do.
I love the article. I have always thought to myself that the best way to learn is to teach. I love teaching my classmates about web development, mathematics, and algorithms. I give them little exercises and ask them to explain their work. In the end, they even provide me better alternatives and additional concepts that I even didn't know about it. It gives me a "WOW" factor and this is my most favorite part when teaching and learning.
That's amazing. Thanks for sharing!
Although mine cant be termed as teaching .. I now write blogs related to git version control . linuxfromanoobie.wordpress.com . The motivation was similar . Learning git was confusing at start , i wanted to make someone easily pass through those layers and meanwhile learning more about it
You can teach through blogs! That's called teaching too.
This is a great post! I've always thought teaching what you have learned is the best way to solidify your understanding of a topic and you may even get a question along the way that makes you think in a way you wouldn't have otherwise (or even stump you and you need to do some extra research). We can learn as much from the students as they learn from us.
I have wanted to start a tech group in my area (and hopefully eventually a tech training company) that meets up and we teach each other about an area of interest to us. I have not gotten it started yet as we are in the process of relocating and house hunting, but I want to soon!
Let me know when you start one :)
I'm learning javascript myself at the moment and it's super hard for me. So I do want to teach or talk about certain projects that helped me learn and also to not make the mistakes I made! Hopefully I can do that soon.
You can do it already.
I would like to teach because of these two reasons:
Yes I believe you learn when you teach. So I wanna have a solid understanding of what I already know. Solid as I can explain what I know in a really understandable and simple form. As Einstein said, "If you can't explain it simply, you don't understand it well enough."
For me, teaching is the pinnacle of every career. You had already the chance to explore every knowledge in the craft of your choice so it is then your chance to share it to people who want to take your path.
My greatest obstacle is my communication skill. I cant construct my sentences well enough for people to understand the concept I am explaining.
It seems to me your communication skill isn't lacking as badly as you believe it to be. I can understand you well from your comments.
Can you give an example of a problem you encountered?
Perfect article,Frankly you bring me back When I was learning English I was using the same method.
I can't wait to read more articles of yours