Teaching is hard, but worth it


Last week I had a pleasure to teach JavaScript to a group of 11 people who were completely new to web development. It is not like they’ve had some experience with any programming language before. They were literally new to it, new and clueless.

My workshops were part of Coder’s Lab 4-weeks-long course named “Become a Front-end Developer”.

Some may say that it is not possible to teach a person how to do “web development” in such a short period of time and I totally agree with it. But where does that magical point beyond which one knows how to do “web development” lay? I don’t know an answer to this question, but I think that those 28 days are enough to plant a small seed in a brain of a person who came there willing to learn — and that it will grow enormously if done correctly.

And this seed, will push them forward to learn and improve their skills for as long as necessary to become one of us, one of the web developers.

What makes me think that? There were people in my classroom that only after 2 weeks gained enough knowledge and determination to start their own small projects. Really basic and simple projects, yes, but those were the projects of their own, a foundation upon which my apprentices to the art of code could develop themselves, their skills, their determination further and further.

But this text is not really supposed to be about my students, although without them I certainly wouldn’t be able to write it. It is rather about myself, and perhaps even about every person that has ever had an opportunity to be a teacher, a professor, a speaker, name him or her however you want. It’s about people who had an opportunity to pass on their knowledge to somebody else.


Complexity is relative

First and foremost I have to admit, that even though I already spoke on meet-ups, conferences, wrote plenty of articles to either web or paper magazines and created good amount of tutorials, such long workshops were something completely new for me.

Not only because of the target group that I was working with, not because of the workshops’ length, but mostly because of the way I had to pass the knowledge I had to them.

You have to teach them from the ground up. What types are, expressions, variables, assignments, booleans, how is that possible that functions can take arguments, why 0.1 + 0.2 !== 0.3 or how is that possible that there’s even Math or Date objects in the browser. Things so simple, so obvious to us are complete not understandable to people who are taking their fist steps in the world of web development. Believe me or not, no matter how good at programming you are, describing a particular case to someone who decided a day earlier to become a web developer… can be tremendously hard and you have good chances to fail even if you think you are explaining this or that in the simplest words there are.

The hardest questions are not the most complex ones, you know you can handle those. Scope, hoisting, currying, modularisation, scaling, performance, memoization, those are just silly sounding words, but when you explain them to someone, you can be most likely sure that you are talking to someone who will find their way to understand your words. But if you are not able to explain what a function is, or what even variables are, then what’s the point of moving forward? You can know all your high level abstractions, but if you don’t know what’s underneath, then you will have problems explaining them to newbies. “If you can’t explain it simply, you don’t understand it well enough.” — Anonymous (there’s no consensus about source of this quote)

Even if you have more than 10 years of experience in web development like I do, it sure doesn’t mean that you won’t learn something new while teaching others, even if those are the very basic. “In learning you will teach and in teaching you will learn”, as Phil Collins sings. So for sure it will be completely the other way around. You will learn along your students, and you will learn a lot.

Some language quirks that you had no idea about? Your students will for sure find those while writing answers to exercises you prepared for them. It’s all because of their inexperience. They will try to get it working in any way possible, just like children who don’t have their minds formatted into particular patterns as adults usually do. And that’s what will allow them to break your basic way of thinking, your understanding of the problem and make you think outside a box.

New students are kinda like huge, unintended QA team.
They will try to break things, and they will eventually do that.

It’s because of them that I had Mozilla MDN documentation and JS specs opened for 8 hours a day. I cannot recall when I did that last time to read something page after page and make sure that I understand how something works.

By doing that, by reading through all the basics over and over again to make sure that you teach them something that’s 100% accurate, you’ll get those informations so deep in your head that that you won’t forget them for a long time.


Benefits outweight the costs

If you ever have an opportunity to become a teacher, even for a day, do it. No matter whether you won’t get paid a lot (or at all), whether it will take days out of your life because of time needed to prepare content.
And even when you know that there is enormous amount of stress that comes with teaching (yes, it does, especially at the beginning) — do it.

Teaching is freaking hard, I had no clue how really hard it is. Your knowledge is unique, and you are probably one of a few people your students know that possess it. Now, once you’ve realised that, try to walk in their shoes and think of how long or how much effort it may take to become someone like you. Look back and try to see how much effort and time it took in your own case. They are as frightened as you are as a teacher, and perhaps as a newbie you once were. But no matter what remember one thing:

YOU are the teacher, and they are the students.
They will see you as an expert, so behave like one, like a professional.
And show them that you’re someone whom they can trust and spend their time
on listening to something you want to say.

Teaching others, helping them grow was honestly one of the greatest experiences in my life. Seeing all those people day after day, seeing how they start to understand some concepts and change the way they think and solve problems.

And that’s why I’m now focusing on becoming a consultant, a mentor, a teacher in my own future. Whether it will be in programming or personal training, health and nutrition, it doesn’t matter, because as of now, I already know that what I want to do is spread the knowledge and give everyone an opportunity to learn as many things as I’ll be able to teach them.


Find people that will inspire you

No matter how knowledgable you are, there are always things to learn. To make this experience reacher, you have to find people that will inspire you. Those are the people that will make you wiser, more determined and focused on your goals.
Because of that I would like to say thank you to Kyle Simpson @getify for all the work he put into his great YDKJS series. This is the exact book that helped me to prepare and learn how programming language should be explained. Subject after subject, part after part. As well as to Henrik Joreteg @HenrikJoreteg for his Human JavaScript series. It really is written for “Humans”, and it helped me to learn how to explain things in the simplest words possible.

Kamil Ogórek