Skip to main content Skip to main content

5 lessons learnt from teaching beginners to code.


16 November 2020

IMG 3177

Last March, I started teaching with Code First: Girls, an organisation dedicated to tackling the gender gap in tech. It’s a fantastic company with a valuable mission, and they’ve just reached the incredible milestone of teaching over 20,000 women to code for free.

I took their web development course in my final year of university; up until then, I hadn’t had a particularly positive introduction to coding. My course at CFG changed that, and was a big driver in my decision to become a software engineer.

Learning in an environment like CFG — and in my current workplace, at Beamery — made a huge difference in my own growth as a developer. Now, two years later, I am back as an instructor in the course. I can put to use the insights that both experiences gave me, and share some of the mistakes that I find it easy to make when teaching someone to code.

  1. Do not assume knowledge level!

There is a huge amount of vocabulary specific to coding that we use every day and that probably sounds completely alien to beginners, especially if they aren’t from a scientific background. I once saw a coding instructor launch into a long explanation about loops and iterating over arrays, without first considering that the student had never used the word ‘iterate’ in that context before. The long and detailed explanation was doomed from the start. It’s always helpful to take a minute to make sure you get a sense of your student’s understanding of the language or the context before you start an explanation. It will help ensure that your material strikes the right balance: perfectly understandable without being patronising.

In my web development course, explaining something like the DOM as a ‘tree’ with ‘parents’ and ‘children’ and ‘siblings’ is very difficult to contextualise to someone who has no reference points around the subject. Using visual examples, like a demo with dev tools, or visual resources such as Maggie Appleton’s React metaphors when teaching React, is hugely helpful in giving context to trickier concepts.

2. Create an environment open to questions

Students are never going to learn if they don’t feel like they can ask questions, and studies prove that encouraging questions helps both learners and teachers progress. It is incredibly important that they feel comfortable asking questions not only for themselves, but for the benefit of the other students as well. This has become more challenging with a shift to a remote class environment. Asking questions publicly on a Slack or Discord channel can be a lot more intimidating than doing it one on one, so it’s important that you make it clear to students that asking questions openly is beneficial to both them and the rest of the class, and that they shouldn’t feel afraid to ask anything ‘stupid’Other instructors in CFG have experimented with breaking down larger courses into smaller sub-channels so students are encouraged to post questions and work together in smaller groups with positive results.

3. Encourage self-study

Although it’s incredibly important to create a great culture of question asking, you also do not want to encourage students to be overly reliant on the instructors for their own learning. Applied googling is a skill they need to be comfortable with. If a student is simply looking for a definition that can be answered with a quick search, it’s great to encourage them to do their own due research before coming to you. It’s much more beneficial that they become self-sufficient learners going forward into their careers. It makes them far more likely to progress and advance once the course has ended. From a practical perspective, it’s also much more time-efficient for instructors teaching 40+ students remotely, as it lets them spend more time on the more “ungoogleable” problems. A great way to encourage this without compromising on the openness of your learning environment, is to set homework or extra exercises that students can work on outside of class without the assistance of the instructors.

4. Adapt to remote culture

Teaching a class remotely is a completely different experience. You can’t walk around a classroom and check on how each student is doing, so you have to be able to gauge how the class is dealing with the content in different ways. Setting an exercise for students and waiting in silence on a call can be a weird experience. There are many different ways you can use tools to improve this, like creating breakaway rooms on Zoom for smaller groups to work and discuss together, or using in-app polls like Polly in Slack to check anonymously how students are progressing through a problem. We often use simple methods like asking students to react in emojis to a message on Slack with how they are finding a problem, which is a quick and easy way to gather data and help you adapt your lesson depending on the results.

5. Relate to real-life developer skills

It’s easy to overlook some of the aspects of a developer’s day-to-day life when you’re teaching a basic coding course. Making students aware of skills outside of actual coding can help immensely if they want to pursue a career as a developer after a course, especially with the interviewing process for a first role. Common practices like code review are really easy to add into a lesson and can get students familiar with the practice of critiquing and receiving criticism on their own code and being able to explain the choices they make in their work. Other more practical skills, like Git, should be added into a course early so students can not only learn how to code, but also be able to practice using git to upload and share their code. This is also a key way to make group collaboration easier for the students and encourage them to work together.

These five points might sound obvious to some teachers, but it’s amazing how often instructors can overlook the experience of the student when teaching coding, and instead get caught up in just delivering the material. Having a better understanding of your students is ultimately going to enhance their learning and make them better developers.

I’ve certainly learned a lot as a teacher and it’s absolutely made me a better engineer. I would encourage anyone who is interested and available to volunteer some of their time to teach others to code.

— -

If you want to get involved as an instructor with CFG, you can learn more about it here. You can also look up CFG’s Data Science, Web Dev, Python or Career Switcher courses here. If you are interested in joining the excellent team at Beamery, check out our open positions here.