2020年软件工程师择业指南
2020-04-20林琳
林琳
知既往才能见未来,为了让大家能在2020年获得更好的薪资和发展,特意整理了Hired发布的《2019年软件工程师行业状况》调查报告,该报告详尽揭示了全球程序员对工作职位、编程语言和技術学习等关键技能方面的诉求与趋势,以及全球范围内的雇主对软件工程师技能的需求和薪酬待遇。
过去的10年证明了创新能够以令人难以置信的速度发展并改变我们的生活方式。展望未来,像机器学习、区块链这样的技术已经开启了创新的新篇章。由于开发人员处于发展的最前沿,也是这场变革的中坚力量,难怪高管们都表示开发人才比金钱更有价值。
Hired报告深入研究了700多名开发者群体,其中包括按市场划分的顶级技能、主要编程语言和工作场所偏好,另外也深入了解了工程师们更喜欢哪种编程语言,是如何学习的,以及对自己的工作都有哪些好恶。
1.区块链工程师成为了最热门的职位
招聘开发人员是企业的首要任务,但并非所有的角色都是平等的。随着初创企业引入新的技术应用方法,大型企业将会继续寻求数字化转型,因此,所有希望招聘顶级技术人才的公司用人需求都会不断不发展。
来自Hired的招聘市场数据显示,全球对区块链工程师的需求正在飙升,同比增长517 %。对于对区块链角色感兴趣的开发者,不要被职位名称迷惑。对于精通区块链的工程师来说,他们通常符合后端工程师、系统工程师或解决方案架构师之类的职位,而区块链被列为这些职位所需的技能。在过去12个月里,对区块链开发者的需求呈爆炸式增长,预计随着企业开始实施的无数用例,从数字身份到智能合约,再到劳动力管理和分布式数据存储,这些需求还将继续增长。
拥有安全专业知识的工程师也很受追棒,这可能是由于数据泄露事件的数量不断增加,以及消费者对隐私的担忧与日俱增所致。在过去12个月里,企业对安全工程师的需求增长了132 %。随着企业加大投资力度,通过数据推动业务结果,并专注于创造个性化和预测性的客户体验,对专门从事数据分析和机器学习的人才的需求正在上升。对具备这些技能的工程师的需求,分别增长了38 %和27 %。
随着需求的增加,薪资也会随之水涨船高。在我们分析的大型科技中心中,区块链工程师的薪酬最高,位居前3名。在旧金山湾区,区块链工程师的平均收入为15.5万美元;而在伦敦,他们的平均收入为8.9万美元。值得注意的是,由于薪酬标准和竞争环境的不同,美国之外的科技公司的薪酬通常要低得多。但是,也有积极的趋势:例如,在伦敦,《2018年薪酬状况报告》发现,技术人员的薪酬总体呈上升趋势;具体来说,根据伦敦的区块链工程师的数据显示,他们的收入仍然远高于不同专业的同行。在纽约之外,安全工程师和机器学习工程师的薪酬也是名列前茅。
我们罗列不同城市关键技术中心的软件工程师的薪酬数据发现,对人才需求是随着城市不同而变化的。例如,游戏开发工程师是纽约薪酬最高的群体,平均年薪14.7万美元,而他们在其他城市的薪酬水平较低。在多伦多,自然语言处理工程师的薪酬飞涨,平均年薪为8.3万美元。
2. Go成为了最热门的编程语言
开发者对他们最喜欢的和最讨厌的编程语言都有自己的看法,这已经不是什么秘密。然而,对一些人来说,可能有一个秘密就是:公司也有自己的偏好。
数据显示,有Go经验的求职者是最受欢迎的,这可能是因为Go是由Google设计的,这就增加了Go开发的求职者进入Google工作的机会。但是,当我们调查开发人员实际使用何种编程语言时,Go却不在前列,只有7 %的人声称他们主要使用Go编程语言。Scala,Ruby,TypeScript,Kotlin也有类似的趋势,都排在前5名,但在开发者中的熟悉程度较低。这种稀缺性可能会推动需求,而这一趋势可能还会持续下去,直到这些编程语言成为开发者社区中的通用编程语言。
JavaScript在开发者使用的顶级语言中名列前茅,占62 %,这就使得TypeScript变得特别有趣:它是Java Script的超集(对JavaScript程序员来说学习起来也更简单),但却只有12 %的人使用TypeScript,尽管它是全球第四大最受欢迎的编程语言。这就给那些已经熟悉JavaScript的开发者提供了学习TypeScript的机会,并对希望招聘开发人员的公司更有吸引力。
下面的数据分析了求职者使用特定编程语言的经验和公司面试他们的应聘职位的兴趣之间的关联性。它特别关注软件工程师在Hired求职期间(平均2~6星期)收到面试请求的数量。
值得注意的是,在旧金山湾区、多伦多和伦敦,数据显示了另一番景象:TypeScript要领先于Go,Scala,Ruby,成为这些市场中最受欢迎的编程语言。纽约的雇主最喜欢Ruby。然而,在所有市场中,R是需求量始终最低的编程语言。
为了进一步分析编程语言的需求,根据多年的职业经验研究了需求是如何受到影响的。我们发现,在那些具有几年工作经验的求职者中,Ruby的需求尤其旺盛:在当前的招聘市场中,熟悉Ruby并有6年以上工作经验的求职者收到的面试次数,几乎是市场上其他有6年以上工作经验的求职者的2倍。在拥有4年或更少的工作经验的求职者中,那些熟悉TypeScript和Go的人的需求量最高。
很明显,雇主对某些技能的需求比对其他技能的需求更强烈,但这只是其中的一部分。不管有没有需求,总是有一些编程语言是开发者最喜欢的。为了了解开发者社区对使用这些语言的感受,我们请他们权衡一下哪些编程语言是他们真正喜欢的,哪些编程语言是不喜欢的,最重要的是:为什么喜欢,为什么不喜欢。
我们了解到,Python和JavaScript遥遥领先,有51 %的开发者声称Python是他们最喜欢的语言之一;而JavaScript紧随其后:49 %。我们还发现,对于Java,开发者要么喜欢它,要么讨厌它:它既是第三受欢迎的编程语言,但同时又是第二最讨厌的编程语言。而PHP以20 %成为第一最讨厌的编程语言。
是什么因素让开发者使用特定的编程语言?开发者社区的性质。74 %的人认为开发资源是他们热爱编程語言的主要原因之一,而58 %的人则认为社区氛围和欢迎新人的意愿是他们看重的。
3.解密面试过程
在得到工作机会之前,开发人员就必须成功通过一系列的编码考试、白板面试和行为面试。他们到底是怎么看待这些面试方法的?简而言之,只有大约一半(54 %)的开发者强烈赞同并同意编码考试有效测试了他们的能力,超过一半(63 %)的开发者则认为它们与实际工作无关。
在一系列可能的测试中,他们并没有因为行为面试而大汗淋漓,只有21 %的人表示这是面试过程中压力最大的部分。但是,编码考试和白板面试则是另一回事了。我们发现,63 %的开发人员认为编码考试是面试过程中压力最大的部分,59 %的开发人员认为白板面试带来的压力最大。
4.揭示开发人员的工作风格
团队合作使梦想成真,至少开发人员是这么认为的。调查数据显示,软件工程师对结对编程很感兴趣,这是一种开发方法,2个程序员在1个工作站上一起工作。事实上,48 %的人表示,如果他们提供结对编程的话,会增加他们在公司工作的兴趣。
开发人员也看到了结对编程的明显好处。将近一半的开发人员认为结对编程更有效,因为它有助于在开发过程中捕捉Bug。这对初级团队成员特别有用:42 %的受访者认为结对编程对初级工程师有好处,但对经验丰富的人来说没有意义。尽管40 %的受访者认为应该有更多的公司实施这一做法,但公司仍在解决这些问题。1/5的受访者认为,结对编程是恶意让一个人完成所有的工作,14 %的受访者则认为结对编程可以让不合格的开发人员因合作伙伴的帮助下而滥竽充数。
虽然工程师不介意彼此合作,但与跨职能团队合作并不是他们的最爱。26 %的人表示销售是最具挑战性的,其次是市场营销(23 %)、人力资源(20 %)、财务(15 %)、产品(11 %)和设计(9 %)。
5.关于开源的看法
开源社区以忠诚而著称,但经常贡献者的人数比想象的要少。调查数据显示,只有9 %的受访者经常为开源做出贡献,53 %的受访者以前就从未对开源做出过任何贡献。
缺乏开源参与可能是因为促成开源的关键驱动因素:30 %的开发人员表示,他们之所以为开源做出贡献是因为它很有趣。考虑到他们繁重的工作日程,开发人员可能并没有足够的时间去做一些“为了好玩”的事情,因为这些事情并不一定对他们的日常工作有所帮助。
公司参与开源的程度不会影响开发人员为这些公司工作的兴趣,50 %的受访者表示,这根本不会影响他们的决定。话虽如此,43 %的开发人员表示,他们确实更愿意为那些为开源项目做出贡献的公司工作,尽管这并不是什么大问题。随着公司在当今竞争激烈的招聘环境中寻求差异化,他们参与开源项目可能是吸引顶级人才的机会,这些顶级人才看重的是这样的一个组织,该组织为他们的团队优先安排时间,以一种为开发人员社区增值的方式参与其中。
另外,63 %的受访者表示宁愿早点完成工作,也不愿意睡懒觉或加班熬夜。
38 %的受访者表示他们最大的不满是不切实际的最后期限。