参与张倩 蒋思源

Python与PHP的对决:谁是工程师最喜欢和最讨厌的语言

在线招聘公司 Hired 本周发布了一份《2019 软件工程师现状》报告。该报告整合了其招聘网站上的数据,超过 700 名来自世界各地的求职者参与了问卷调查。报告得出了很多有意思的结果,比如:开发者最喜欢的语言是 Python,最讨厌 PHP,但雇主最需要的是 Go;区块链需求增长最快,但开发者最想学机器学习;近半数的工程师更喜欢结对编程,但并不喜欢跨职能协作。

  • 报告地址:https://hired.com/page/state-of-software-engineers/

开发者最喜欢 Python,但雇主最需要 Go 语言

雇主最需要的语言技能:Go

为了弄清楚雇主对哪些编程技能最感兴趣,Hired 研究了求职者在到六周内收到的面试邀请数量。如下图显示,谷歌的 Go 语言是雇主最需要的编程语言技能,可能因为这方面的开发者比较紧缺。掌握这一语言的开发者只占整个求职网站开发者数量的 7%。Scala 语言排名第二,只有 3% 的开发者将其作为自己的主要语言,因此学 Scala 也是恰逢其时。

左边的「Skills」一栏表示雇主最需要的语言技能,根据 2018 年每位求职者的平均面试邀请排名得出。中间五列表示这些语言在各个地区的排名。最后一列表示以各编程语言作为开发者主要语言的百分比。图源:Hired。

有几个城市的地区差异非常明显,例如,以 C 语言为王牌的求职者最好去巴黎;C# 语言人才适合去多伦多;想去纽约就要学 Ruby。

报告还显示,R 语言已经垫底(在 IEEE 的年度排名中 R 语言也是极速下降)。

开发者「最喜欢」Python,最讨厌「PHP」

随着机器学习的兴起,Python 逐步成为了最受欢迎的语言,在这份榜单中也不例外。与此相对,「最讨厌」的语言落到了 PHP 头上,不过我们可能还是相信「PHP 是世界上最好的语言」。Java 的排名就比较有意思了,它在「最喜欢」和「最讨厌」的语言榜单上排名都很靠前。

很难说清楚一个人为什么喜欢/讨厌某种语言。这些开发者给出的讨厌理由主要是「用它写代码没什么乐趣」,而喜欢某种语言多是因为「有很多学习和开发资源」可以利用。而关于「缩进应该用 tab 还是 space 键」的世纪之争也在报告中给出了结果,tab 以 54% 的比例碾压 space 的 24%。

很显然,雇主想要的语言技能和开发者的喜好之间存在很大的差异。开发者最喜欢的三种语言(Python、JavaScript 和 Java)在雇主那里只能排到第 12、6 和 9 位。

区块链需求增长最快,但开发者最想学机器学习

来自 Hired 的数据(下图)显示,全球区块链工程师的需求正在飙升,同比增长 517%。精通区块链的工程师通常拥有后端工程师、系统工程师或解决方案架构师等头衔,区块链被列为该职位所需的技能。

各领域工程师需求增长情况。

从薪资水平(下图)来看,区块链工程师的职位也极具吸引力,在被调查的五个地区都占据着榜单的前三位。

纽约、旧金山湾区、多伦多、伦敦、巴黎不同领域顶级工程师薪资水平。

需求量大、薪资高是不是就意味着工程师们会一拥而上呢?答案好像是否定的。报告显示,在回答「你最想要学习什么技术或技能」这一问题时,只有 12% 的人将区块链作为首选。而更多的人(61%)选择了机器学习。从技能来看,市场的需求和开发者的兴趣也并不总是匹配的。

近半数的工程师更喜欢结对编程,但并不喜欢跨职能协作

团队合作有助于提高成功率,至少在开发工作中是这样。下图中的调查数据显示,近半数(48%)的软件工程师认为结对编程(一种开发方式,两名程序员在一个工作站上工作)的工作方式能够提高自己在一家公司工作的意愿。

开发者可以通过结对编程获取明显的收益,如捕获 bug。这方面最优秀的例子要数 Jeff Dean 和他的「好基友」Sanjay Ghemawat。他们一起在谷歌工作,在一台电脑上写代码,就像「一个大脑的两个部分」。(参见:Jeff Dean 的激荡人生:我和 Sanjay 在同一台电脑上写代码

这种方式对初级团队成员尤其有益:42% 的开发者认为结对编程对初级工程师有益,但对高级工程师没有什么帮助。40% 的开发者认为更多企业应该实施结伴编程,但企业还在纠结。五分之一的人认为结对编程可能会造成最后所有的工作都落在一个人头上,14% 的人认为这种方式会让那些不合格的开发者借助同伴的帮助蒙混过关。

虽然工程师们不介意彼此协作,但与其他部门的人合作就另当别论了。26% 的人认为销售部最难合作,其次是市场部(23%)、HR(20%)、产品部(11%)和设计部(9%)。

除以上几点外,报告中还有一些有意思的结论,如:1/5 的软件工程师是自学成才;43% 的开发者更喜欢在有开源项目的公司工作。具体内容请参见原报告。 

参考链接:

https://hired.com/page/state-of-software-engineers/

https://spectrum.ieee.org/view-from-the-valley/at-work/tech-careers/what-programming-languages-engineers-and-employers-loveand-hate

产业PHPPython
2
相关数据
区块链技术

区块链是用分布式数据库识别、传播和记载信息的智能化对等网络, 也称为价值互联网。 中本聪在2008年,于《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币社会网络,开发出第一个区块,即“创世区块”。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

结对编程技术

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。 一个人输入代码,而另一个人审查他输入的每一行代码。 输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。 两个程序员经常互换角色。

推荐文章
暂无评论
暂无评论~