本文转自公众号 新智元
【导读】第二届Python开发人员年度调查出炉。调查内容包括Python使用概况、开发类型、框架、库和技术、Python3采用率、就业和工作等众多方面。
Python开发人员年度调查来了!
2018 年秋,Python 软件基金会和著名 IDE 开发商 JetBrains 联合进行了第二届 Python 开发人员调查。和第一次调查一样,本次调查旨在关注 Python 的最新趋势并总结 2018 年 Python 开发的发展情况。
来自 150 多个不同国家的 20000 多名开发人员参与了此次调查,帮我们勾勒出一个更精准、与时俱进的 Python 社区全景图,包括:
Python在全球各地的使用
开发类型
Python 3 的使用
Python 框架、库和技术
开发工具
就业和工作等方面。
总结一下这份报告:
Python 3 的采用率正在快速增长,并且已经达到 84%,而 Python 2 仅被 16%的 Python 用户用作主要的注释器。从 2017 年的 75%到 2018 年的 84%,这对于 Python 3 来说是一个巨大的飞跃。
数据分析在 Python 用户中比 Web 开发更受欢迎,从 2017 年的 50%增长到 2018 年的 58%
使用 Python 作为主要语言的所有开发人员中有一半也使用 JavaScript。Python 也经常与 HTML / CSS,Bash / Shell,SQL,C / C ++ 和 Java 一起使用。
Flask 和 Django 是 Web 开发人员中最受欢迎的框架,占比相同(约 45%),把其他 Python Web 框架远远甩在后面。
NumPy,Pandas,Matplotlib 和 SciPy 是最受欢迎的数据科学框架和库。机器学习专用库,如 SciKit-Learn,TensorFlow,Keras 等,也很受欢迎。
AWS 是 Python 开发人员最受欢迎的云平台,其次是 Google Cloud Platform,Heroku,DigitalOcean 和 Microsoft Azure。
2018 年,使用 DevOps 的受访者数量明显增加(与 2017 年相比增加了 8 个百分点)。对于使用 Python 作为辅助语言的 Python 用户而言,DevOps 已经取代了 Web 开发。
PyCharm 及其两个版本是最受欢迎的 Python 开发工具。有趣的是,VS Code 已从 2017 年的 7%扩展到 2018 年的 16%,使其成为 Python 开发的第二大受欢迎的编辑器。其他流行的 Python 编辑器包括 Vim,Sublime 和 Jupyter Notebook。
令人惊讶的是,几乎三分之二的 Python 开发人员选择 Linux 作为他们的开发环境操作系统。
Python 使用概况
Python 作为主要语言 VS 次要语言
在我们的调查中,84%的 Python 用户使用 Python 作为他们的主要语言,而 16%的用户把 Python 作为第二语言。 在 2017 年,这个分布略有不同:79% 受访者指出他们使用 Python 作为主要语言,21%作为次要语言。
有趣的事实:
Python 作为主要语言的使用率比 2017 年的 79%高出 5 个百分点。
Python 与其他语言的使用
Python 用户中有一半还使用 JavaScript。 2018 年的统计数据与 2017 年的结果非常相似,唯一显著的区别是 Bash / Shell 从 2017 年的 36%增长到 2018 年的 45%。Go 和 SQL 都增长了 2 个百分点,而 C / C ++、Java 和 C#等许多其他语言的占比降低。
与 2017 年一样,使用 Python 作为辅助语言的用户语言细分略有不同,使用 JavaScript 的开发人员略少(47%),但也有不少人使用 C / C ++(39%)、Java(35%)和 C#(19%)。
Python 开发类型
人们使用 Python 进行什么类型的开发,以及如何进行结合?
使用 Python 的目的是什么?
60% 的用户在家和工作中都会使用 Python,21% 的人将之用于个人、教育或辅助项目,19% 用于工作。
用 Python 干什么?
2018 年,使用 Python 做数据分析的用户最多,其次是 web 开发,再次为 DevOps/ 系统管理 / 编写自动化代码、机器学习等。
值得注意的是,用 Python 来做数据分析的人比 Web 开发更多,从 2017 年的 50%增长到 2018 年的 58%。机器学习也增长了 7%。 这些类型的开发比 Web 开发增长更快,Web 开发与前一年相比仅增加了 2 个 %。
2018 年,将 Python 用于教育和多媒体应用开发的占比和去年持平,而网络编程、桌面开发、计算机图形、游戏开发、移动开发的占比同比有所下降。
与 2017 年一样,Web 开发是唯一一个与使用 Python 作为主要语言和辅助语言的人之间存在较大差距(56%对 36%)的类别,而其他类型的开发差异要小得多。
有趣的事实:
2018 年,有更多的受访者表示他们使用 Python 的用途涉及 DevOps(与 2017 年相比增长了 8%)。对于使用 Python 作为辅助语言的 Python 用户而言,DevOps 已经取代了 Web 开发。
对以下活动的参与度
通过这个问题,我们试图更深入地了解受访者在之前的多项选择题中选择的各种开发类型。可以清楚地看到,Python 用于游戏开发主要是业余爱好,而 Web 开发、机器学习、数据分析和软件测试主要是工作所需。
其中,93% 的用户使用 Python 进行软件测试,90% 用户进行 DevOps,87% 用户进行 Web 开发都是出于工作需要。
最常使用 Python 干什么?(单选)
在这个问题中,受访者只能选择一个选项。结果表明,Web开发遥遥领先(27%),把数据分析(17%)远远甩在后面。但如果我们仔细观察一下就会发现,机器学习的占比有所增长(11%)。如果我们将数据分析和机器学习整合到“数据科学”这一类中,这个数字将达到惊人的 28%。也就是说,用户最常使用 Python 做数据科学相关的任务。
紧跟着是机器学习和 DevOps,2017 年和 2018 年的占比未发生变化,均为 9% vs 11%。
比较使用 Python 作为主要语言与次要语言的趋势,Web 开发两者之间的差距最大(29% vs 17%)。数据分析和机器学习之间没有显著差异。
有趣的事实:
DevOps / 系统管理 / 编写自动化脚本'已经位列 Python 用户使用其作为辅助语言的首位。这一发现与前一节中强调的 Bash / Shell 使用量增加有关。
与 2017 年一样,Web 开发和数据科学仍然是 2018 年 Python 开发的主要类型。不过,我们注意到 Python 中的数据科学作为该语言的其他用途,其受欢迎程度的增长速度要快得多,这可以从多选题“你使用 Python 做什么?”中看出来。
Python 3 采用率
Python VS Python 3
我们的问题是:”你最常用的是哪个版本的 Python?”。结果显示,84%的用户表示最常用版本为 Python 3 ,远超 Python 2 的 16%。从 2017 年的 75%到2018年的84%,Python 3 的受欢迎程度得到大幅提升。
其中,最受欢迎的 Python 3 版本是 Python 3.6,最受欢迎的 Python 2 版本是 Python 2.7。
有趣的事实:
Python 3 的使用率继续快速增长。根据 2017 年的最新研究,75%的人使用 Python 3,使用 Python 2 的用户比例是 25%。Python 2 的采用率正在下降,因为其不再进行积极开发,没有新功能,并且将会在 2020 年停止维护。
Python 3 的采用率从过年 2013 年的 22%,到 2018 年 10 月已攀升至 84%。
另一个有趣的发现是,只有 82% 主要用于 Web 开发的用户使用 Python 3,而涉及数据科学的 Python 3 采用率上升至 90%。
可能原因:
可能导致这种情况的原因之一是有些开发人员在转换到 Python 3 时仍然需要维护大量遗留代码。另一方面,许多数据分析师和机器学习专家最近加入了 Python 生态系统并开始使用最新的 Python 3。
Python 安装和升级
71%的受访者从 python.org 或 OS 提供的包管理器(如 APT 和 Homebrew)安装 Python。这与 2017 年的结果非常相似。有趣的是,与 2017 年相比,Anaconda 的占比增长了 7 个百分点。这更加明确了数据科学比其他类型的开发类型受欢迎程度增长更快。
是否使用以下工具隔离 Python 开发环境?(多选)
在开发或部署阶段隔离 Python 环境很久以来是一个最佳实践。毫无疑问,pipenv 和较低级别的 virtualenv 是创建和管理新的 Python 环境的两个最常用的工具,64% 的受访者表示会使用这两个工具进行 Python 环境隔离,31% 的用户会使用 Docker,其次是 Conda、Vagrant/ 虚拟机和其他。令让人惊讶的是,21%的 Python 用户根本不使用以上工具。
Python 框架、库和技术
这一部分强调了开发者使用的各种 Python 框架、库和技术的流行度。
网页框架(多选)
受访者中 Flask 的使用量同比增长了 15 个百分点,因此,今年 Flask 意外地成为最受欢迎的 Web 框架。 而 45%的受访者(2017 年为 41%)选择了 Django,Flask 和 Django 加起来就已经占据了 92% 的份额。
数据科学框架和库(多选)
不出所料,最流行的数据科学框架和库是:NumPy,Pandas,Matplotlib 和 SciPy。机器学习专用库,如 SciKit-Learn,TensorFlow,Keras 等,也非常受欢迎,这与作为 Python 开发主要类型的机器学习快速发展密切相关。
普通框架和库
在普通框架和库中,不出所料,超过一半的 Python 用户使用了 Requests。Pillow 也非常受欢迎,1/5 用户使用 asyncio。
最受欢迎云平台(多选)
55%使用云平台的 Python 用户更喜欢 AWS。Google Cloud Platform 排在第二位,其次是 Heroku,DigitalOcean 和 Microsoft Azure。大约三分之一的受访者不使用任何云解决方案。
除了上面列出的流行的云平台,我们发现 OpenStack 和 Linode 各占 6%,OpenShift 占 3%,Rackspace 占 2%。
除了有关云平台选择的问题之外,我们还提出了一些其他问题,以了解 Python 开发人员如何使用云:
如何在云中(在生产环境中)运行代码? (多选)
在虚拟机上占比 47%,在容器中占比 40%,在 PaaS 上占比 28%,在 Severless 中占比 21%。
开发环境中使用云
56%- 本地虚拟环境35%-Docker 容器24%- 虚拟机17%- 本地系统注释器17%- 远程开发环境9%- 直接在生产环境中 .
开发工具
操作系统
令人惊讶的是,近三分之二的受访者选择 Linux 作为他们的开发环境操作系统。请注意,这是个多选题,在这里没有得出主要 OS 流行度的结论。
测试框架
pytest 在测试框架排名中领先,其次是 unittest。其他测试框架远没那么受欢迎。出乎意料的是,35%的 Python 用户不使用任何测试框架,并且可能没有测试他们的代码。在“创建隔离的 Python 环境的工具”部分中,我们发现大约五分之一的 Python 用户不使用 Python 隔离这一最佳实践。
数据库
大多数人使用免费或开源数据库,如 PostgreSQL,MySQL 或 SQLite MongoDB 和 Redis 等非关系型数据库也非常受欢迎,因为大量的 Python 用户正在进行某种形式的机器学习或数据工程。
ORMs
两个最流行的 ORM 是 SQLAlchemy 和 Django ORM,它们与两个领先的 Web 开发框架:Flask 和 Django 的流行度相匹配。
使用以下哪种大数据工具?
机器学习工程师更有可能使用大型数据工具,这就是为什么 76%的受访者表示没有使用大数据工具。Spark 是大数据工具中的首选,其次是 Hadoop 和 Kafka。
经常使用哪种持续集成(CI)系统? (多选)
将近一半 Python 用户不使用任何 CI 方案。Python 世界中最受欢迎的三个 CI 解决方案是 Jenkins,Gitlab CI 和 Travis。
配置管理
大多数 Python 用户不使用配置管理工具。在使用配置管理中,最受欢迎的无疑是 Ansible。
编辑和 IDE
为了找到最流行的编辑器和 IDE,我们提出了单选题:“你当前 Python 开发使用的主编辑器是什么?”不到 1%的选项一并归在 Other 下。
PyCharm 是最受欢迎的 Python 开发工具,PyCharm Professional 和 Community 版本的合计份额为 35%。有趣的是,VS Code 的占比从 2017 年的 7%上升到 2018 年的 16%,成为第二大受欢迎的 Python 开发编辑器。很可能由于 VS Code 的快速增长,许多其他编辑的用户份额减少了。
Web 开发人员与数据科学家的编辑偏好略有不同。他们比数据科学家更喜欢 PyCharm,VS Code,Vim 和 Sublime 文本,而许多数据科学家更喜欢 Jupyter Notebook 作为他们的主要工具。
Python 开发工具和功能
我们找到了在 Python 中相对受欢迎的开发工具和功能:版本控制,代码自动完成,代码重构,编写单元测试以及使用 Python 项目的虚拟环境都位列 Top10。
其他流行的工具和功能还包括 SQL 数据库,调试和代码 linting。NoSQL 数据库,Python 分析器和代码覆盖工具是最少使用的功能。
有趣的事实:
类型提示作为一种可选技术似乎越来越受欢迎。59%的受访者表示,他们经常或偶尔在 Python 开发时使用类型提示。类型提示的使用排名高于代码覆盖和分析器工具,与 CI 解决方案采用率进行 Python 开发旗鼓相当。
鉴于在 2018 年调查中,受访者中学生较少,而经验丰富的开发人员较多,我们可以得出结论,在专业团队中工作时间越长,经验越丰富,他们使用的工具和专业技术就越多。
就业和工作
就业现状
超过一半(62%)的 Python 用户全职工作,19%为学生,而只有 13%为自雇人士或自由职业者。与 2017 年相比,2018 年,学生人数明显减少,就业人数更多。
工作岗位
这是个多选题,因此总百分比大于 100%。将近 3/4 受访者为开发者,1/5 为数据分析家、架构师或团队领导。在占比为 12% 的“其他”部分,最多的职位头衔为数据科学家、DevOps、研究员和教师。
从事项目开发
只有五分之一的 Python 用户只从事一个项目 ; 其余人的工作涉及许多不同的项目,或负责一个主要项目和若干次要项目。
团队合作 VS 独立工作
有趣的是,将近一半的 Python 用户独立进行项目开发,4% 的用户作为外部咨询或训练师。
团队规模
约三分之一的开发者在规模很小的团队中工作,其中 74% 的团队规模为 2-7 人。团队规模的数据与去年相比没有变化。
企业规模
25% 的受访者在 51-500 人的企业中工作,这一部分占比最大,其次为 11-50 人和 5000 人以上企业,占比均为 19%。
企业行业和业务分布
信息技术 / 软件开发占比最大,为 44%;“其他”一列中包括零售、能源和媒体。
目标企业 / 行业
Python 开发者的主要目标企业 / 行业同样为信息技术 / 软件开发,还包括财务、银行、销售、商务等,“其他”部分占比 12%。大部分自填的行业包括电信或能源,并提到了其他行业。
IT 行业经验
与 2017 年相比,Python 用户在 IT 行业的经验更加多样化,没有特别占优势的群体,其中拥有 11 年以上经验的用户占比最大(25%),其次为 3-5 年经验(22%),小于一年(19%)。
平均年龄
受访者普遍年龄在 20 岁左右(39%),近三分之一是 30 多岁(31%),许多年轻人似乎也融入了 Python 社区(5%)。
全球社区
以下为全球 150 多个国家的 Python 开发者社区分布:
21% 美国,12% 印度,6% 英国,5% 德国,4% 中国,4% 法国,3% 俄罗斯,3% 加拿大,3% 巴西,2% 西班牙,2% 波兰,2% 澳大利亚,2% 意大利,2% 荷兰,1% 乌克兰,1% 捷克共和国,1% 瑞典,1% 以色列,25% 其他。