Lessons I’ve Learned by Teaching Programming
Tags: teaching, career, productivity, training
Published: 2020-05-13 09:54:42

I have been working as a software developer for almost a decade. During this time, I often found myself explaining technical stuff to my pears, onboarding junior developers or having to explain tech-related topics to non-tech people. Even though I never received an education or training about teaching, I thought of myself as being good at explaining complex stuff in a simple way. I considered teaching programming but never tried to switch to that track until recently. Beginning of the year, I wanted to have this kind of experience and contacted [HCS](https://hamburgcodingschool.com/en/) for a possible trainer role. First meetings were pretty smooth and after a trial lesson, we agreed that I will be taking care of web development course.

After completing my first course with amazing people, I started reflecting on the experience. As much as it was very rewarding and successful, there were things to improve. Attempting to write down some suggestions for myself led to this post.

  Without further ado, here are some of my ideas about teaching programming (or maybe just about teaching in general):

> To make this post easier to read, I divided original article into three parts. This one is focused on preparation phase prior to courses.

## Are you ready?
This part is for the things you should do before the course starts. As soon as your course is set and planned, you can encourage yourself to step into preparation.

### Know your audience
You need to know who your target audience is. This will change the whole content and method of your course. Of course there is a certain group of customers to whom the courses are aimed at - you know this from the beginning - however not all participants will be in the same level. So it’s a good start to know your students’ level.  

You can do this simply by sending a small survey where you ask certain questions, like if they’ve ever coded before, what they think their level is on certain languages etc.

Creating a skill matrix would also work for this purpose.

### List your ingredients

In short, you need to know which topics you’ll talk about in the particular session. Going through the content you have planned for yourself creates a big advantage. It allows you to see if your topics are overflowing your time or if you have too little to go over that day. Essentially it allows you to plan your time sufficiently.

![](https://dev-to-uploads.s3.amazonaws.com/i/znx9ygjvltutkhyyp1jr.png)*Ingredients matters.<small>([image source](https://www.trainingjournal.com/articles/opinion/ingredients-innovation-process-people-culture-courage))</small>*

### Say hello to your new friends

The best way to break the ice is to welcome your new friends for the tough journey prior to the first lesson. This will create the communication channel which hopefully lasts longer, maybe even after the end of the course.

Choose your preferred channel (could be email, slack) and show them it’s ok to contact you anytime they need you. 

You can also use this opportunity to hint to them what you’ll start working on, at the first lesson and ask them to install required tools or do some reading related to upcoming topics. This will save you so much time especially for the first class.

### Prepare homework and exercises

We will go into the importance of giving exercises during the lessons in the following section but you should know that you will need to give many exercises during the sessions and always give homework at the end of every day. Therefore it’s a good practice to prepare them before the lessons according to the topics you’ll cover.

It would be a great idea to give lego style homework that will create a tiny product, tool or website in the long run. For example, you can start building a website and with every homework you build one part of the site by using what you taught in the lessons. This will motivate the students and show them they can built real stuff with what they just learned.

![](https://dev-to-uploads.s3.amazonaws.com/i/7ls7elhalzj779sfc5vw.png)*Build meaningful homework with lego style.<small>([image source](https://www.dailymail.co.uk/news/article-2288869/Crate-Legos-spills-West-Virginia-highway-causing-major-delays.html))</small>*

Also don’t forget to challenge them with every homework you give. It could be even something you haven’t taught yet, it’s always good to push them a little bit more than usual. Isn’t this also how a [developer’s life looks like?](https://9gag.com/gag/av80j2Z/being-a-developer-is-not-stressing-at-all) One challenge after another… Anyway, let’s keep it on track.

***

This is it to get in shape for the course. After following the titles above, I easily welcomed the participants and had a quite productive first lesson.

> What do you think about the preparations phase? Do you have any recommendations? Let me know in the comments below!

***

This article is originally posted [on my blog.](https://ugurtekbas.com/lessons-ive-learned-by-teaching-programming/)
#### Say hi to me [on Twitter!](https://twitter.com/ugurtekbas)