5 Things I’ve learned teaching 1000 people how to code
The best way to learn is to teach!
In a Saturday morning a few years ago I would be in a classroom, teaching people Arduino. All sorts of people. From engineering students such as myself to basically anyone interested in programming or tinkering.
The reasons why I started teaching were mostly related to being bored by an engineering course full of theoretical classes and few hands-on projects.
The reasons why other people came to my lectures, I was never able to pinpoint an exactly. But I definitely had a rough idea, and I’ve learned so much more than I expected from them. The first thing I found out was
Want to learn something? Find a real problem to solve with your new-found knowledge
Most students would already come to class with a problem they wanted to solve. Maybe they wanted to build a self-watering garden. Or to improve their home-made beer by having temperature sensors and displays. Regardless of the specific reason, I would see that people really fond joy in programming and building their own stuff.
Solving a real problem that you have beforehand will motivate you more than any sort of example project from a book or online course. I could see the light in my student’s eyes as they were discovering things as simple as
if statements and
for loops and realizing how each of those would fit into their problem and help them solve it.
“Study hard what interests you the most in the most undisciplined, irreverent and original manner possible.” — Richard Feynman
Every question is a mystery
I’m not trying to say that answering questions is intrinsically difficult, but figuring out why people have them kind of is. No question is random. Whenever someone asks a question, you’ll have to discover how concepts depend on each other and walk through them until you find the missing link. If, for example someone does not get why you would have to write multiple
if statements instead of a single
if else-if else to check for conditions they probably don’t understand completely that these exist to account for excluding conditions.
This really forces you to have a map of every concept involved in your head, which in turn leads you to a higher level of understanding of whatever you are teaching. This is also why simply writing or recording video is one thing and interacting with students and answering questions is something else entirely.
Want to teach something? Let your students think for themselves
This is related to the Every question is a mystery point, but backwards. When someone asks you a question, you walk through the concepts in order to find out which one is not completely understood.
But you can also provide the concepts needed for the answer except for one, and let them build that puzzle with one piece missing. Presenting them that one missing piece once they have it cornered will make an impact and surely will make it stick.
For example, when teaching what are flag variables, present a student that already knows variable assignments,
for loops and
if statements with the challenge of finding out if a certain element is in an array. They will probably come up with this variable that indicates that the element is in the array, but presenting that as the more general concept of a flag variable after they’ve come up with on their own will make a much larger impact, not to mention that it will increase their confidence as they’ve (kind of ) figured it out by themselves.
Also try not to talk non-stop. That’s just boring.
If learning by itself already makes one feel empowered, building something that you can show other people can really amplify that feeling and keep you going
I’ve had many students ask me specific questions and also my opinion about their projects, their strategies and so on. Having other people’s input on whatever you’ve built is something that can help you motivate yourself but also provide you with a new perspective on how you can improve or extend it.
It’s important to notice here that although you might not feel confident enough to show it to other people, having an opinion other than your own can create an important loop of
- You work on your stuff until you think it can’t get any better
- You show it to someone else and you realize it can definitively get better
- You probably have to learn something new in order to upgrade it
What I cannot create, I do not understand. — Richard Feynman
Plan first, teach later
Overall, teaching is not as hard as it seems once you have everything planned and loosely scripted in your head.
Once you have a sequence of concepts and examples, questions people may ask become increasingly predictable — to the point of you being able to actually “read” your student’s minds.
Remember this has nothing to do with how much you know about the topic you are teaching. Who’s never had an expert researcher/professor at university that just sucked as a teacher? Most of the time, those guys just don’t put the necessary effort into coming up with a clean, logical sequence of concepts presentation and examples beforehand.
Teaching is tiring — but highly rewarding
At the end of the day you’ll be exhausted, but also absolutely satisfied. Once a good lecture is over, the feedback you get from people is instantly rewarding. Knowledge is power, people really get that and are usually grateful for it. If you ever have the opportunity of teaching one or multiple people, I highly recommend it!