Self Reflection: How To Run Coding Sessions As A Volunteer

After almost 4 months of volunteering, I've learned that running a weekly session for one volunteer is too much. Also don't try to teach big topics that span over a few sessions, because people will drop in and out. They will struggle after missing sessions and either stop attending or come in feeling very lost the next time. People love coding games and challenges instead of tasks with vague requirements like "make a website that uses HTML form". Going forward I'm going to try smaller bite-sized sessions so people can drop in and out more freely.

Mistake 1: Weekly session is too much for me

I didn't think it through properly when I signed up and agreed to weekly sessions. I thought 1 hour (if we overrun then 1.5 hours) a week is not a big deal, I am sure I can make up time for that. Oh man, was I wrong! I forgot to take into consideration the time for planning each session, and manage the communication side of things as well.

What ended up happening was I'd spend 2+ hours on preparing the slides for each session, creating exercises and solutions too (because not everyone can attend every week so they need good material to keep up). I'd then send out slides before the session (due to some people prefers to print out the slides for the session). I'd also remind people about these sessions and answer any questions. Sometimes the session will overrun and end up being close to 2 hours instead of the 1 hour I initially planned. I don't mean to blame anyone, these are realistic expectations, I just didn't consider them at the start. Anyhow, I was spending close to 5 hours each week. This was eating up quite a lot of my free time, especially given that I have a 9 am - 5:30 pm day job Monday to Friday.

If anyone is thinking of volunteering, as I've mentioned in my volunteering to teach people to code post I think it is a great thing to do. I strongly recommend it, not only because you are doing something to help other people in your community but also it will help you in so many ways too. My advice here is to try to give yourself some breather room by not committing to do it weekly. I think participating bi-weekly would be okay, but maybe monthly would be more sustainable. Of course, it very much depends on what it is that you do. If all you have to do is turn up on the day and have no other responsibilities then go for weekly if you can make the time. But since I am a one-man team, weekly is too challenging.

Mistake 2: Don't aim for the sky

Another mistake I made was to plan out 4 months worth of session and set out a big goal "to teach people with no coding experience the basics web development". This means teaching them about HTML, CSS and JavaScript, so they could make a simple web site at the end. I think for a small number of attendees, they managed to reach the original goal. But for most people, it wasn't the case.

Smaller and independent sessions are much better for this kind of free sessions. It sounds weird to say, but because it is free people feel less strongly about attending each week because it is free. If they paid for the course then they would push themselves more to attend I think. The lesson learned here is: don't expect people to turn up each week. It is probably not their fault, things come up sometimes. It probably also didn't help that I was running the sessions on Wed evenings.

Going forward, I'm going to plan bite-sized sessions with more realistic learning goals. My current plan is to only focus on teaching people JavaScript and show them how coding/programming works instead of teaching them about the whole web. This will allow people to drop in and out of these sessions. If they miss a few, it is no big deal they can still follow and learn. Whereas the old format means if people miss one session, it is very hard to follow the next session. This often means they'd drop out completely and stop attending future sessions. For those who are more motivated, they would struggle a lot more.

Mistake 3: Specific challenges are better

It shouldn't be a surprise really, but people loved the Flexbox Froggy exercise. I was so amazed at how many people managed to finish all 24 levels! I just want to remind you these are people who have very little coding experience and this is the second session on CSS. Everyone needed a little help, but I was still so happy almost everyone got through it all in less than 2 hours that the session after I bought snacks for everyone to reward them.

In comparison, the exercises I created myself often would confuse people or just see a much lower level of engagement in general. I half expected it, because it takes time to create a good exercise and I was already spending nearly 5 hours a week at this point. So, unfortunately, the quality of the exercises wasn't as high or as fun as something like Flexbox Froggy.

In the future, I will use one of the many code challenge websites (probably codewars) and in each session, we will do some of the challenges together. Then people can go home and do some in their spare time if they like. It is gamified, so people will be more engaged for sure.

Don't let this put you off

If you are thinking about volunteering, please don't let this put you off! This post is a personal reflection and how I want to improve the sessions. It is still an amazing experience for me and I would strongly recommend it! If that is not enough to convince you, there are the added benefits of something that will give you "moral high-ground" to talk about in interviews :D