We all know Python is a popular programming language used by developers all over the world. According to GitHub's Octoverse report from 2018, Python is ranked #3 in the 'Top 10 Most Popular Languages' list, with over 3.1M developers and 2.1M organizations on its platform. It has also replaced Java as the most popular language used to teach computer science at top U.S. universities. In other words, Python is winning the hearts of existing developers as well as gaining prospective users in the future.Part of Python's appeal is its diversity and polymorphism. To play with a quote from my favorite actor/martial arts master Bruce Lee, Python "is like water; when you put it in a cup, it becomes the cup. When you put it in a teapot, it becomes the teapot". If you attend any of the many Python conferences all over the world, you will find a very diverse crowd. Data Science, Web Development, DevOps, Embedded Systems, and Game Development, are just some of the disciplines you will come to interact with. With such an interesting group of users, the Python Software Foundation (PSF) has worked with JetBrains (maker of PyCharm) for the second year in a row, to conduct the official annual Python Developers Survey. This survey is designed to identify the latest trends and gain insights into what the Python community looked like in 2018.
Note: If you're interested in the story of how the survey came about and the collaboration between JetBrains and the Python Software Foundation, listen to Episode 176 of the TalkPython podcast. Host Michael Kennedy has an interesting discussion with Ewa Jodlowska of PSF and Dmitry Filippov of JetBrains on the survey's origins.
Of course, my interpretation of the survey results is based on my own experiences and background. I will also admit to a bias toward Network DevOps using Python.
Ready? There are lots of gems in the survey results, I can't wait to share with you. Let's begin by looking at the coverage of the survey.
How accurate are the results? Having worked in technical support before, I know the typical survey return rate is, sadly, in the low single digits (sometimes even lower), making the results less reliable.
Although it is difficult to estimate the coverage of the survey respondents as a percentage of the total number of Python users, the sheer number of year-over-year developer participation in this annual survey has been amazing. The 2017 results included 9,500 responses, while the 2018 results came from over 20,000 developers. That is an over 200% increase! This is in part due to a more aggressive marketing campaign during the survey time frame by the PSF, as well as the Python community being more aware of the survey after its initial 2017 launch.
Since the PSF uses the survey results as one of the guiding raises for allocating their budgets, I would encourage all readers of this post to participate in the upcoming 2019 survey and all surveys that follow, even if you're a casual Python user.
DevOps is On the Rise for Python
This was perhaps one of the most pleasant surprises for me when I read the survey results. We all know Web Development and Data Science reigns supreme in the Python community. There are even dedicated Python conferences, such as DjangoCon and PyData, for each respective discipline. DevOps and Automation activities are clearly major driving forces in Python usage.
Amongst survey respondents who classify Python as a secondary language, "DevOps/System Administration/Writing Automation Scripts" is at the top of the list when choosing for a single answer.
It also ranked just below Data Analysis for general Python usage, also for Python as a secondary language respondents.
Say what?! This is an amazing result. I remember when I first got into the Systems Administration and Automation Scripts space, Perl was the dominant language. DevOps wasn't even a term back then. As hard as I've tried, I was never able to adapt Perl as a primary scripting language of choice. I started to explore more options and eventually found Python. Apparently, I'm not alone in that regard.
As an active practitioner for Network DevOps, this is definitely an encouragement. If you are thinking about getting into Network Automation, why not give Python a try?
The Industry Has Moved On From Python 2
With Python 2 beginning its sunset on January 1st, 2020, this is not surprising and couldn't come fast enough. Python 3 usage is now squarely in the majority at 84%.
All of the major frameworks and libraries I have come across in the last few years have adopted Python 3. The real challenge lies within the community-supported open source projects to catch up from Python 2 to Python 3. Ansible, for example, still has a lot of modules without Python 3 support.
If you're beginning to learn about Python or starting new projects, the version to use is no longer up for debate. Python 3 all the way.
People are Passionate About Python
We all know the difference between being forced to do something and choosing to do something. When we show up for work, we have a limited voice when it comes to choosing the language to use, especially if it's an established team and codebase. However, we have total freedom when we're developing side projects or a hobby. The results of this survey show that developers are choosing Python for both professional and personal use.
Of course, one can make the argument that people do not want to switch context between work and personal projects. If they're forced to use Python at work, they might as well use it for personal projects too. I can see the point in that argument, however, I know from personal experience that when I'm doing something for fun, the last thing I want to be reminded of is work. 🙂
Lots of Frameworks and Libraries to Choose From
One of the most attractive aspects of Python is the vast sea of frameworks and libraries to choose from. This saves developers both time and effort in the low-level busy work and allows them to focus on the core aspects of their projects. Let's not debate wether Django is better than Flask or what the best Machine Learning library is for Data Science. We can all just agree that having a large number of frameworks and libraries to choose from is a good thing.
Personally, I would like to see more results and a deeper analysis for Automation frameworks such as Ansible, Puppet, and Chef. Even better would be a Network Automation section that consists of different libraries and usage data. I'm optimistic that it will happen when the Network DevOps has grown large enough that the results can be registered on the community level.
There are lots of interesting conclusions from the 2018 survey and I would encourage any interested readers to go over the results themselves. Here are some other notable points worth mentioning.
Microsoft Azure is behind AWS, Google Cloud Platform, Digital Ocean, and Heroku
This is surprising as Azure is 2nd in market share amongst all Cloud adaptations in many of the market studies I've seen. But amongst the Python developers in this survey, they are far behind some of the smaller players in the space.
Configuration Management with Ansible (maybe?)
Interestingly enough, most of the survey respondents (over 65%) do not use configuration management. But amongst the ones who do, Ansible is twice as popular as the next choice.
Linux is King
Which Development Platform is best is often a question I see in various forums for Network Engineers. There you have it, use Linux. 🙂
This survey does a good job painting the landscape of current Python users. However, it's worth pointing out that no survey exists without some bias. The 2018 survey respondents primarily consist of full-time Developers with 11+ years of experience. They are also primarily working in mid-size companies (51-500 employees) and smaller teams (2-7 people). Since this is only the 2nd year the PSF and JetBrains have teamed up to conduct the survey, the results will only become more diverse and comprehensive in the coming years.
I hope this post is useful to you by identifying the strong points of Python as it pertains to Network Engineers looking into using the language for Automation and Network Programmability. Please feel free to leave any comments, suggestions, and questions below.
Happy Python Networking!
Use your All Access Pass to dive into Eric Chou's Python for Network Engineers course