This post is about my talk during PyCon MY 2018. It's a good follow-up post to Jenna's experience in PyCon MY where it was also mentioned. I'll share some of the things I talked about in PyCon MY here for our readers.

The talk is non-technical and beginner-friendly. The audience I had in mind include educators, tech groups, and people or organizations who conduct trainings. Maybe you do it regularly for work, or one time you had to train someone's replacement or a new team member. As part of an organization or a community, it may be because you were invited or assigned the task to share your knowledge. There are many reasons for someone to suddenly find themselves with the need to conduct some training. Participants may be attending for free, paying for themselves or paid for by their company. For trainings where attendees pay, more attendees means more earnings. Maybe some big change happened in the company and you get a huge room of participants. It's better to be prepared.

In any case, having flexibility will be beneficial to your attendees. The challenge with larger groups is that more problems can arise. More people means more questions are asked, and more errors happen. Sometimes, it just takes longer for someone to follow along. Sometimes, it just so happens that there's a lot of that kind of person in a particular event. The larger the class, the harder it is to manage and the bigger the chances of things going wrong. This lowers the overall quality received by larger classes. If we want to increase the size of the class, we sill want to maintain the value we deliver. In startup land or in our tech circles someone eventually asks the question "Does it scale?"

Josef talk

Here are some of the insights from my experience. They can be applied to other things but for my purpose, I improved how I conduct trainings, which allowed me to increase the number of attendees I can handle while maintaining the quality. The insights I gained from my training practice can be summed up into:

  • Better tools - there's a saying about using the right tool for the job
  • Rethink methods - tools we use allow us to change the way we do our work
  • Empower individuals - there's a different between treating the class as one unit vs each attendee as a unit
  • Interaction is essential - make social interaction work for you, not disrupt you

Josef talk

The main tool I use is the Jupyter notebook. I think it's great for teaching. Many talks and demos use it to tell a narrative together with interactive code snippets. When used to teach programming, it speeds things up by removing the need to type everything from scratch and the need to listen to someone in front. It also lets participants play with code more comfortably and let them have a faster feedback loop.

In terms of how I conduct the class, aside from preparing a repository of notebooks that let them progress step by step with my guidance, I prepare them by giving them ways to handle bugs and find their way around problems. This way, they have more confidence while learning. I assure them it won't be easy to break things, but just in case, there's a reset button. I just make sure that they don't feel like they're lost or don't know what to do. At some point, they get a good grasp of using the notebooks on their own. Instead of listening to me speaking in front, I encourage them to go ahead with the other notebooks at their own pace and I get to walk around, which becomes an opportunity for some people to ask me questions when I'm near. The class turns into a group of people with their heads down, working on noteoboks instead of listening to me. I don't hold them back by disrupting their flow or making them wait while I speak in front. This way I can also go around and focus on giving individual guidance.

This method focuses on empowering individuals. We can treat the class as one unit but at the end of the day, everyone goes home and makes their own evaluation about the value they gained from attending. Treating the class as one versus seeing each as an individual opens up an opportunity for the trainer to improve. Aside from delivering a lecture while running some demos, you can also improve out coaching ability. By having both approaches, there's a lot of benefits to the attendees but there's also the benefit of becoming a better knowledge sharer.

As individuals, interaction is essential to learning. Our peers help us understand what we do or don't know and it also prepares us to work with a team by learning how to better ask questions or present solutions. In traditional classes, asking your seatmate can disrupt the class. But with individuals working on their own notebooks asynchronously, problems may have been solved by already or someone may have an insight that can lead to a solution that can help the rest. If ever someone does get disrupted, it's not the whole class.

There are disadvantates to this like the requirement to setup and the need to spend some time learning how to use notebooks. For short sessions, it may eat up a huge chunk of time. For a beginner class, it may take some time before they actually get started. But I believe the advantages outweigh the disadvantages since they can take the notebooks with them and continue with the rest at their own pace. I merely set them in the right direction and empower them to continue on their own. There are notebooks that give them a glimpse of what can go wrong and what they can do about it. Since the lessons are already in the notebooks and not in what I say during the session, what they get out of it depends on their effort. They can't suddenly say "I know Python-fu!" after stepping out of the class but the pave the path and how far they go is up to their effort. I also have to mention that Jupyter notebooks can also work with different languages so it's not just for Python.

At the beginning of class, it starts out more like a traditional class but after a while, we see them working individually with the transition happening as they learn how to use the notebooks. Since they'll be working individually, some people will naturally be faster than others. One interesting thing I realized was that after a training, I know exactly who I would want to hire. Some people would just be ahead of others. With this method, the largest group that I was able to handle was more than 120 people with no programming background.

Josef Monje

Josef Monje


Joined June 2018. Obtained his Master's degree in Data Science from Asian Institute of Management and Bachelor's degree in Psychology from Ateneo De Manila University. Programming was a longtime hobby until he decided to pursue it professionally. He enjoys using Python, Raspberry Pies and Machine Learning.