(Join the conversation on Hacker News.)
Last month, I was thrilled to represent the LISNR Engineering team at PyCon 2015 in Montreal. Though I’ve been a proponent of Python since I first discovered it in 2008, this was my first PyCon.
But gearing up for the conference, I was bittersweet.
I ❤️ Python
Over the past seven years, I’ve worked with Python for school, personally, and professionally to build everything… from blackjack games to computer vision trackers to projects in pattern recognition, information retrieval, and MapReduce, to web apps to most recently backend APIs at Lisnr. In short, it’s become my favorite high-level language and my default language for nearly everything.
Is Python dead?
But lately I’ve been feeling bearish about Python.
Depending on who you ask, you’ll hear that Python is: (a) thriving, (b) experiencing a subtle decline, or (c) losing relevance on the web.
On the front cover of its handout of case studies, The Python Software Foundation boldly proclaims:
“A programming language changes the world.”
– The Python Software Foundation
The debate revolves mainly around two other languages: Ruby and Node.js. Though Python and Ruby are syntactically similar, they are philosophically different, and Ruby is younger. Rails was, and still is, a leader in web apps, with some even arguing that Ruby itself is geared toward web development. Node, or io.js, unlocks stronger scalability (i.e., better concurrency through asynchronous I/O). Event-driven web app architectures are touted as the future of server-side development, especially efforts which advance anti-monolithic components, which the Node community tends to do well. [And, yes, we do have Tornado and Twisted in the Python world, but I digress…]
From conversation with developers locally and on the coasts (and also the front page of Hacker News), I felt concerned that our community was stagnating in favor of the other two. Though we will always have the standard library, the third-party package ecosystem is a big factor in deeming any language suitable for new projects. Are we losing relevance to a newer generation of tech? Should we start considering a new default stack? Should I actually start learning ES6 now? These are some of the questions on my mind on the way to PyCon.
The Hacker News front page trends toward making everyone feel like their stack is obsolete if every component isn’t the latest and greatest hyper-specialized bleeding edge.
Has traction changed?
On silver bullets and hipster stacks
Most technologists argue against the existence of a universally best piece of tech — No Silver Bullet. Instead, we should opt for the best tech to solve the problem at hand, even when it’s not our favorite. Luckily, the problems I solve regularly are flexible enough that any top language, or a less popular one, will do. Good developers are knowledgeable, but we’re also opinionated and human (i.e., biased and occasionally irrational). I think this can be one of the hardest battles faced by forward-thinking developers because: (a) it’s easy to stick with what’s comfortable, and (b) the Hacker News front page trends toward making everyone feel like their stack is obsolete if every component isn’t the latest and greatest hyper-specialized bleeding edge.
Python isn’t falling off. I say that with confidence from both the data measuring GitHub and Stack Overflow activity, and the strong community I experienced at PyCon. Everyone uses Python.
Python is not just for web apps
On Saturday, my friend and fellow Pythonista David Felix and I sat down at a random lunch table. We started talking about sessions relevant to our work: APIs, security, scalability, deployment, etc.
Me with David after discussing Django with an Instagram engineering lead. Meta.
One of us brought up a pain point about the default caching configuration with memcached in Django not considering header params, then drifted into more advanced web app topics we’d like to see talks for. When we asked another attendee at the table how he uses Python, he responded, “You know, Python is not just for web apps.”
It’s a patently true statement that’s easy to forget in the tunnel vision of solving your own work problems on a daily basis. He’s right. So I stepped back to ask myself: Who uses Python?
- New startups use Python – MonkeyLearn, Roomstorm
- Established startups use Python – Hipmunk, Buffer, Mattermark
- Unicorns use Python – Instagram, Pinterest, Spotify, Uber
- Food startups use Python – Chewse, Yelp
- Dev tools use Python – Sentry, Keen IO
- Tech titans use Python – Dropbox, PayPal, Google
- Creatives use Python – YouTube, edX, Walt Disney Animation Studios
- Defense contractors use Python – Northrop Grumman
- Corporate giants use Python – Walmart
- Media news sites use Python – Pitchfork, BuzzFeed
- E-commerce and fashion use Python – Lyst, Warby Parker
- Finance tools use Python – Robinhood, The Motley Fool, Venmo
- Gadgets use Python – Dropcam
- Social networks use Python – Disqus, Secret, LinkedIn
- Communities use Python – Nextdoor, Quora, Reddit
Everyone uses Python.
Taylor Edmiston is the Lead Backend Engineer at LISNR. You can reach out to him or follow on Twitter @kicksopenminds.
LISNR is an emerging leader for building powerful experiences around presence using data-over-audio. You can learn more about our tech and request beta access at lisnr.com.
LISNR is a high frequency, inaudible technology; a new communication protocol that sends data over audio. As the leaders of the Internet of Sound, we use inaudible sound waves called SmartTones™, to transmit information. LISNR essentially transmits customizable packets of data every second that enable proximity data transmission, second-screen functionality, authentication and low-fi device to deviceconnectivity on any LISNR enabled device. We enable this functionality better and more efficiently than bluetooth (proximity), ACR (2nd Screen), and NFC/RFID (authentication). As an integrated software partner, LISNR can power devices to connect with world around better than ever before.