Why I work on backends and infrastructure

By | December 15, 2015

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.

I’m excited by things like ECMAScript 6, which has borrowed a lot of terrific ideas from Python while getting rid of some of the worst complaints about Javascript; and React, which looks a lot like “Kivy with angle brackets”. Many languages have implemented ideas inspired by Python or the languages that inspired Python. Static languages have seen the utility of dynamic typing and introduced type inferencing and generics. Nim uses whitespace to define scope. Namespaces are everywhere. I find it extremely unlikely that any language will embrace usability more effectively than Python has, but some of those languages are evolving to become less distasteful; enough, perhaps, that I am interested in doing UI work in them in the future.

3 thoughts on “Why I work on backends and infrastructure

  1. glyph

    It breaks my heart that you have to give up on UI work to work in Python. As a community we really need to rally around some of the Python in the browser / Python on mobile / Python on the desktop work, or resign ourselves to eventually be obsoleted by other languages.

    In the meanwhile, however, you may find that Python is performant enough for whole new classes of problem if you use PyPy ;). (Practically speaking this does mean giving up on Python 3 for a while, though.)

  2. dusty Post author

    I agree that we need to do more to remain attractive for modern platforms. As much as I love Kivy, I fear we’re lost on mobile for mainstream development. However, I do think there is room to muscle in on the VR space before it has settled into its platform. Given the popularity of Python as a first programming language, I can imagine that a platform that chooses to give first-class treatment to Python would attract a lot of budding developers.

  3. Ramkumar Hariharan

    I am so glad to read this piece: I have exactly the same motivation ! I love all things Pythony, and want to choose tasks for which Python is best suited. Double glad because it looks like you can find a job and say “I code only in Python”. Oh, I love python 3.x !


Leave a Reply

Your email address will not be published. Required fields are marked *