The Power of Teaching

I’m a beginner. I have been coding professionally (and for that matter, seriously) just for over a year, which in perspective is not very long. I see my friends who code, my seniors, co-workers, strangers on the internet, the authors of the books I read, etc… all as my teachers. And me, I am the student.
A year ago when I set my first set foot into the world of software development, there was a co-worker who, despite having a million things on his plate, always answered every stupid question I had. On days I didn’t ask any question, he even actively checked up on me to make sure I was doing ok. I asked so many questions, people dubbed him my “rubber duck”.
“How do I override a variable?” — me, 2016, while eating my bananas
Frankly, I felt that without him, I would have been out of the door any moment. A year went by, and my biggest nightmare has come true: my “rubber duck” announced he was leaving the company. By this time, I was already feeling much more confident in my code, but the thoughts of not having that one person to consult with was still terrifying. On his last day at the company, his final words to me as a coworker blew my mind: “I learned a lot from you”.
Me? Really? What on earth did I have for anyone to learn from? Wasn’t he supposed to be the teacher and I’m the student?… Then it came to me.
Flash back to my last day at my previous job, I asked the CTO in the final moment: “Do you have any advice on how to become a great developer?”. The response: “Keep learning, keep building things… and also, teach others.”
Teaching, as it turned out, is an amazing way to learn. For the past two years or so, me and a couple of friends have been running a local coding meet up in Toronto. Coffee’n’Code, as it is called, is a place for developers of all levels to socialize, code, and share their knowledge with one another. This inspired me to try out something new with the meet up: let’s try teaching people something once in a while. With no idea how I’m gonna pull this off, I made a special event page anyway. And now after having hosted three successful sessions, here are the things I can say about teaching as a way to learn:
- You learn from your “students”.
In my latest talk on Higher-Order Functions, I included a final challenge set to give everyone a chance to try out the concepts right away while it’s fresh. Although I had a few solutions in mind for the challenge, I was struck by the many solutions that the group came up with for my challenges. I thought my solution was pretty good until one particular solution was presented by an audience member. I later studied the code he wrote and despite the rawness of the structure and his initial struggle to figure it out, the idea behind was much more generalizable and reusable than my solution. (for my coder friends out there, the core problem for the particular challenge can be summed up as follow: write a function to derive the second largest number in a given array) - You gain deeper understanding.
This one is quite commonly understood. The process of coming up with how to communicate what I already know forces me to think about it under different lights to find the best way to present the concept. The need to present it in a relatable manner forced me to think creatively, while the requirement for technical accuracy revealed things I did not fully understand about the subject and forced me to study the topic deeper. Just when I thought I knew something well, it turned out I can always know more about it. Not to mention those tough questions you get asked on the spot, better be ready for them. - You gain broader knowledge.
Three sessions in, I already feel that I would run out of topics eventually if I don’t keep growing my own knowledge base. The tech industry moves so fast that without constant learning, you will be obsolete before you know it. I was recently told by a manager at a software development firm that on average, the knowledge of their developers have to be completely replaced every two years. Learning the things that no longer matter is the last thing you want to do as a student, and so the pressure to keep up to date is definitely real for the ones who teach. - You learn to communicate.
Knowing something well and being able to put it into another human being’s mind are two different things. It is too easy to assume that whoever we are talking to knows the things we do, but that of course, is rarely the case. Any given topic is often so interconnected with others that without giving the right context as to what both the speaker and the audience know, it is hard to get your point across. It takes effort to establish a common ground for effective communication to happen.
This is important in settings outside of teaching as well. As programmers, our main task is essentially to put the ideas in our minds out to the world, and source code is simply a mean to do so. The world is not made up of computers, and the ability to communicate our ideas to other human beings is equally important. Whether in the form of writing documentations or talking to our teammates, programmers need to be able to communicate. The code we write may be executed by computers, but they need to be understood by human. Source code is not only a language for machines, but also one for human expression and comprehension. Having the right ideas and being able to express them, are equally important to be a good programmer. - Anyone can teach, and we all have something to learn from it
If I can teach, anyone can. I am not the most social person in the world, not the smartest person nor experienced developer in the room either. Talking to people has never been my strength and I certainly don’t consider myself a good communicator. But that gives me all the more reasons to improve. Knowledge is not an issue, no matter how much you know, there will always be people who know more, and are more qualified than you to give the lesson. But there will also be people who know less than you who can use some of your help (and if there isn’t any now, well there will be before you know it, if you keep learning). We all know different things that the concept of knowing more or less becomes relative on the topics. Even if you don’t recognize it, someone is likely already learning something from you.
It has only been three sessions but the experience I’ve had is amazingly rich. I can’t wait to keep these sessions going and learn more through teaching. Whatever field you are in, if you have read this far, give it a try to start teaching someone something.
If you are in Toronto and want to learn to code, check out our Free Code Camp Toronto group on Facebook. If you are a member and want to give it a try to run a session, reach out to us!
And finally, if you happen to be a Free Code Camp local group leader, give this a shot; more value, more people, more fun! If you want to use one of my slide decks and other materials I’ve made, feel free to grab them here!
