Two days before this semester’s Introduction to Python Programming workshop (which was held this past Tuesday night), I came across the following tweet from Jake VanderPlas, author of ‘The Whirlwind Tour of Python’ and ‘The Python Data Science Handbook’, and all-around Python Guy (contributor to scipy and scikit-learn, among other Python libraries). Here’s what it said.
“My advice on learning Python: Don’t set out to ‘learn Python’. Choose a problem you’re interested in, and solve it using Python.” — Jake VanderPlas, September 10, 2017, Twitter.
After reading this, I sat and thought about it for awhile. My first instinct when reading this tweet was actually frustration. “But what if someone doesn’t know Python?” I thought to myself, former frustrations welling up. “What if you’re a complete beginner, and you don’t even know where to start? How can you know how to solve your problem with Python if you don’t know anything about Python?”
But the longer I thought about it, the more this advice started to make sense to me.
I’ve been a Python educator for five years. I’ve taught graduate courses, hosted workshops, tutored one-on-one and educated in boot-camp style settings.
And yet there is still a part of me that feels like I am a complete Python beginner, because there are things that I still do not know about Python. One of the reasons for this is because Python is an extremely versatile programming language, and there are things it can do that I haven’t found a need for in my own research. Another reason for this is because wonderful people keep updating Python, so that it continues to function as a rich programming language that works well, and so there is constantly new information to be learned. As an example, I just updated to Python 3.6 this past Monday, and when I was asking around about what’s new in Python 3.6 from Python 2.7, I found out the dictionaries are ordered now! Wow! That’s a big change, and, in my opinion, a good one. But it emphasizes that there is never really a limit on “how to learn Python”. Python is an evolving and shifting programming language, and there will always be more to learn. To sit down at a computer and say “I am going to Learn To Code In Python” can be an extremely daunting task. I know how terrifying it was for me, seven years ago, when I started coding for the first time.
So I reconsidered, then, VanderPlas’s advice; instead of focusing on “learning to use Python”, focus instead on a problem that you want to solve, and then solve it with Python. For me, in my own research, that was a little bit easier to put into words, even as a beginner. My research is in computational linguistics, and specifically, in speech processing and prosody modeling. The problem that interests me is how to get computers to better understand intonation in human speech. That’s a problem I want to work on, and Python is a tool that allows me to really work on solving this problem.
It’s a shift in the way we focus, when we think not so much about the programming syntax that we are learning, but rather, how what we are learning will apply to the problems that we each want to solve, as individuals. It makes it more exciting to me, as an instructor, to teach for loops not as “this is a thing that you need to do to say that you know how to use Python” but rather, as a tool that will make whatever problem you’re working on easier to solve. And I hope, too, that focusing on this an an instructor helps to make Python easier and more accessible to beginner programmers who are nervous about “Learning Python”. By shifting the focus away from the Python syntax itself and more onto the passions and interests of those using it, my hope is that students will, from the start, focus on how they can use Python as a tool to help them solve their own research problems, rather than on just getting the syntax right, or Knowing How To Code. The former, in my opinion, creates not only a more accessible learning environment, but also one that is a lot more fun and a lot more creative. Python is a tool that can help people solve problems that they are passionate about. Let’s aspire to teach it as such.
Looking for more practical advice on how to get started with Python programming? Check out our Python Resources guide.