11 May 2016

4 ways teaching code made me a better developer

Late last year, the good folks at General Assembly hired me to teach one of their part-time Front-End Web Development courses. I have been coding for years and, more recently, have given a few one-off guest lectures. However, I was never completely in charge of the education of a group of people for any extended period of time… until now.

Fast forward to late February – 10 weeks later. My class is fantastic. My students have learned so much, especially considering they started out as “non-geeks” who had never written a line of code before. Their final projects look amazing. But I won’t go into that, nor will I go into the sheer terror I felt on my first day of class or how much better I feel about public speaking. Those are topics for another article.

Over the last 10 weeks, I noticed that I have become a stronger developer. I considered myself to be a strong developer before this class, but over the course of this class, I have changed, along with my students, in a few different ways.

  1. I talk about code more specifically. I used to be the queen of talking about my code in terms of “this block” or “that block inside of that other block”. However, as a teacher, I have had to force myself to use less pronouns and be more specific about the words that I use because my students are honing in on every word and call me out when I say something that makes sense in my head but is confusing when it comes out of my mouth. So, instead of referring to my code as “that” and “this”, I now say things like “the child block of the element with the ID of ‘foo’” or “the click event that is using the class name ‘bar’ as a selector”. More specific = clearer.

  2. I strengthened my core. Teaching a beginner programming class means that I have to start explaining code from the very beginning. What is a program? What is the difference between HTML and CSS? I have had conversations about parts of programming that I have taken for granted for years. Being able to articulate programming concepts, like what a variable really is or why jQuery needs so darn much punctuation, has made me more conscientious about the code I write.

  3. I actually write pseudo-code. Nine times out of ten, I write code in my head before I actually type it out. Sometimes I think in code. Call me weird, but it works and, sometimes, it is faster for me. YMMV. The issue comes when I have to comment my code. What is this line actually doing? Why do I have that conditional there? I taught my class to write pseudo-code in their Javascript files as comments before they started writing real code. I now practice what I preach and – voila! – instant comments.

  4. I am now the queen of analogies. Explaining complicated, or even simple, coding concepts to people who have never written code before is definitely an art. It helps to associate new concepts with mental models that people are already familiar with. It is like explaining the concept of a site wireframe in terms of writing an outline for your high school term paper. We all had to write term papers – a site wireframe is the boxy-looking, graphical equivalent of our term paper outlines for websites. I improv analogies a lot in class, especially when see a sea of blank, confused stares after explaining something like a for-loop.

I am sure I have changed in other ways too, like my now-willingness to talk about code in front of large groups. Or talk about anything in front of large groups, for that matter. But, again, that is a topic for another time.

Speaking of “this”, using the word “this” as a pronoun when you are giving a lecture on the Javascript keyword “this” is both hilarious and frustrating.