Learning to program, for everybody

Learning to program, for everybody

Every time I teach a Python workshop, I inevitably end up telling the story of my first month of Python programming. I started learning Python when I arrived at the Graduate Center as a Masters student in 2011. Methods in Computational Linguistics 1 was really a Python 101 course – designed to teach students with no prior experience (so, me) to code in Python well enough to do work in Computational Linguistics in a single semester.

And that first month of the course? I cried every day.

When I started the course, I had never coded anything in my life, and I was really nervous about learning to code. Everyone I knew who was a coder had been coding since they were 12. I was nervous about breaking into something at what I thought was such a “late” stage in my academic career. To me, the barrier of entry to learning how to code had always looked intimidating. Most programmers I knew had been coding so long that they had forgotten what is and isn’t common knowledge to someone who is learning to code for the first time. Coders I knew and who had tried to teach me before would talk though concepts faster than new coders are able to understand, and would try to reassure me that “it’s easy”.

That first month of my learning to code? It wasn’t easy. It wasn’t just the frustration of learning the syntax of Python to get my code to run – it was, in many ways, learning entirely new ways to think. And I really did cry every day. I didn’t think I would ever get to a point where I would be able to write code that would answer homework problems correctly, let alone have the knowledge to write code for my own research purposes. I couldn’t think about anything else other than how to code answers to practice problems, or why my code wasn’t working. I had no confidence that I would ever be able to code, no matter how hard I tried.

Fast forward six years, and here I am; a Python instructor. I teach Python workshops, help run PUG for the Digital Fellows, have presented at Python conferences, and have been the primary instructor of that same course I took in 2011, the one that made me cry every day for a month.

And now that I’m a Python instructor, I do my best to teach to myself, 6 years ago, when I was just starting out; I teach to my nervous and uncertain self, who had absolutely no experience and was sure that coding wasn’t for me. I think, what would I have found useful in my Python instructor when I was first learning to code?

The result of this perspective is my approach to teaching coding. I go slow, and assume nothing about the computational background of my students, imagining them as myself when I started. I’ve learned that being empathetic to my students’ nerves and struggles is just as important as being and encouraging and enthusiastic about what they’re learning. I make it a point to elicit responses from students about what some pieces of code do, right from the beginning, so that they can show themselves that they really are capable of learning how to program. And I try to avoid the phrase “Oh, it’s simple, you just…”, because of how frustrating I always found that sentiment to be.

My goal is to lower the appearance of a barrier of entry to coding, and to make learning to code as accessible as possible to everyone who wants to learn.

Last week, at the Introduction to Python Programming workshop, I got to once again experience the fun of introducing 14 new programmers to Python for the first time. And about three quarters of the way through the workshop, while having the students code up an answer to a practice problem, my favorite thing happened; one of the students yelled out loud “oh my God it worked!” And the rest of the class laughed, and smiled, understanding what an excellent feeling that is.

That moment of joy – that moment when you write a piece of code that runs without errors and does what you want it to without assistance – that’s my favorite part of programming. That’s what I aim to instill in every student who comes in to learn Python. Learning to program can be tricky, and at the beginning it might seem daunting and scary. But that first moment when you think through a problem and get it to run? It’s full of ecstatic joy, the feeling of “Oh hey, I can really DO this“. And it’s thrilling, and often makes you hunger to do more programming. Because programming really is for everyone, even those of us who start off nervous about learning how to code. We can do it. You can do it.
Because programming really is for everyone.

Skip to toolbar