In the fall of 2018, the Python Software Foundation together with JetBrains conducted the official annual Python Developers Survey for the second time. Much like the previous survey, we set out to identify the latest trends and gather insight into how the world of Python development looks in 2018. Over twenty thousand developers from more than 150 different countries participated this year to help us map out an accurate, up-to-date landscape of the Python community.
84% of Python users in our survey use Python as their main language, while for 16% it’s their secondary language. In 2017 we had a slightly different distribution: 79% specified they used Python as a primary language and 21% as secondary.
Python usage as a main language is up 5 percentage points from 79% in 2017 when Python Software Foundation conducted its previous survey.
We wanted to know what kinds of Python development people do (i.e. what developer roles they play) and how they combine them.
It’s great to see Python is equally popular as a language of choice for both personal and professional types of projects, with most people using it both at work and at home.
Worth noting is that Data analysis has become more popular than Web development, growing from 50% in 2017 to 58% in 2018. Machine learning also grew by 7 percentage points. These types of development are experiencing faster growth than Web development, which has only increased by 2 percentage points when compared to previous year.
Like in 2017, web development is the only category with a large gap (56% vs. 36%) separating those using Python as their main language vs. as a supplementary language. For other types of development, the differences are much smaller.
In 2018 we had significantly more respondents specifying they’re involved in DevOps (an increase of 8% compared to 2017). In terms of Python users using Python as their secondary language, DevOps has overtaken web development.
With this question, we tried to gain more insight into the various development types selected by the respondents in the previous multiple-choice question. You can clearly see that Python is mainly used for game development as a hobby, while web development, machine learning, data analysis, and software testing are mainly performed as primary activities.
In this question, respondents could only select one option. At first glance, the results suggest that web development is a strong leader (27%), beating data analysis (17%) by a large margin. But if we take a closer look, we see there has been growth with machine learning (11%). If we bundle data analysis and machine learning together into a single ‘Data science’ category, this amounts to a stunning 28%.
Comparing the trends among those using Python as their main language vs. a secondary language, web development has the biggest gap (29% vs. 17%). For Data analysis and Machine learning, there is no significant difference.
Like in 2017, web development and data science are still the main types of Python development in 2018. Still, we’re noticing that Data Science with Python is growing much faster in popularity as an additional use for the language, as evidenced by the multiple-answer question, “What do you use Python for?”.
We asked, “Which version of Python do you use the most?”. Python 3 is a strong leader with 84% and Python 2 is used as the main interpreter by only 16%. That’s a huge jump in the popularity of Python 3, from 75% in 2017.
The use of Python 3 continues to grow rapidly. According to the latest research in 2017, 75% were using Python 3 compared with 25% for Python 2. Use of Python 2 is declining as it’s no longer actively developed, doesn’t get new features, and its maintenance is going to be stopped in 2020.
Another interesting finding is that only 82% of those mainly doing web development are using Python 3, while for those involved in data science this goes up to 90%.
A probable explanation is that some web developers still have lots of legacy code to maintain while transitioning to Python 3. On the other hand, many data analysts and machine learning specialists have joined the Python ecosystem just recently and got started with the latest Python 3.
71% of respondents install Python from python.org or with OS-provided package managers like APT and Homebrew. This is very similar to the results from 2017. Interestingly enough, Anaconda has grown by 7 percentage points compared to 2017. This may be an additional evidence that the popularity of data science is growing faster than other types of development.
Isolating Python environments during development or deployment phases has been a best practice for a long while now. No surprise pipenv together with the lower level virtualenv are the two most used tools to create and manage fresh Python environments. What is quite surprising though, is that 21% of Python users still haven’t embraced this practice.
This section highlights the popularity of various Python frameworks, libraries, and technologies that Python developers use.
For this question we listed some general Python libraries. It comes with no surprise, Requests is used by more than the half of Python users. Pillow is also very popular. One in five Python users use asyncio.
55% of the Python users, from those who use cloud platforms, prefer AWS. Google Cloud Platform comes in second, followed by DigitalOcean, Heroku, Microsoft Azure and PythonAnywhere. About a third of all the respondents don’t use any cloud solutions.
Along with the popular cloud platforms listed above, we identified that OpenStack got 7%, Linode 6%, OpenShift 3%, and Rackspace 2%.
In addition to the questions on the choice of cloud platform, we also asked a couple of additional questions to get some insights into how Python developers work with clouds:
Surprisingly almost two-thirds of respondents selected Linux as their development environment OS. Please note, for this question we allowed multiple answers. We’re not drawing primary OS popularity conclusions here.
The leading unit-testing framework is pytest followed by unittest. The other unit testing frameworks are far less popular. It’s quite surprising that 35% of Python users don’t use any testing frameworks and are presumably not testing their code. In the “Tools to create isolated Python environments” section we identified that around 1 in 5 Python users don’t use Python isolation which is another best practice.
Most people are using free or open source databases such as PostgreSQL, MySQL, or SQLite. Non-relational databases such as MongoDB and Redis are also very popular given the large number of Python users doing some form of machine learning or data engineering.
The two most popular ORMs are SQLAlchemy and Django ORM which matches the popularity of the two leading web development frameworks: Flask and Django.
Big data tools are more likely to be used by machine learning engineers, that’s why 76% of the respondents selected none. Spark is the leader followed by Hadoop and Kafka.
Around half of Python users don’t use any CI solutions. The three most popular CI solutions in the Python world are Jenkins, Gitlab CI, and Travis.
Most of the Python users don’t use configuration management tools. Among those who do, the clear leader is Ansible.
To identify the most popular editors and IDEs, we asked a single-answer question “What is the main editor you use for your current Python development?” Options which have less than 1% in 2018, were combined together under option Other.
A number of steps were taken to eliminate bias and ensure that the survey was not slanted in favor of any specific tool mentioned in the survey. To learn more about the survey methodology and the channels used to distribute the survey, please refer to the Methodology and Raw Data section.
Web developers have slightly different editor preferences from data scientists. They prefer PyCharm, VS Code, Vim, and Sublime text much more than data scientists do, while many data scientists prefer Jupyter Notebook as their primary tool.
We’ve identified the relative popularity of the tools and features used to develop in Python: version control, code autocompletion, code refactorings, writing unit tests, and using virtual environments for Python projects all occupy the top spots.
Other popular tools and features include SQL databases, debugging and code linting. NoSQL databases, Python profilers, and code coverage tools are some of the least used.
Even though type hinting is an optional technique, it appears to be growing in popularity. 59% of respondents said they use type hints often or from time to time as they develop in Python. Use of type hints ranked higher than use of code coverage and profiler tools, and is now on par with the use of CI solutions for Python development.
Given that in 2018 we have fewer students and more experienced developers among the respondents, we can conclude that the longer people work in professional teams and the more experience they have, the more tools and professional techniques they use.
More than half of Python users are employed full-time, 19% are students, while only 13% are self-employed or freelancing. In 2018, we had significantly fewer students and more fully employed respondents compared to 2017.
Respondents could select multiple job roles, so the total is greater than 100%. About three-quarters identify as developers, and almost 1 in 5 double as data analysts, architects, or team leads. In “Others”, which collected a total of 12%, the top write-in answers included data scientist, DevOps, researcher, and teacher.
|42%||Yes, I work on many different projects|
|41%||Yes, I work on one main and several side projects|
|17%||No, I only work on one project|
Just one fifth of Python users work on only one project; the rest work on many different projects or on one main and several side projects.
Interestingly, almost half of Python users work on independent projects.
About three-quarters of developers who work in teams work in very small teams. We had exactly the same distribution of team sizes as in 2017.
The industries listed most often in the option "Other - Write In" were retail, the energy sector, and media.
"Other - Write In",made up a total of 12% of the industries being developed for. The majority of answers included telecommunications or the energy sector, with multiple other industries also mentioned.
Compared to the 2017 results, this year we had more experienced respondents. The experience levels of Python users was diverse, with no clear leading categories.
Twenty-something was the prevalent age range among our respondents, with almost a third being in their thirties. Lots of young people also seem to be into Python.
We reached Python users living in 150+ different countries. “Others” includes countries with fewer than 1%.
Want to dig into the results yourself? Download the anonymized survey responses and see what you can learn! Share your findings and insights mentioning @jetbrains and @ThePSF on Twitter with the hashtag #pythondevsurvey.
Before dissecting these data, please note the following important information:
The data include responses only from the official Python Software Foundation channels. After filtering out duplicate and non-reliable responses, the data-set includes more than 18,000 responses collected in October and November of 2018 via promoting the survey on python.org, the PSF blog, the PSF’s Twitter and LinkedIn accounts, official Python mailing lists, and Python-related subreddits. No product-, service-, or vendor-related channels were used, in order to prevent the survey from being slanted in favor of any specific tool or technology.
The data are anonymized, with no personal information or geolocation details. Moreover, to prevent the identification of any individual respondents by their verbatim comments, all open-ended fields have been pruned.
To help you better understand the logic of the survey, we are sharing the data-set, the survey questions, and all the survey logic, in English. We used different ordering methods for answer options (alphabetic, randomize, and direct). The order the answer options used is specified in each question.
Once again, on behalf of both the Python Software Foundation and JetBrains, we’d like to thank everyone who took part in this survey. With your help we’re able to map out an accurate landscape of the Python community!
Enjoyed going through the survey findings?
Share this report with your friends and colleagues!
If you have any questions about this survey or suggestions for future ones, please contact us at firstname.lastname@example.org.
We’re also extremely open to any suggestions and feedback related to this survey so we can run an even better one next time. Feel free to open issues here with any comments or questions.