People are often startled to discover that I specialized in Human Computer Interaction for my master’s degree. They invariably ask me why I work in infrastructure. The truth is, I’ve worked on backend systems and infrastructure ever since I graduated. The full-stack development I’ve done in the past did involve some user interface and user interaction work, but I’ve always tended towards backend development.
The question is easy to answer. I discovered Python late in my undergrad, used it throughout my master’s degree, and fell in love with it. However, I’ve never been able to explain just why working in Python is consistently more important to me than pursuing my love of user interfaces.
I finally figured it out.
Programming languages are themselves user interfaces and Python is, hands down, the best user interface available. Where others will choose their programming language based on things like performance or suitability to a given task, I prefer to choose my tasks based on whether Python is performant enough or suitable to the task. It is more important to me to be using this incredible user interface than it is to be using an inferior interface to develop other user interfaces. For this same reason, I am much more inclined to use Python 3 than Python 2; Python 3 was a major improvement in usability.
One of the key tenets of HCI is the concept of compassionate computing. A computer interface should not frustrate or intimidate the user. As user interfaces go, all programming languages fail miserably. But Python fails a lot less miserably than the rest. Many lines of the Zen of Python allude to the importance of usability; the language was designed from the ground up with the comfort of the programmer in mind. It is the most usable Turing complete user interface available to us today.
It’s not just the language, either. The Python community is famous for encouraging “human centric” APIs. The requests library is the ultimate example of this, including the phrase “human beings” in its very tag line, but many other popular libraries in the cheeseshop follow this philosophy.
Of course, Python can be used to create user interfaces and I love doing it (as my book, Creating Apps In Kivy, can attest). It can be used on mobile, in the browser, and on the desktop using a variety of libraries. However, most of these are not viable in production settings and none of them are popular for software development. It can be pretty hard to get a job working in Kivy, so, for now, I work in infrastructure.