我们永远不会有足够的软件开发人员

2020-10-28 06:42:03

尽管努力增加计算机科学毕业生和软件工程师的数量,但仍有大量开发人员退出该行业。

26岁时,59%的工程和计算机科学毕业生从事与其研究领域相关的职业。到50岁时,只有41%的人在同一领域工作,这意味着到职业生涯中期,整整有30%的人退出了该领域。

相比之下,工程和计算机科学专业毕业后进入无关领域的比例要高得多,只有10%-15%的人在26岁后退出:

工程师经常离开工程部门,转而担任非STEM管理职务。毕业进入管理行业并不令人意外。令人惊讶的是,这些都是非STEM职位。随着时间的推移,工程师会将技术角色转换为非技术角色。

与编程相关的工作技能流失率很高。随着时间的推移,雇佣软件开发人员的公司所需的技能类型变化比其他任何职业都要快。

为了证明这一点,研究人员分析了2007至2019年期间超过4万个在线招聘公告和公司网站上的招聘信息,控制了雇主、地点和职业。他们将2007年很少见或根本不存在但在2019年流行的新技能定义为2007年流行但在2019年稀有或灭绝的旧技能。

到2019年,只有30%的职位空缺需要至少一项新技能,而47%的计算机和数学工作需要至少一项新技能(即,一种在2007年并不常见的技能)。

相比之下,在教育、法律、社区和社会服务等领域,这一比例不到20%

此外,2007年计算机和数学领域有16%的工作需要一项到2019年已经过时的技能(即,这项技能在2007年很常见,但在2019年相对较少),是其他任何工作类别的两倍多:

在计算机相关职业所需技能的变化中,约有三分之一是由于特定的新软件:

在2007年很流行但到2019年实际上已经过时的软件包括QuarkXpress、ActionScript、Solaris、IBM Websphere和Adobe Flash(啊,最后一个我认识的名字)。

数据科学、机器学习和人工智能在技术密集型工作中也出现了大幅增长。例如,2007-2017年间,需要机器学习和AI技能的STEM相关工作数量增长了4倍以上,触及了超过15%的STEM工作:

为了更好地比较不同职业的技能更改率,研究人员提出了一种技能更改率的衡量标准,跟踪从2007年到2019年每个职业内各种技能的绝对增长或下降。在招聘信息中,所需技能变化迅速的职业得分较高,而技能变化不大的职业得分较低:

到目前为止,与计算机相关的职业得分最高,为4.8分。请注意,这一测量的平均值和标准差分别为~3和~1,因此与计算机相关的工作与美国的典型工作相差近两个标准差。

与此同时,教育和体力劳动领域的工作技能变化得分非常低,通常低于2分。

我们可以获得更细粒度的信息,并查看具体的工作角色。这种详细程度使差异更加明显(仅显示角色变化最快的部分):

在这个国家的所有工作中,网络开发人员的技能更改率最高。接下来是销售工程师,这是另一个经常是技术性的角色。数据库管理员、计算机网络架构师、系统管理员和应用程序开发人员都进入了前10名,我们在前30名中还看到了许多其他的技术角色。这里的平均值和标准差是相似的,就技能随时间的变化而言,Web开发与美国典型工作的标准差超过3个标准差。

然而,你可能会认为,当一个人变得更有经验时,技能的改变最终会稳定下来。

你就错了。软件工程工作的技能在整个职业生命周期中变化很快:

在计算机和工程职业的入门级职位中,一直到需要12年以上经验的职位,2019年需要至少一项新技能的职位招聘比例实际上是相同的,40%-45%。

相比之下,2019年29%的入门级非计算和工程职位需要至少一项新技能,但对于需要四年以上工作经验的工作,这一比例下降到24%。

这意味着,有经验的STEM工人在2019年寻求就业时,往往被要求拥有2007年或更早进入劳动力市场时并不需要的技能。

软件工程师永远无法逃脱技能变化的漩涡,即使在他们职业生涯的许多年里也是如此。有经验的工程师必须学习和采用他们刚开始时甚至不存在的技术。开发人员必须不断地重新装备自己,即使在他们的正规教育结束后也是如此。

在技能变化增加一个标准差的职业中,在职业生涯的头几年,工资会高出约30%

如果我们同时剔除变化最快和变化最慢的领域(高端是工程/计算机科学,低端是卫生/教育),那么变化较快的角色的早期收益溢价将增加到约60%:

然而,请注意,薪酬优势会随着时间的推移而下降。当一个人接近50岁时,在快速变化的领域工作的工资溢价大幅下降到只有20-30%,而变化较慢的职业则是如此。

这是另一种看待薪酬优势不断侵蚀的方式。下面的图表模拟了按大学学历类别划分的普通工人的收入,以2016年美元计算,年龄在23岁到50岁之间。

然而,这一溢价随着时间的推移而下降,因为CS和工程学毕业生的收入随着时间的推移持平,而他们的同龄人的收入增长更快,持续时间更长。

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

不包括商科专业,软件工程的收益溢价在百分比和绝对美元方面都会随着时间的推移而下降,以至于工程师的收入几乎不会超过社会科学专业:

但是,把重点放在大学专业上有点误导。这种现象与一个人的学习领域关系不大,更多的是与职业选择有关。

为了证明这一点,研究人员绘制了不同类别员工相对于那些非工程/计算机科学专业从事非工程/计算机科学工作的人的收入溢价。

主修工程或计算机科学,但从事无关领域工作的员工实际上看到,随着时间的推移,他们的收入优势是复合的,而不是下降的。

另一方面,无论专业如何,从事工程或计算机科学工作的个人认为,随着时间的推移,他们的收入优势会被侵蚀:

相对回报下降是STEM工作的一个特征,而不是专业。从事STEM职业的非STEM专业学生的收入溢价从近40%开始,但在十年内下降到20%。相比之下,对于从事非STEM职业的计算机科学和工程专业的学生来说,相对收入优势随着时间的推移而增长。

事实上,在非CS领域工作的计算机科学专业的学生经历了与非开发人员同龄人相反的动态-他们的相对收入溢价随着他们的进步而上升。CS专业的学生在早期不会比其他类似的非CS专业的学生挣更多的钱,但最终比他们的同龄人多赚近20%。

想象一下一个简单的模型,工人选择他们的职业是为了最大化收入,这是他们自己技能或人力资本的衍生品。随着时间的推移,工人会获得新的技能,而他们现有技能的价值则会因为时代的变化而有所贬值。

有些工人能力超群,学得比别人快,掌握技能的速度也更快。这些工人最初倾向于选择高技能、快速变化的职业,以最大化他们早期的职业收入。不那么令人印象深刻的工人将被归类为低技能、变化较慢的职业。

在一个人力资本从未贬值的世界里,我们可以想象,像软件开发人员这样的高技能个人将保持相对于其他专业人员的相对人力资本(和收入)优势,导致薪酬持续上涨和稳定的相对溢价:

但是,如果人力资本随着时间的推移而贬值,而软件开发等快速变化的领域的折旧率更高,那么开发人员最初的优势将随着时间的推移而减弱,缩小与非开发人员的差距:

这个简单的模型有助于解释我们在数据中看到的东西--随着有效人力资本差距的缩小,软件工程的收益优势消失了。

应用型专业,如计算机科学、工程和商业,教授特定于年份的技能,随着新技能随着时间的推移被引入工作场所,这些技能变得不那么有价值了。

软件开发方面的特殊技能很快就过时了。编程语言和开发框架已经过时了。Hadoop前一年风靡一时,第二年就成了老生常谈。就像一辆快速、昂贵的汽车在镇上行驶时很快就会贬值一样,如果没有持续昂贵的维护,软件工程师的技能和人力资本就会分崩离析:

直觉上,陈旧率高的职业要求员工每年学习许多新任务,这会减少学习成果,降低经验回报。

要了解原因,请回想一下我们刚才概述的模型。学得快的人比学得慢的同龄人积累人力资本的速度更快,这意味着当某些技能或能力失宠时,他们损失最大。事实上,在技能更改率较低的工作中,成为快速学习者的回报更高,因为随着时间的推移,学习可以复合,而不是减少相关性。

高能力的员工在所有工作中都学得更快。然而,在变化较小的职业中,能力的相对回报更高,因为学习收益会累积起来。

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

研究人员通过对STEM工作状态在其他一些变量上的回归来表明这一点,这些变量包括年龄和武装部队资格考试(AFQT)分数之间的交互作用,AFQT是一种常见的认知能力衡量标准。该系数为负值,在统计上具有显著性,这意味着在任何给定年龄在STEM工作的相对概率都会随着认知能力的下降而下降(下面的第一列和第二列):

结果表明,认知能力比平均水平高一个标准差的工人在23岁时在STEM工作的可能性高出4.9个百分点,但到34岁时在STEM工作的可能性仅高出1.6个百分点。

事实上,回归预测,到40岁时,认知能力较高的员工比认知能力较低的员工更不可能在STEM工作。

简而言之,认知能力较高的专业人士退出STEM职业生涯的时间更早、速度更快:

..。STEM专业在武装部队资格考试(AFQT)-一种广泛使用的学习能力的替代指标-上得分较高,他们离开STEM职业生涯的频率更高,年龄也更小。

增加软件开发人员的供应并不是一件微不足道的事情,因为该领域已经出现了高水平的开发人员流失率和流失率,如果该领域变得更大,这一数字只会增加。更大的软件开发劳动力池可能会压低工资,鼓励更多的开发人员离开该行业,特别是那些超过职业生涯中点的开发人员。在收益曲线的平坦部分,留在开发商的动机充其量也是微弱的。

随着时间的推移,最高能力、最快的学习者不成比例地离开了这个领域。他们有很多其他的方式来利用他们的智力和技能来获利。软件开发会带来严重的机会成本。这又一次具有讽刺意味,因为人们通常会预期最好的人会留下来,最坏的人会离开,但这不是我们在数据中看到的。随着任何给定队列的成熟,软件开发人才库的组合朝着认知能力较低的方向转变。

总而言之,这些观点表明,除非变化的速度足够慢,否则软件开发可能注定会出现长期的劳动力短缺。

..。快速的技术变革可能会导致技术技能的保质期很短。对于政策制定者和大学来说,在特定技术技能和一般技能之间进行权衡是一个重要的考虑因素,他们希望在培养下一代技能的同时教育当今的工人。

总而言之,我强调:从长远来看,高技能的人更喜欢高度稳定的职业。这让他们的相对能力和人力资本优势随着时间的推移而复合。技能的迅速下降不断地拉平了竞争环境,阻止了最优秀的人脱离群体。在这种情况下,提前退出比赛比陷入堆积如山更有意义。

多亏了大卫·戴明,卡迪姆·诺雷,这项研究的作者,这篇文章的大部分内容都是从他们那里衍生出来的。