I taught two cycles of the CoderGirl Data Science course, and it remains a highlight of my career so far. LaunchCode is a non-profit in St. Louis that teaches people to code for free. CoderGirl (later rebranded to Women+) was a subset of LaunchCode. The program offered six-month long courses broken out into tracks like Data Science, JavaScript, C#, etc. to (mostly) women looking to transition to a career in tech.

Classes met once a week for up to three hours. I taught from late 2019 through 2020, so this pre-dated the rise of LLMs. Students had to apply to be placed in one of the tracks, but the goal of the program was to be able to take students with no experience in the field and prepare them for an apprenticeship program with a local employer. So, the curriculum I taught was meant to take someone who knew nothing about Python, linear algebra, statistics, or machine learning, and get them enough fundamentals where they could continue to learn if they were working alongside an experienced data scientist in a professional setting.

In practice, I found that the students had an extremely wide range of experience. Some had coded in other programming languages before, so learning Python was just a minor syntax lift. Some had STEM masters or PhDs, so their grounding in math was solid. Some were starting from the beginning in all the content. I had several K-12 teachers who were burnt out and looking to switch careers. One woman, in the first class when everyone introduced themselves and said a bit about their motivation for signing up, said that she had three kids and had been a homemaker for 10 years, but found herself getting divorced and had to find a way to support herself. Well then, I thought, we’d better get started!

I found the constraint of needing to teach advanced topics to students with experience levels ranging from beginner to proficient to be highly challenging and extremely fun. Because the goal of the program was to prepare students for an apprenticeship, my goal in every lecture was to get every student to a place where they had an intuition about the material. I didn’t have enough time to get everyone proficient in every topic, but I wanted them all in a place where they could say “I have seen this before and I understand how it works.” I wanted them to have enough understanding to keep training on their own, so that they could, for example, hop on Kaggle and start experimenting and keep learning. A mentor of mine who is an educator told me that “an educated person knows what to do when you don’t know what to do,” and I tried to get my students to that place where they knew how to read error traces, open documentation, and think like a programmer when debugging.

I cared very much about my students, and my primary goal was to help people in St. Louis get into a tech career, and I hope I was able to move the needle on that in some way. However, teaching Data Science for a year was also a massive boost for my own skill set. The machine learning part of the course used Andrew Ng’s Machine Learning Coursera course as a kind of digital textbook for the class. Students would watch the videos and do the quizzes in advance of my lecture, and then I would teach off of the concepts covered in the videos, and we would all review and walk through the quizzes together. That Coursera course has a pretty solid mathematical grounding, meaning that the quizzes involved a lot of linear algebra, meaning that every week I was reviewing matrix dimensions at all the intermediate steps of machine learning steps (neural network backpropagation week was a rough one). This meant that one day at work, when I was tasked with debugging memory errors on the EC2 instance we were using for model training, I could pretty quickly figure out how big of a matrix was generated in our tuning step and how much memory it took up (enough to swamp the instance) and could start figuring out distributed systems approaches to unblock us. In the Python section of the course, I taught a lot of data slicing and filtering, which made me a df.apply() wizard at a time when I was using data prep tools at work that had abstracted that stuff away from me. That really came in handy when I was doing my first FAANG interview for a Data Scientist role. (Also, I spent enough time googling list comprehensions to get invited to try an extremely cool Google programming challenge easter egg.)

Teaching, and especially teaching relatively early in my data science career, made me a better data scientist. I’m a believer in the idea of “see one, do one, teach one” from medical education. You can’t teach unless you really understand, and I found that the pressure to have three hours of content prepared every week really forced me to sit down and cultivate my understanding. There’s a quote from a post about reading that I revisit a lot, attributed to Mortimer Adler, which says “The person who says he knows what he thinks but cannot express it usually does not know what he thinks.” I found that to be true about concepts I’ve learned. If I studied the topic, but can’t teach it to someone else, I don’t really have it down. Teaching two 6-months cycles of data science while I was working at my first data science job was extremely good for me to get the fundamentals hammered into my brain, and growing from there has been faster and easier as a result. I don’t know how to recommend to people that they go become teachers for programs like that, because it’s hard to find a program like LaunchCode (and that Data Science course doesn’t exist anymore, and I have no idea how I’d structure a curriculum for a beginner to break into Data Science today anyway). But I can confidently say that if you have the opportunity to teach, you should absolutely take it, because it will force you to sit down and get better. And as an added bonus, you help other people get better as you go.

I recently discovered that the recordings of my lectures from when we went remote during the pandemic were not lost to the sands of time, as I’d previously thought. Below is an excerpt of one of the lectures I particularly enjoyed. The students were finishing up a few weeks of work learning about neural networks and as homework coming into this lecture, they were asked to work through a notebook tutorial on building a neural network to classify small pictures of clothes into a category like “shirt,” “coat,” etc. In this lecture, I tried to turn the “what” the students did into the “why” we did it. I wanted them to come out of this feeling comfortable about adding layers to neural networks using Keras and having an intuition about what each layer did. I try to explicitly call out what the students should take away from class, and what should not stress them out if they haven’t mastered it yet. I think it’s a good representation of how I approach teaching, as well as presentations in general: focus on intuition and make hard things feel learnable.

Excerpt from a remote CoderGirl lecture on neural networks (2020).

If you'd like to receive future posts by email, subscribe here.

Updated: