软件开发人员将长期处于短缺状态

我们似乎一直在招聘软件开发人员。

虽然计算机科学和软件工程专业的毕业生逐年增长,但在职开发人员大量离职转行,导致软件开发人员一直处于短缺状态。

开发人员的“辍业”

软件开发行业面临严重的“留人”危机:

  • 在 26 岁这个年龄阶段,软件工程和计算机科学专业的毕业生中大约有 59% 从事与其专业相关的工作,但到 50 岁,只有 41% 仍留在这个领域,这意味着大约 30% 的人在职业生涯的中期退出该行业。

  • 同时,一部分软件工程和计算机科学专业的学生一毕业就选择进入与其专业无关的行业,而这些选择了与其专业不相关的行业的毕业生的行业留存率却高于那些选择了专业相关行业的毕业生,这些毕业生中只有 10 - 15% 的人选择在 26 岁之后转行。

软件工程师离开软件工程岗位随后选择非 STEM(科学、技术、工程和数学) 岗位的比比皆是,还有很多人毕业直接选择管理类工作,而且是与 STEM 无关的管理岗位。另外,一直都有工程师离开技术岗,转投非技术岗。

我们把这种现象叫做“开发人员的辍业”。开发人员大量辍业转行是一个非常严重的问题,这背后究竟是什么原因呢?

老技能走,新技能来

编程相关的工作的技术更新率很高,因此,相较于其他岗位,公司对软件开发人员的技能要求变化得更快。

为证明这一点,研究者们分析了 2007 - 2019 年间 40000 多个在线招聘网站和公司网站上的招聘信息,其中包括企业、所在地和工作岗位。研究者们把“新”技能定义为为 2007 年没有但 2019 年非常普遍的技能,把“老”技能定义为 2007 年非常流行但是 2019 年已经极少使用或已绝迹的技能。

  • 尽管 2019 年的招聘信息中只有 30% 的职位招聘要求应聘者具备至少一项新技能,但 47% 的计算机和数学岗位要求应聘者至少会一项新技能 (即在 2007 年不常见的技能)。

  • 然而,其他领域比如教育、法律、社区和社会服务的岗位中只有 20% 要求应聘者掌握新技能。

  • 另外,2007 年招聘的计算机和数学领域的 16% 的工作要求的技能在 2019 年已经过时 (也就是说,2007 年非常普遍的技能在 2019 年已经无人问津),这种情况是其他工种的两倍以上。

大约 1/3 的计算机领域的工作技能变化是因为出现了新软件:

  • 2007 - 2019 年间增长最快的软件技术包括 Python、R 和 Apache Hadoop

  • 2007 年非常流行但 2019 年已过时的包括 QuarkXpress、ActionScript、Solaris、IBM Websphere 和 Adobe Flash (我只知道这一个)

技术密集型工作对数据科学、机器学习和人工智能等技能的需求也有很大增长。例如,从 2007 到 2017 年,要求具备机器学习和人工智能技能的技术型岗位数量增长超过 4 倍,占 STEM 岗位的 15% 以上:

为更好的比较不同工作的技能变化频率,研究者们想出了一个衡量技能变化的方法,来记录每个职位要求的各种技能在 2007 - 2019 年间的绝对增长和减少。招聘信息中技能流行变化迅速的工作得高分,而技能流行变化不大的工作得低分:

  • 截至目前,计算机相关职位的得分最高:4.8 分。注意,这个衡量标准的平均值和标准差分别约为 3 和 1,因此美国计算机相关的工作与其他常见工作相差近 2 个标准差。

  • 教育和体力劳动类工作得分非常低,大部分都小于 2 分。

我们可以获得更细节的信息,也可以查看具体工作。越细越能证明结论(这里只展示了变化最快的工作):

美国境内的所有工作里,网页开发的技能变化最快,接下来是销售工程师(另一个技术岗)。数据库管理员、计算机网络架构师、系统管理员和应用程序开发人员都进入了前十名,前 30 名中还有许多其他技术岗位。这些岗位的平均值和标准差非常接近,其中网页开发在技能变化方面与其他常见工作的标准差相差 3 分。

由此可见,软件开发的确是一个变化频率非常高的工作。

你可能会认为,随着一个人经验越丰富,这种技能改变就会越来越少。

你错了。 软件工程岗的技能更新会贯穿从业者的整个职业生涯:

7

  • 2019 年的招聘信息中,从计算机和软件工程的初级职位,到需要12年以上工作经验的职位,要求至少一项新技能的职位比例实际上是一样的,即 40 - 45%。

  • 但在 2019 年的招聘信息中,非计算机和软件工程领域的初级职位只有 29% 要求至少掌握一项新技能,而对于要求四年以上经验的工作,这一比例下降到 24%。

这意味着,有工作经验的 STEM 从业者在 2019 年寻求就业时需要掌握新技能,而这些新技能在 2007 年或更早时间根本不需要。

软件工程师永远无法摆脱技能更新的漩涡,即使他们已在行业内工作多年。有经验的工程师必须学会并使用刚工作时还不存在的技术,即使离开校园多年,开发人员仍然要不断地重新调整自己。

唯一不变的是变化本身

如果你的大学专业对口的工作变化较快,那么这种工作的前期薪酬就相对较高。

  • 工作的技能变化每增加 1 个标准差,该工作前几年的薪酬会高出 30% 左右。

  • 如果去掉变化最快和最慢的领域(工程/计算机科学最快,健康/教育最慢),变化较快的工作的早期收入优势可以增加到大约 60%。

变化快的行业收入就高。

但要注意的是,这种薪酬优势会随着时间的推移而下降。当从业者接近 50 岁时,在快速变化的领域工作的薪酬优势会急剧下降,只有变化较慢的职业的 20 - 30%。

这里有另一种可以看到薪酬优势削弱的方式。下图模拟了不同大学学位的普通从业者从 23 岁到 50 岁的收入,以 2016 年的美元计算。

  • 相较于其他专业,计算机科学和工程专业的毕业生一开始具有相当大的优势。

  • 然而,随着时间的推移,这种优势会下降,因为计算机科学和工程专业的毕业生的收入会逐渐趋于平稳,但他们的同龄人的收入则会随着时间增长得越来越快。

  • 事实上,生命科学和物理科学毕业生的收入在 40 岁时就超过了计算机和工程专业的毕业生。

9

不考虑商科专业,软件工程的收入优势在百分比和绝对金额上都会随着时间的推移而下降,到后来工程师的收入几乎与社会科学专业的毕业生持平。

10

但关注大学专业多少有些误导。这种现象与一个人的专业关系不大,与职业的选择关系更大。

为证明这一点,研究人员绘制了多种从业者的收入优势,与那些非工程/计算机科学专业毕业同时从事非工程/计算机科学相关工作的人作比较。

  • 主修工程或计算机科学但不在相关领域工作的人的收入优势随着时间的推移而增长。

  • 无论专业是什么,从事工程或计算机科学类工作的人的收入优势会随着时间的推移而减弱。

相对收益下降是 STEM 工作的一个特点,不是专业的特点。非 STEM 专业的学生在 STEM 工作中的收入优势刚开始接近 40%,但在十年内下降到 20%。相比之下,计算机科学和工程专业的学生在非 STEM 职业中的相对收入优势会随着时间的推移而增长。

导致收入优势下降的是软件开发这个职业,不是大学专业。

事实上,计算机科学专业的毕业生如果在非计算机科学领域工作,他们的经历与他们的非开发人员同行正相反——他们的相对收入优势会随着就业时间的增加而增长。如果计算机科学专业的毕业生不在本专业相关领域内找工作,那么他们的早期收入跟那些非计算机科学专业的毕业生差不多,但最终会比他们的同学们多出近 20% 的收入。

以上是基本情况,接下来我们要探讨发生这种情况的原因。

人力资本也会贬值

想象一个简单的模型,人们选择职业是为了获得最多的收入,收入是个人技能或人力资本的衍生物。随着时间的推移,人们获得了新的技能,他们现有技能的价值就随着时代的变化而有所贬值。

其中一些人工作能力较强,比其他人学得更快,所以掌握新技能的速度就更快。这类人最开始会倾向于进入技能要求高、快速变化的行业,让前期收入最大化。而不太出色的人会进入技能要求低、变化较慢的行业。

我们可以想象一下,在一个人力资本永不贬值的世界里,像软件开发人员这样的高技能人才将保持人力资本(和收入)优势,从而促进薪酬持续增长,获得稳定的相对优势。

13

14

但是,如果人力资本会随着时间的推移而折损,那么对于软件开发这样快速变化的领域,折损率就会更高,所以开发人员的前期优势会随着时间的推移而削弱,与非开发人员的差距就会逐渐缩小。

15

16

这个简单的模型有助于呈现数据的情况——软件工程工作的收入优势随着有效人力资本差距的缩小而消失。

计算机科学、工程和商业等应用型专业教的是会过时的特定技能,随着时间的推移,新技能被引入,旧技能的价值就会降低。

软件开发的技能会很快过时,编程语言和开发框架也会很快过时。Hadoop 今年很火,明年就不再流行,就像一辆快速、昂贵的汽车在城里行驶会很快贬值一样,软件工程师的技能和人力资本如果没有持续昂贵的维护就会崩溃。

直观地说,折损率高的职业要求从业人士每年学习许多新知识,这就减少了学习收益,降低了经验的回报率。

学得快的人往往转行也快

冲击不会就此停止。讽刺的是,学得最快的人也是转行最快的人。

要了解其中原因,请回想一下我们刚刚概述的模型。学习速度快的人比学习速度慢的人更快地积累人力资本,这意味着当某些技能或能力失宠时,他们的损失最大。事实上,在技能变化率较低的工作中,快速学习者的回报率更高,因为所学的知识会随着时间的推移而复合,不会降低相关性。

所有工作都一样,能力强的从业者的学习速度都比较快。但对于变化慢的工作,能力的相对回报率更高,因为学习成果可以累积。

换句话说,对于最优秀的学习者来说,在快速变化的领域工作的机会成本是最高的,这会产生巨大的压力,使他们退出软件工程和其他快速变化的职业,选择更稳定的工作和行业。

研究人员通过将 STEM 工作状态回归到其他一些变量(包括年龄和武装部队资格测验(AFQT)分数之间的相互作用)上来说明这一点,AFQT 是衡量认知能力的常用方法之一,该系数为负值且具有统计学意义,这意味着在任何特定年龄从事 STEM 工作的相对概率会随着认知能力的提高而下降(下文第 1、2 栏)。

17

研究结果表明,认知能力高于平均水平 1 个标准差的从业者在 23 岁时从事 STEM 工作的可能性要高 4.9 个百分点,但到 34 岁时从事 STEM 工作的可能性只高 1.6 个百分点。

回归预测,到了 40 岁,认知能力高的人比认知能力低的人更不可能在 STEM 领域工作。

18

简单地说,具有较高认知能力的专业人士会更早、更快地放弃 STEM 工作。

在武装部队资格测验(AFQT,一种广泛使用的学术能力的衡量标准)中得分较高的 STEM 专业人员离开 STEM 工作的概率更高,而且离开时的年龄较小。

壮大软件工程人才库比想象中更难

我想说明两点:

第一,软件开发行业有人员流动问题。

增加软件开发人员并非易事,因为该领域已经出现了高水平的开发人员退出和流动,而且随着该领域发展得越大,这种情况就越会增加。更大的软件开发劳动力库可能会导致工资下降,进一步导致更多的开发人员离开这个行业,特别是那些已经过了职业生涯中期的从业者,他们处于收入曲线的瓶颈期,继续从事开发工作的动力会越来越弱。

第二,软件开发也有一个选择问题。

随着时间的推移,能力最强、学习最快的人会先离开这个领域,他们有许多其他获利方式,可以利用智力和技能来获得优势。软件开发有很大的机会成本。讽刺的是,人们通常会期望最好的人留下,最差的人离开,但我们在数据中看到的情况不是这样,与任何特定群体的成熟模式一样,软件开发人才库向低认知能力转移。

综上所述,除非变化的速度足够慢,否则软件开发注定会出现长期的劳动力短缺。

快速的技术变革可能会导致更短的技能保质期。政策制定者和大学教育者们应当考虑并权衡好具体技术和一般技能,这是教育当今从业者和搭建下一代劳动力技能的关键。

最后,我想强调的是:长远来看,技能水平高的人才更喜欢高度稳定的职业。这让他们的相对能力和人力资本优势随着时间的推移而复合。技能的迅速退化会不断地拉平竞争环境,使最优秀的人无法与其他人拉开差距。在这种情况下,及早退出比赛比陷入堆积如山的困境更有意义。

感谢 David Deming 和 Kadeem Noray,本文引用的大部分研究都出自两位研究者之手。

原文作者:Nnamdi Iregbulem
原文链接:Why We Will Never Have Enough Software Developers

注册登录 后评论
    // 作者
    R
    @RTE_Dev_Comm
    还什么也没有写~
    • 0
    // 本帖子
    // 相关帖子
    Coming soon...
    • 0
    软件开发人员将长期处于短缺状态声网技术社区 发布于 声网开发者社区