Python has made its way into every facet of my software developing career at this point. My journey using Python started with one of my larger personal projects; it was at the time my favorite programming languages to work in. But now that python has crept its way into my work and has been a major part of my software engineer journey here at Oregon State (especially within this project), i’m not sure how I feel about it. The more other languages I work with, the more I find I’d prefer them in most situations. Of course it isn’t fair to compare a hammer to a hacksaw, there are different tools for different jobs, but there’s many other tools i’d pick up at this point. But to be fair to Python, i’m going to use the rest of this blog post to describe what I do and don’t like about it.
The Goods
For starters, my favorite thing about Python is how fast I can develop in it. With syntax that could be mistaken for English (a hyperbole, but it’s still easy to understand), whipping up a program for a strangely specific task can be done in minutes. Another thing I like is how much it has taught me about important programming concepts. If I were to have tried and write a UDP client/server in C when I took the course here on networking, I probably wound not have gotten anything but frustration out of it. Python’s native packages were able to abstract enough away that I could understand the concept of networking thoroughly. And finally, I love python’s versatility. It’s crazy that I can write a desktop program with a GUI and a machine learning model in the same language. Of course many other languages have these things, but you sure aren’t going to be able to do both those things as easily in Ruby or Rust.
The Bads
Now onto things I dislike. I’ll keep this brief because I frankly don’t have a substantive way to describe my friction with the language. Firstly, I’m not a huge fan of the package manager. I spend more time figuring out why PIP isn’t working, deleting dependencies spread throughout different versions of Python, and troubleshooting package dependencies than I do working with packages installed through PIP. It’s better than any package manager I could make, but among managers like NPM and Ruby’s gems, it doesn’t shine the brightest. I’m also not a fan of the white space. It gets confusing to read in just one or two indentations, and it’s especially annoying when just changing the white space would improve the readability of the code (but you can’t). I finally find a lot of the syntax beyond basic things to be ugly and counter-intuitive. Many common functions on built in data types have weird names and strange double underscore syntax. And don’t get me started on how class/object syntax looks.
The reality
I still really don’t dislike python but I’ve begun to pick other tools in its place. If i’m gonna write an API, it’s gonna be in Rails and not Flask. If i’m gonna code up a GUI, it’s gonna be in C++ and not Flexx. But if i’m gonna show somehow how to write their first program, i’ll probably point them to python.