“求知若饥,虚心若愚”--这个原本出自《全球概览》的俳句,因为乔布斯在斯坦福大学毕业演讲中的引用而备受推崇,流传成为IT界的至理名言之一。在编程界,亦有“代码胜于雄辩”、“Done is better than perfect”等警句,寥寥数语将编程工作者的形象特质描摹到了极致。程序员,就是技术至上、唯代码是瞻且必须不断武装自己的群体。
21世纪,高薪、高端、高技术范儿已成为程序员的固有标签,在这个新的元年,CSDN将基于一年一度的开发者大调查数据,以全新的视角深入发掘中国开发者群体的整体现状、应用开发技术以及开发工具/平台的发展趋势,呈现更真实、更全面且更有学习价值的开发者画像。
CSDN最早从2004年开始针对中国开发者进行大规模调查,是迄今为止覆盖国内各类开发者人群数量最多,辐射地域、行业分布最广的调查活动。2019-2020年中国开发者大调查针对软件开发技术、应用开发领域等方面对问卷进行了重新设计,在本次调研中有如下主要发现:
- 30岁以下开发者人数占比超八成,全国有19.6%开发者月薪超过1.7万元;
- 六成开发者在使用Java语言,近五成开发者近期最想学Python语言;
- Spark、Redis和Kafka正在成为企业大数据平台通用技术组件;
- 区块链技术近两年是热点;
- 人工智能技术日益受到企业和市场的关注,但64%企业尚未实现智能化,机器学习/深度学习算法工程师最为急缺;
- 近七成开发者认为未来5G网络的传输速率能达到4G网络的10倍以上;
- Apache项目和Linux是开发者较为喜欢的开源项目;
- 半数开发者很少参与开源项目的开发、维护、运营和社区发展等。
软件开发准入门槛持续降低,近2成开发者月薪超过1.7万
30岁以下开发者人数占比超八成,软件开发从业门槛持续降低
从2015年到2019年的调研数据来看:30岁及以下的开发者人群占比在8成以上,一直是软件开发领域的主力军;全国近半数的开发者工作在一线城市(北京、上海、广州、深圳、天津);物联网、软件、IT制造三个技术领域涵盖了国内84%以上的开发者;本科及以上学历占8成;92%的开发者是男性。
开发者基本特征
和国外开发者年龄分布趋势大概一致,国内的软件开发群体一直呈现出越来越年轻化的特点。这是因为,一方面软件开发行业蓬勃发展,各行各业都需要软件开发相关人才,也有越来越多的毕业生选择从事该行业;另一方面,是因为编程语言、框架、云服务等基础设施的持续完善,从事软件开发的门槛在持续降低,更容易接纳新鲜血液,报告统计发现,本科学历是开发者的主力军,66%的开发者拥有本科学历,而硕士研究生、博士研究生仅占11%、1%。
八成以上开发者月薪在5千~3万元之间,19.6%开发者月薪超过1.7万元
通过结合受教育程度和薪资水平的数据特点来看,学历越高的人群中,月薪1.7万元以上的高收入比例越高。在一线城市(北京、上海、广州、深圳、天津)中,月薪超过1.7万元的开发者占比为30%,该比例远高于国内其它城市。
开发者属于相对高薪的职业,尤其是在一线城市中,但不同开发者之间收入差距较大。软件开发是一个智力密集型的工作,不同开发者能够提供的价值差别很大,这就使得一个优秀开发者的收入远高于普通开发者:硕士和博士毕业的高收入者比率要远高于本科及以下的;金融和互联网行业的高收入比率最高。
自学是开发者持续学习的主要路径
软件开发行业日新月异,只有保持持续学习才能跟上技术变化的脚步,终身学习是现代人保持竞争力甚至是维持生存的必要手段。
从调研中可以看到,53%的开发者会通过在未参加正式课程的情况下,自学一门新语言、框架或工具。但同时,也有半数的人参加过在职培训或者线下课程,相对于自学的灵活性而言,这类培训会更为系统和完整,对于长期的个人提升有所裨益,开发者可以适当选择。但与之相悖的是,只有不到40%的开发者,愿意为学习付费,这可能会导致参与的课程质量不够高。
Java雄踞语言榜,Visual Studio受开发者欢迎
Java长盛:使用最多,开发者最想学
从编程语言来看,Java是最多人使用的语言,而JavaScript和SQL分别是第二第三位。这三门语言,使用场景都很广泛,Java一方面后端开发最常使用,生态成熟度无人可比;另一方面,Java依然是Android上最重要的开发语言,与之相比,新兴的Kotlin只有2%的开发者在使用。而JavaScript不仅是前端开发的必备语言,还用在Web开发、小程序开发等场景下。
Java和Python依然是开发者最希望学习的语言之一,只是相比之下,Python的热度有所降低,这可能和机器学习没有去年那么火热有所关联。变化比较大的是Go语言,与去年相比,今年的调研中想学Go语言的开发者降低到了4%,与之相似,Kotlin、R的学习意愿也大幅降低。
从这个趋势也可以看到,如今的开发者更意愿去学习一些相对成熟度、用途更为广泛的语言,对一些代表新模式的语言乐衷程度有所降低。
七成以上在使用Windows操作系统,83%在使用MySQL数据库
72%开发者在使用Windows操作系统,18%在使用Linux系列操作系统。在存储服务的使用上,MySQL继续扩大其使用率到达了83%,几乎是开发者必备的技能。和去年相比,Elasticsearch出现在数据库使用的调研中,在大数据时代,Elasticsearch作为提供搜索服务的第一选型,也必然会被越来越多的开发者学习和使用。
Node.js是相对使用普遍的技术框架
在Web开发上,前端使用Vue.js后端使用Spring是最常见的选型方案,与之相对应,Node.js是最多被用到的框架,这和当今多端开发的趋势密不可分。后端用微服务架构,中间用Node.js粘合出适合Web、Android、iOS等不同端和场景使用的APIs,是当下主流的部署方案之一,既可以前后端分离提高开发效率,又可以在保障服务稳定性的同时提升灵活性。而TensorFlow成为开发者最期望学习的框架,这说明开发者依然对机器学习保持关注和热情。
Visual Studio是最为普遍使用的开发环境
在开发环境的选择上,Visual Studio是最为普遍使用的开发环境,这和微软对开发者的投入密不可分。微软投入了大量的研发力量,使得Visual Studio可以在各种操作系统进行各种编程语言的开发,其强大且完善的插件系统可以满足开发者的各种需求,使其可以超过IntelliJ。
大数据平台以私有云部署为主,Spark使用率高达44%
私有云部署解决方案是企业构建大数据平台的主要方式
随着分布式计算和云平台的逐步成熟,目前大部分公司都有能力搭建自己的大数据平台。调研数据显示,81%企业在进行大数据相关的开发和应用,50%的企业选择私有云解决方案来部署大数据应用,28%的企业选择自主研发。
仅19%企业使用商业发行版Hadoop版本搭建数据平台
调查报告发现,有30%以上的企业并没有使用相对成熟的Hadoop技术搭建数据平台,这些企业的算法性能会很大程度上受限于低效的平台,更不可能开发出更高效的数据分析算法。但幸运的是大部分企业都基于商业版或者社区版Hadoop搭建了数据平台,这些公司的侧重点主要在应用发现和算法的设计层面,更有可能在不久的将来实现大数据的价值。
Spark是企业大数据平台最普遍的组件
Apache Spark是一个处理大规模数据的快速通用引擎,它可以独立运行,也可以在Hadoop、Mesos、云端运行,它可以访问各种数据源包括HDFS、Cassandra、HBase和S3,可以提升Hadoop集群中的应用在内存和磁盘上的运行速度。Spark生态系统中除了核心API之外,还包括其他附加库,可以为大数据分析和机器学习领域提供更多的能力。本次调研中,Spark是使用最普遍的大数据平台组件,使用率达到44%,而MapReduce使用率仅为21%。
分布式文件系统HDFS作为核心组件之一,使用率也达到了39%。企业对大数据平台应用最多的场景是统计分析、报表生成及数据可视化,38%企业使用ELK(ElasticSearch+Logstash+Kibana)实时日志分析平台。
综上所述,目前大数据的发展热潮令人欢欣鼓舞。一个优秀的大数据团队,需要有对产品开发具有高敏感性同时对技术有一定理解的人才,同时需要理论基础极其扎实,能对实际问题进行抽象建模和算法设计的人才。只有双管齐下,在产品和技术方面进行深层次探索,才能真正实现大数据产业的繁荣。
区块链质变
22%的开发者正在用或者准备用区块链技术解决技术问题
区块链技术的发展,是一个量变到质变的过程。相比于2018年,对区块链了解的人从22%增长到32%,准备尝试用区块链技术解决一些问题的人数从14%增长到16%,仅有4%的人对区块链完全不了解。
43%的受访者在从事公有链的开发
本次调研中,43%的受访者在从事公有链的开发。目前行业侧重发展的方向为解决方案、公链及联盟链,公有链由于其自带激励机制,对于普通开发者有直接的回馈,所以上面开发者占比高也比较合情理。行业解决方案从去年的27%增加到今年的36%,说明传统行业开发者对区块链的认可度在增加。
区块链本质上是技术,落地场景及实际应用才是连接社会效益的关键。
金融是普遍认为的行业应用方向
金融行业是普遍认为的行业应用方向,占36%。区块链本身具备的防篡改、可追溯的特点,能大大降低金融行业监管成本,不过金融的进入门槛相对也较高,需要各方面技术的配合。其次,智能硬件和物联网也被认为是主流应用方向,占14%。不过相比其他众多已经很成熟的技术,依托区块链的解决方案在实际使用中,往往面临必要性缺失的问题,因此区块链应用发展仍任重道远。
在区块链结合行业之前,更加要重视与其他新技术的结合和协同:物联网设备能够提供大量数据,5G能够提供高速传输,存储可以解决区块存放的问题等。
算法工程师最急缺,TensorFlow占据AI深度学习框架榜首
64%的企业尚未实现智能化
在经历了2019年的行业低谷期之后,无论是行业巨头还是新兴独角兽,都开始审视AI能够切实落地的场景。调研数据显示,14%的企业尚无信息化基础,27%的企业实现了事务处理数字化,22%的企业具备商业智能基础设施,实现描述性分析。使用机器学习实现预测性分析和决策优化的企业占16%,而在业务中全面使用AI系统、机器人和其他自动化工具的仅占12%。
机器学习/深度学习算法工程师最急缺
在岗位分布上,由于深度学习是以大数据为基础的,而感知智能中的计算机视觉又是目前深度学习较为成熟的应用,所以,机器学习和深度学习工程师,以及数据工程师、计算机视觉工程师排行在前三位。当前最急缺的岗位也是机器学习/深度学习算法工程师、数据科学家/数据分析师/数据挖掘工程师岗位。
53%的开发者表示其团队急缺机器学习/深度学习算法工程师,37%表示急缺数据科学家/数据分析师/数据挖掘工程师。
TensorFlow是人工智能领域主流深度学习框架
此次调研中,TensorFlow使用普及率达到48%。从技术本身的角度来看,较为成熟的TensorFlow成为AI工程师的首选深度学习框架,Torch/PyTorch由于其开发效率较高,也得到了较多支持。
35%开发者选用国产AI芯片应用于自己的AI开发
在AI芯片领域,国内厂商也开始弯道超车,越来越多的开发者也开始关注国内AI芯片的进展。调查数据显示,选用国产AI芯片应用于自己的AI开发时最看重的因素方面,对主流AI框架的支持能力是最普遍的因素,占35%。
物联网云平台三足鼎立:阿里物联、华为云、百度IoT
69%的开发者认为未来5G网络的传输速率能达到4G的10倍以上
每一代新型的通信系统总是能带来更大的带宽。据报告显示,近七成开发者认为未来5G网络的传输速率能够达到4G网络的10倍以上。
影响5G普及的三大因素:5G套餐价格未定、运营商的开发程度、需要更换手机
由于目前5G网络使用者较少,费用较低廉的套餐还没有推出,第一代5G终端不太成熟等原因,目前87%的开发者认为5G套餐费用过高,并且大部分开发者认为5G网络目前覆盖范围有限,因此将近40%的开发者正处于观望阶段。
值得一提的是,本次调查中62%的开发者认为,5G时代应该加强对个人隐私的保护,这反映出目前社会对数据隐私越来越重视的整体趋势。
阿里物联和华为云是应用相对普遍的IoT云平台
根据调查,2019年物联网云平台呈现三足鼎立的趋势:阿里物联、华为云、百度IoT成为用户最多的三种物联网平台,并且和第四名中移物联远远拉开了差距,这和我们的实际使用体验一致。
未来的基础物联网平台可能会继续呈现以偏硬件实现为主的华为云和以偏软件体验为主的阿里、百度物联平台的三足鼎立局面。
物联网技术开发:Linux和Windows是使用较多的操作系统
Linux和Windows是较普遍的操作系统,使用率分别为51%、44%。目前在物联网设备开发过程中,Linux、Windows和Android较为普遍,依然延续了PC平台的开发者操作系统份额。虽然华为、阿里等公司在2019年均发布了自己的物联网专用操作系统,但还并未得到开发者的大规模认可,大公司的物联网操作系统发展之路依然任重而道远。
Wi-Fi是应用最普遍的物联网通信技术
在本次调研中,近距离通信(比如Wi-Fi和蓝牙)是现存物联网开发者最主要的通信方式。然而这种比重可能会随着未来3~4年内车联网的大规模商业化产生变化,汽车、工业物联、智能电网这类高移动性、高可靠和低延迟物联网场景会更适合需要整体规划的运营商网络。
物联网行业和传统互联网行业不同,相比而言更加需要注重“软硬结合”。物联网产品的硬件维护成本远远大于传统互联网行业,因此设计、实现出真正可靠、用户喜欢且实用的产品不仅仅涉及软件服务,也需要考虑硬件可靠性和实用性。这对于直接面向用户的物联网企业,特别是从传统互联网厂商或者硬件厂商转型的企业来说存在非常严峻的挑战,需要静下心来深入了解垂直市场的需求。
六成开源开发者无收入,Apache项目最受喜欢
77%开发者每周在开源上投入时间不超过5小时
无论是大数据、区块链、人工智能还是物联网领域,其中最为重要的、最受欢迎的技术都是开源的。但是报告统计发现,有超过一半的开发者很少参与开源项目,每周在开源上投入不超过5小时的占77%,其中,1小时以内的占31%。此外,65%的开发者不曾在开源上获得收入,获得不错收入的仅占一成。
开发者最喜欢的开源项目是Apache
25%开发者最喜欢Apache,24%开发者最喜欢Linux。作为全球最大的软件基金会,开发者用过的诸多项目,例如Dubbo、Log4j、Maven、RocketMQ和Tomcat等,均孵化自Apache。
国内开源的现状虽然近年来已经有了很大的发展,但是一个残酷的事实是,老兵正在离开这个行业,离开一线开发的队伍:报告数据显示,30岁以下的开发者人数超过82%,接触开源的时间在5年以内的开发者超过83%。随着那些经验丰富的老兵转行或是进入管理层,不再写代码、也不再参与开源的事实也就凸显出来……未来开源的建设,依然任重而道远。