On teaching coding

And by teaching, I mean being an instructor for coding workshops

intro-at-emms-tech-workshop credit: EMMS Technology (Mariana Bocoi)

My Python workshop experience

I’ve done quite a bit of teaching recently

Since September 2017 I’ve found myself involved in teaching much more than I had before. I had helped out, coached or organised tech workshops at meetups or conferences. But interestingly I had beforehand (while training as a researcher) decided I didn’t want to teach (and only focused on research).

Fast forward a few years, and I’m out of academia for good. I still don’t consider myself a “good teacher” (whatever that means), but when I first met with J++ (my current employer) they offered me to freelance for them and start by helping to teach an introductory Python course for journalists. I jumped on the occasion! Since then I’ve helped teach three Python classes (and soon five classes) with J++ so far as a secondary instructor. I feel more comfortable in one-to-one interactions in the classroom rather than standing in front of the classroom.

I’ve also helped teach workshops with Mariana Bocoi (on Serverless, Git, at Pink Programming, Hack for Sweden… - also Mariana is amazing!). I recently taught an introductory Python workshop at EMMS Tech and helped teach two introductory Python workshops with Pink Programming and Region Skåne (in case you don’t know it’s the South most region of Sweden where Malmö is).

Lessons learned

I talked at PyCon Sweden 2018 back in December about my experience at J++ including teaching Python to journalists. In this type of courses it’s really important to:

1) plan content suited to people’s needs (in our case the material is directly applicable to journalists because it was created by my colleagues who are journalists),

2) keep things as simple as possible,

3) adapt the content to people’s learning speed and ebergy level.

At EMMS Tech’s first event I ended up leading a beginners Python workshop. Aside from the stress and excitement of our first event aimed at women and girls of colour in Stockholm, I got to realise I could actually lead a coding workshop. It was indeed a short workshop and to make things easy I decided to:

4) use an interactive online tutorial instead of starting with installing Python.

python-workshop-at-emms-tech credit: EMMS Technology (Maryam Arai)

The two Python workshops for newcomer women were full-day events and a first for Pink Programming (no idea if we’ll do more in the future). Our job was for the immigrant women present to feel they could apply to an one-year coding free course called MatchIT. It is a really cool EU funded initiative to integrate newcomers to Sweden and provide workers to an industry lacking employees. As a secondary instructor I focused on hovering* over the class to make sure all participants were keeping up with the course and the new concepts “thrown at them”. As with the courses with J++ it was obvious that

5) classes of around 10 people where most are complete beginners benefit greatly from having a main instructor and two secondary instructors.

People learn at different speed and have different level when they come in. For that reason it is challenging to prevent some from falling behind when others are getting ahead. All I can think of to remedy that is

6) preparing resources for participants who are faster/already know a bit coming in.

But then it’s still hard to reply to questions of such a diverse group. I tend to focus on people that would be left behind because they need the support, while the ones ahead are usually more comfortable with getting answers using a search engine.

python-workshop-with-pp-malmo credit: Pink Programming (Vanja Tufvesson)

* Hovering over people basically means going around the room and stopping behind people to see what they’re doing. It can potentially feel weird or creepy to participants. However I find it the best way to see how people are doing and help then understand a concept or an exercise even before they can formulate a question and hopefully also before they get too frustrated.

Note: I’m not judging, if people are doing emails or texting then I just go away and come back a few minutes later.

My non-scientific opinion is that the side effects of learning (to code) are excitement and frustration. And as you can see my beautiful plot below the key is to manage a person’s learning experience so they get as much excitement as possible, but step in before too much frustration comes in (“ideal limit” in yellow).


Spread the code!

Yes, everyone can code! Although not everyone can be a “good” developer, but that’s not the point here. Share this knowledge and see people have a blast learning something knew and getting exciting ideas for projects. It’s not about using Machine Learning algorithms for everything, but automatisation of boring tasks, to decrease human errors and increase repeatability is a good start! Then there’s ultimately the potential of creating products and services that solve actual problems in different fields.

Several times now have people asked me with surprise (and even a touch of mockery) why teaching journalists to code. One day I’ll need to be better and get rid of this touch of mockery in my own voice as I answer them. But really how could one not see that the only way to maintain a semblance of democracy depend on journalists having all the tools possible to keep powerful people (wether in government or in corporations) in check. And for this they need to query, gather sometimes large amounts of data and analyse it in a reproducible way and visualise it for everyone to understand.