K. Sabbak

Code Princess

Learning to Teach

March 02, 2018

My first programming class was when I was 17. It was also my teacher’s first time teaching a programming class. It was in Java and we used a library called Karel J. Robot, which felt like it was aimed at much younger kids, and I remember having a hard time matching what I was learning from the separate textbook and what I was building with Karel J. Robot. I also remember that a lot of my classmates were taking the class because they knew they’d be able to play games online for a whole class period. What I’m trying to say is that it was not the best programming class ever.

Whether or not I learned Java is a little unclear, but what I did learn is that programming was interesting and powerful and I loved it. I also learned a second lesson, which took much longer to surface, but that was that you don’t have to be an expert to teach something. That even just knowing enough can make a huge difference and change people’s lives.

The first lesson was something that I continued to follow through on over and over again for a decade until all my circumstances lined up and everything “stuck”. When the first opportunity came along for me to teach kids how to code, I took it. It’s a small after-school program for middle schoolers. I knew how hard I searched for a programming class when I was their age, and sure, time has made the resources a lot easier to find, but not for every kid in every school.

At first it was pretty easy. I was teaching HTML and CSS; those were things I taught myself and I’m super comfortable explaining. Plus I had had some experience mentoring. Then I started taking on lesson planning responsibilities and that posed different challenges. As we moved on to JavaScript and flew past data types, variables, loops, and conditionals (apparently kids have an amazing capacity to learn), I started getting into murkier territory. It’s not that I can’t teach functions, but how do I teach functions in a way that’s interesting to a 12-year-old? And as I was trying to figure it out, I kept bumping into the edges of my knowledge on OOJS. Should I even be teaching in an object oriented direction or should I be moving more toward a functional ideal?

As nerve-wracking as these questions are, I love them. They give me the chance to learn what I don’t know and a pretty fun way to go about doing it (hopefully I’ll be able to show off some pretty p5.js drawings as I dive deeper). People aren't wrong when they say that teaching is a great way to learn. I also know that I’ve been messing up a lot this whole time. I feel pretty bad about that. These lessons are a rough intro to these concepts, but in many ways no rougher than the intro I had when I was a kid. At least they aren’t graded (ew) and at least their teacher hasn’t totally given up in frustrating and started showing cartoons in an attempt to placate the rowdier kids. He was trying his best, I promise.

It’s very obvious that some of these children have fallen in love with coding just like I did, and hopefully I’ve been able to give them enough tools not to get overwhelmed the next time they’re presented with this information, even if they didn’t learn it perfectly this time around — thanks to imperfect lessons and teachers. I also know from programming that there’s so much we can learn from doing things wrong and examining the results, so I hope that the feedback I get from this batch of kids will help me teach the next class.

Every time I feel like I’m failing them, I remind myself that everyone has to start somewhere, including me and including them. And that CS teacher I had in high school? Apparently he’s thriving. He now teaches an AP CS class, and runs several computer related clubs and teams. I’m super envious of those kids, but I’m a developer now, so I guess it didn’t turn out too poorly for me either.

Tags: learning teaching general