他们调查了3.9万名程序员,制作了这份完成度极高的开发者报告
扫描二维码
随时随地手机看文章
这是一份样本数超过 3.9 万人的调查报告,参与调查的开发者遍及全球。除了四分之一的开发者在学会开车前先学会编程之外,还有这些调查结果等你发现。对照这份调查报告,看看你跟世界上其他国家地区开发者之间的异与同各是什么?
Hello World:未来的工作可能发生巨变,不管从事何种工作,学会编程总是大有裨益。编程有助于培养计算性思维,而计算性思维在制定决策的过程中发挥着重要作用。传统的简历可能会消失,招聘将会以应聘者的技能为首要基础。我们在 2012 年底创办了 HackerRank,旨在帮助每一位开发者找到适合他们的职位。HackerRank 的发展速度十分惊人——我们接触了 320 万名开发者,并在去年帮助其中的 2% 开发者找到了工作。这是我们第一次向 HackerRank 社区的开发者发起关于开发技能的调查。我们得到 39441 个开发者的反馈,从这些反馈中可以发现一些很有趣的现象,我们很高兴能够把它们分享出来。要知道,有四分之一的开发者在学会开车之前会先学习编程。
1 四分之一开发者在学会开车前先学习编程
你是从几岁开始编程的?
编程起步不在乎早晚,在 39000 多名开发者当中,有四分之一在 16 岁之前就开始接触编程。
而在 26 岁之后才开始接触编程的开发者当中,有 36% 已经成为高级或更高级别的开发者,可见他们的职业生涯发展得很快。
2 个人电脑的发展为 70 年代的孩子提供了契机
当前年龄和开始接触编程的年龄
70 年代的孩子如果想要看到创新科技,他们必须自己动手去创建,因为他们别无选择,那个时候没有那么多资源教他们如何开发软件。在 45 岁至 54 岁的开发者当中,几乎有一半(47%)在 16 岁之前就开始编程。而在 18 岁至 24 岁的开发者当中,在 16 岁之前就开始编程的要少得多(只有 20%)。
45 岁至 54 岁的开发者也是第一波接触早期个人电脑的人,比如 Acorn Archimedes、TRS-80、Commodore 64 和 Apple 2。因为计算机教育资源的匮乏,他们所受的正规教育非常有限,但这也是他们自学编程的动力来源。
3 向致力于培养年轻开发者的英国致敬
从 5 岁至 10 岁就开始编程的开发者所占比例最高的国家
在这次调查中,包含至少 100 份反馈的国家有 17 个,其中英国拥有最多的早期开发者,他们从 5 岁至 10 岁时就开始编程,这些人现在的年龄在 30 多岁至 40 多岁之间。
在这些开发者还是个孩子的时候,Acorn Archimedes 进入了他们的视野。当时的学校与乐购合作,只要他们在乐购购物,就可以获得免费的电脑,于是很多孩子都有机会接触到电脑。这种模式后来欧洲和澳大利亚得到广泛应用。
现如今,超前思维教育已经在英国落地生根,他们要求小孩在 5 岁时就要开始学习编程。
英国当局反复强调,尽早接触编程为人们进入软件行业打开了一扇大门,同时也有助于他们更好地理解计算性思维和对人们日常生活有重要影响的软件系统。
4 几乎所有的开发者都对学习如饥似渴
学习编程的途径
似乎每一年都会出现一些新的编程语言、框架或软件包,它们的身影遍布于开发者的博客上。刚开始是 Backbone.js,现在是 AngularJS 和 React。自学成了所有年龄段开发者的标配,这些开发者当中有 67% 拥有计算机科学背景,但仍然有 74% 的开发者表示,他们在一定程度上还是要依靠自学。
平均每个开发者已经掌握了 4 门编程语言,他们表示还想再多学 4 门语言。学习的热情程度依据年龄段有一定的差别——18 岁至 24 岁的年轻开发者计划学习 6 门新语言,超过 35 岁的开发者则只计划学习 3 门。
编程的目的就是要独立解决问题,所以自学对于成为一名成功的开发者来说至关重要。在选择下一个学习目标时,一定要遵循这样的原则——把自己根植于某个领域,把学习看成是自我成长的手段。我们可以学习更多的工具,但工具时刻在变化,而最根本的学习动力其实是对编程的好奇心和兴趣。
5 年轻开发者选择在 YouTube 上自学,而不是通过书本
Stack Overflow 对于自学者来说是最好的去处,几乎所有年龄段的开发者都上过这个网站。开发者们在网站上可以看到其他人之前已经碰到并得以解决的问题。
不过,在选择 YouTube 还是书本来学习编程这个问题上,却有明显的年龄段差异。年轻人更喜欢在 YouTube 上自学,而年长的开发者更喜欢通过看书来学习新技能。更准确点说,在学习一个新工具时,年轻一代中有 65% 会去 YouTube,而年长一代中有 85% 会选择看书。
两种方式各有自己的优势。YouTube 的学习模式具有系统性,就像学习大学课程那样,有一定的结构和稳定的进度,而且你可以按照自己的节奏来学习。YouTube 的另一个好处是适应性,它可以随着软件行业的发展而变化,而书本则更适合作为计算机科学的基础载体。任何人都可以很快地在 YouTube 上发布教程,尽管它们不像书本那样会包含数年的精华积淀。不管是哪一种方式,有一点是很明确的:我们正处在计算机教育发展的浪潮之巅。
6 开发者学习的都是雇主最需要的编程语言
编程语言日新月异,但对于开发者来说,掌握核心的编程语言是最为重要的。目前雇主需求量最大的编程语言包括:JavaScript、Java、Python、C++ 和 C。
雇主需求量最大的编程语言与开发者所掌握的编程语言有着惊人的匹配度。Java、JavaScript、C 和 C++ 以及 Python 都是开发者掌握得最多的编程语言。
不过从行业来看,则存在一些变化。例如,Java 在金融领域已经流行了多年,而 C 语言因其性能方面的优势在硬件、底层硬件 API 和跨平台编译器方面独领风骚,C# 则在政府部门有更广泛的使用。
7 JavaScript 框架方面的知识差异最明显
雇主对 JavaScript 框架的需求和开发者对框架的掌握情况
编程语言并不会一出现就立马被业界采用,而 JavaScript 框架却改变了这一游戏规则。
JavaScript 框架的需求量相当大,因为 JavaScript 是唯一可以用于开发前端、后端、移动应用和浏览器插件的语言。可以说,JavaScript 统治了 Web 领域。很多雇主都希望开发者能够同时掌握 AngularJS、Node.js 和 React。
不过,对于这三门语言来说,雇主想要的和开发者掌握的知识之间存在最大的差距。React 在这方面的差距最大,不过换句话说,这也为开发者提供了很好的机会,他们可以学习 React 来满足雇主的需求。
造成知识差异的另一个原因是 JavaScript 的相关框架太多。JavaScript 生态系统发展得太快,这大概也是造成 JavaScript 框架知识差异的主要原因。
8 几乎所有的雇主都很看重解决问题的能力
雇主最看重的技能
解决问题的技能几乎是所有雇主都看重的一点,它比编程语言、调试技能和系统设计能力更加重要。计算性思维或解决复杂问题的能力比掌握基础性技能更有价值。
不过,小公司和大公司关注点有些差别。比如,小型公司比中型公司更看重开发者对框架的使用熟练程度。
之所以存在这样的差别,可能是因为框架对于初创公司来说更为重要,他们需要在短时间内启动项目和发布代码,而框架可以帮他们做到这点。
9 实际经验比简历上的光鲜内容更重要
大多数人认为,招聘者更喜欢那些从名校毕业的、拥有计算机学位的候选人。但实际上,他们更关心候选人曾经做过些什么,而不是从哪所学校毕业。大部分招聘者表示,他们看重的是实际的经验,比如前一份工作做的是什么、经验年限和参与过的项目(包括在 GitHub 上的贡献)。不管是大公司还是小公司,十个招聘者中有九个表示,过往的经验和经验年限可以作为技术能力的衡量指标,也是最为重要的参考因素。
实际做过什么比其他东西都要来得重要,而小公司在这方面比大公司更为迫切,其比例分别为 80% 和 66%。
简历上的东西(学位、教育程度、技术证书)反而是招聘公司最不看重的,这些东西无法真正衡量候选人的技术能力。从简历上最容易挑选出来的是“经验年限”,因为工作经验与工作年限有着直接的联系。大规模逐个审核候选人的技能是有难度的,而经验年限却可以作为有力的参考,尽管存在某些人工作时间不长但成长很快的情况。
10 招聘公司的高层非常看重应聘者的 GitHub 和个人项目
招聘高层最看重的候选人品质
招聘公司将 GitHub 作为考察候选人的补充项。C 级别的高层,如创始人、CTO 和副总裁,他们认为 GitHub 项目参与度比经验年限更重要,而学位在这里就更不值一提了。
也就是说,当候选人面到高层这一轮,简历上的东西已经不那么重要了。大多数时候,C 级别的高层会让其他招聘者代劳面试简历上的东西,而他们会专注于面试候选人参与过的项目和上一份工作的内容。
11 开发者扎堆在科技巨头所推崇的编程语言上
开发者想要学习的编程语言
开发者最为薄弱以及他们接下来最想学习的编程语言包括:Go、Kotlin、Rust、Scala 和 Swift。开发者追随硅谷巨头公司的趋势越来越明显。
谷歌的 Go 语言具有高并发和快速编译的特点,而且有谷歌在背后提供大力的支持。谷歌将安卓的首选语言从 Java 改成了 Kotlin,鼓励开发者使用 Kotlin。
另外,Twitter 在抛弃 Ruby on Rails 之后,将 Scala 作为首选的语言。而苹果公司从 Objective-C 转向 Swift 之后,开发者也不得不跟着转移。毕竟 iOS 开发已经成为主流,大部分开发者都不想落在他人之后。
12 人人都想学 Python
JavaScript 或许是雇主需求量最大的编程语言,而 Python 却是各年龄段开发者最想学的语言,而且已经有很大一部分人已经掌握了 Python。
Python 因其简洁、可读性强和强大的科学工具包而闻名,它还成为计算机科学入门课程的一部分。
在年轻开发者当中有一个相对反常的趋势:他们比年长开发者更不喜欢新出现的语言(如 Go、Kotlin 和 Scala)。实际上,Go 语言刚好是一个汾水岭。18 岁至 24 岁的开发者根本不关心 Go 语言,而 45 岁至 54 岁的开发者把 Go 语言视为他们最喜欢的语言之一。而 JavaScript 却正好相反。
有意思的是,大部分新语言(包括 Go 语言在内)都从旧语言那里借鉴了某些语言特性。Go 语言的主要设计者之一在数十年前发明了 C 语言。年轻开发者有着与生俱来的学习欲望。他们更倾向于全面地学习编程语言,即使有些是他们不喜欢的。而年长的开发者则会有选择性地学习,他们根据自己的经验选择他们认为更有生命力的编程语言。
13 Node.js 独占鳌头
Node.js 是大部分开发者最喜欢的框架,作为可用于后端开发的 JavaScript 框架,Node.js 成为全年龄段开发者的不二之选。而在前端框架方面,我们都知道,AngularJS 和 React 才是当下的时兴,不过这种喜爱也只存在于年轻开发者当中。
45 岁至 54 岁的开发者对 AngularJS 和 React 的喜爱程度不如年轻人,但他们却更喜欢 Vue.js。
14 相比人才短缺,技术能力的评估才是招聘中最大的难题
根据 7000 多家雇主的反馈,简历目前仍然是招聘过程中最为常见的评估依据。我们的调查数据显示,81% 的招聘经理在最开始会使用简历来筛选候选人。
被问及招聘过程中最大的挑战是什么,招聘经理们一致表示,对候选人技术能力的评估是最大的难题,这个问题比人才短缺还要严重。与此同时,只有 55% 的开发者表示简历可以反映出他们的真实技术水平。
15 开发者更看重工作与生活的平衡
招聘经理在招聘描述里会着重描述职位的技术栈要求、工作内容和福利,但这些不应该成为吸引人才的主要因素。
相反,开发者们最关心的是工作和生活的平衡。开发者们将这点列为他们最期待的一项,而职业成长仅位居第二。其中,美国开发者比其他国家(如亚洲和欧洲)的开发者更看重这一点。
尽管在小公司工作并不是大多数人的愿望,但仍然位列前三。对于 25 岁之后的开发者来说,工作和生活的平衡是最重要的一件事情,当然,对于 18 岁至 24 岁的开发者来说,其重要程度会稍低。
加拿大的开发者更看重薪资报酬,而澳大利亚则把公司文化放在首位。
我们发现这里存在一个矛盾点,就是开发者一方面希望做到工作和生活保持平衡,另一方面又对学习和成长充满渴望。事实上,因为工具变化无穷,要跟上变化的脚步会让开发者感到精疲力尽。不过,好奇心和兴趣会让他们冲忙动力。专注于做自己喜欢的事情,可以更好地平衡工作和生活。
16 弹性工作制大受欢迎
我们知道,工作和生活的平衡对于不同的人来说具有不同的意义。于是,我们进一步深入了解开发者们真正想要的是什么。
总的来说,弹性工作时间(安拍在早上 10 点到晚上 8 点之间)是实现工作和生活平衡的一种方式。
开发者希望他们的上司跟关注产出,而不是呆在办公室座椅上的时间。远程办公也是不错的选项。25 岁以后的开发者非常希望能够进行远程办公,而 25 岁至 44 岁之间的开发者强烈建议在下班后关闭电子邮件。
17 职业成长对于学生来说最为重要
学生在找工作时最关心的是他们将来在职业方面的成长空间,薪资仅拍在第 7 位。工作与生活的平衡对学生来说也很重要,但仅拍在第 2 位。
学生们渴望学习,不断挖掘自己的潜力,所以把工作与生活的平衡放在了后面。
18 VIM 编辑器大获全胜
VIM 还是 Emacs?
VIM 打败了其他编辑器,大获全胜。VIM 的拥护者说,VIM 是一款非常强大的基于键盘命令的编辑器,这也就是为什么那么多开发者喜欢 VIM。
19 创始人在 10 岁之前就开始编程的比例是其他角色的 3 倍
从 5 至 10 岁就开始编程
15% 的创始人在 10 岁之前就开始编程,而其他角色比例只有 5%。