I’ve been doing quite a bit of teaching lately.
I really enjoy it, but it is not always easy. Many people have asked me what I think makes someone effective at teaching and I have given it quite a bit of thought.
I don’t think there is one simple answer to this question, so I’ll try and approach it from one perspective – the way I view it.
Programmers teach the computer
If you are a programmer, you are already a good teacher. You just may not know it yet.
When you are writing code you are basically teaching the computer different algorithms. Of course the computer never really learns what you are trying to teach it, but the process of teaching to humans is very similar.
Think about the steps to write some code. We usually have to start by fully understanding a problem or algorithm we are trying to solve. We can’t teach the computer to solve the problem if we don’t understand it ourselves.
Then we have to take this big problem and break it down into bite-size chunks. We take each chunk and we translate that chunk into the language the computer understands.
Teaching effectively to humans is very much the same process.
When I am preparing for a course I am doing, I spend a good deal of time first making sure that I have researched the topic and understand it well myself.
I may read a few books, play with some code, implement a project or whatever it takes to get a very good grasp of the subject matter.
After I feel like I have enough knowledge to talk about a subject, I spend some time breaking down that topic into smaller pieces that need to be understood or digested in order to understand the whole.
The final step is to take those bite-size chunks of knowledge and translate it into the language of the students or target audience.
You always have to know who you are targeting when you are trying to teach something. Sometimes you can target multiple audiences, but you have to know who you are trying to target so you can know what language to translate the subject matter into.
Translating to your audience
One method I frequently use to translate my message to an audience is the analogy. I find that if you can take a thing that someone already understands well and map it to some concept you are trying to convey, you can accomplish the task with much less effort and a much higher chance of success.
As humans we tend to always relate new things to things we know. It seems to be a built in process of how we learn. Whenever I am teaching a subject and someone makes a statement like:
“Ah, I see so it’s just like this _______”
Then I know that they are grasping what I am trying to convey, because their mind is mapping the unfamiliar to the familiar.
I usually try to find an analogy that can map in some way to what I am trying to teach. It doesn’t even have to be an exact match.
For an analogy to be effective, you just have to take some concept you are trying to convey and map it to one or more aspects of some other thing that is well known.
Analogies are kind of like Velcro. The two velcro surfaces don’t have to match up exactly, but as long as there are enough “hooks” matched to the “fuzzies,” it’ll stick.
It is all about simplification
The most important thing when teaching is to take something that is complex and to simplify it down. Part of that simplification process is breaking things down into bite-size chunks. Part of it is to translate it into your audiences language. Analogies can go a long way to help you accomplish both.
Ultimately though, you are just trying to take something that might be difficult to understand and make it into something that is easy to understand. A large amount of what I do is repackaging.
I’m pretty good at reading technical books and sitting down with problems and working them out. I enjoy that kind of thing. Many people aren’t or prefer not to take the time to do it.
My job as a teacher is to take those forms of learning that are complicated (reading boring technical books, hunting through APIs, trial and error, etc.) and repackage them into something that is much more simple.
Often the real world has all the information out there that we want to know, but it is not packaged in a way that is easy for us to consume.
A good teacher can take a bunch of hard to peel fruits with pits and stems and skin them, chop them up and make a fruit salad you can eat with a fork.
By the way, I just got my Java Fundamentals course published on Pluralsight! Check it out if you are interested in learning Java.
As always, you can subscribe to this RSS feed to follow my posts on Making the Complex Simple. Feel free to check out ElegantCode.com where I post about the topic of writing elegant code about once a week. Also, you can follow me on twitter here.