将软件工程的世界想象成一个庞大而繁忙的建筑工地。在一侧,是大学建筑师(高等教育机构),他们正在培养下一代的建设者;在另一侧,是工地经理(软件行业),他们雇佣这些建设者来实际建造数字世界的大厦。
这篇论文就像一份侦探报告,对比了大学使用的培训手册与工地经理发布的招聘启事。目标是什么?看看学生是否被教授了正确的工具,以建造行业真正需要的东西。
以下是他们发现的分解,使用简单的类比:
1. 设置:他们如何进行调查
研究人员并非凭空猜测;他们构建了一个数字机器人(定制的网络爬虫),扫描了 Indeed 上的 300 份招聘广告和英国的 30 份大学课程列表。随后,他们使用了一种“模糊匹配”工具——可以将其想象为一个智能翻译器,能够理解"React"和“前端框架”实际上是在谈论同一件事——将这些技能归类到 10 个不同的类别中(如“编程语言”、“系统结构”和“数据库管理”)。
2. 大惊喜:大学教什么 vs. 行业想要什么
研究发现,培训手册与工作要求正在使用两种略有不同的方言。
“过度准备”的领域(好事过头):
- 数据库管理:大学教授学生如何构建和管理庞大的数据图书馆(数据库),其频率是招聘广告明确要求的三倍。
- 类比:这就像烹饪学校花费 30% 的时间教学生如何磨刀,尽管餐厅的招聘启事只提到过一次“刀具技能”。行业假设你已经知道如何握刀,所以没有列出它,但学校仍在对此着迷。
- 编程理论与编译器:大学也花费大量时间深入探讨编程语言工作原理背后的理论“为什么”。行业对此的需求要少得多。
“准备不足”的领域(危险的差距):
- 系统结构:这是最大的差距。行业希望建筑师能够理解如何构建复杂的分布式系统(如云计算和微服务),其需求比大学教授的高出 79%。
- 类比:学校教学生如何完美地铺设单块砖,但工作要求他们设计整栋摩天大楼的蓝图,使其能够抵御地震。学生知道砖块,但他们不知道建筑物是如何保持结构的。
- 软件领域:这指的是了解软件在特定世界(如金融(FinTech)或医疗保健)中如何运作。行业对此的需求比大学提供的高出三倍。
- 类比:学校教你如何一般性地驾驶汽车。工作要求你驾驶救护车穿过医院,或驾驶油罐车穿过银行金库。学校没有教你这些特殊车辆的具体规则。
“恰到好处”的领域:
- 编程语言:这是学校与就业市场完全同步的唯一领域。大学教授 Python、Java 和 JavaScript 的频率几乎与公司要求的完全一致。
- 测试与验证:令人惊讶的是,这里的差距很小。大学实际上在教学生如何检查工作中的错误方面做得很好,这与一些声称测试是主要问题的旧研究相矛盾。
3. “远程工作”的转折
研究人员还考察了这些工作发生的地点。他们发现工作“性质”存在分歧:
- 开发人员(编写代码的人)最有可能远程(在家)工作。
- 工程师(通常处理硬件或实验室的人)仍然主要在现场(办公室)工作。
- 类比:如果你是程序员,你可以在咖啡馆工作。如果你是修复物理机器的工程师,你就必须在工厂。
4. 结论:接下来应该发生什么?
该论文建议,大学需要停止如此痴迷于“基础”(如独立的数据库理论),并开始更多地教授如何构建复杂系统以及如何将技能应用于特定行业。
- 建议:学校不应只教授“数据库 101",而应教授“如何为金融科技应用构建数据库”。不应只教授“理论”,而应教授“云架构”。
核心要点
该论文得出结论,“培训手册”有点过时。大学在教授基础(砖块)方面非常出色,但行业需要的是能够设计整栋摩天大楼(系统结构)并理解他们正在建设的特定社区(软件领域)的建设者。
为了解决这个问题,作者建议大学需要使用自动化工具(如他们构建的那个)来不断将他们的“培训手册”与“招聘启事”进行比对,以便在学生毕业之前更新课程。
以下是 Phan、Kuzminykh 和 Ghita 所著论文《理解高等教育机构与软件工程行业之间的技能差距》的详细技术总结。
1. 问题陈述
软件工程(SE)行业长期面临高等教育机构(HEIs)所教授的技术技能与就业市场所需能力之间的脱节。尽管已有众多研究指出了这一差距,但许多研究依赖于静态文献综述、主观调查或范围狭窄(例如仅关注软件测试或特定国家)。目前缺乏针对英国软件工程市场的自动化、可扩展且及时的专项分析,以将当前的本科课程与实时行业职位需求进行映射。核心研究问题是:英国高等教育机构与软件工程行业之间存在哪些显著的技术知识差距?
2. 方法论
本研究采用数据驱动的自动化方法,收集、处理并分析两个不同的数据集:行业职位发布和大学课程。
A. 数据收集
- 招聘广告:开发了一个基于Python 和 Selenium的定制网络爬虫,于 2023 年 12 月至 2024 年 3 月期间,从Indeed.com(英国区域)提取了 300 份全职软件工程师职位的招聘广告。该工具抓取了职位名称、地点、薪资和职位描述。
- 大学课程:手动收集了30 所英国大学(基于《Complete University Guide》排名最高和最低的大学)的本科计算机科学和软件工程项目的数据。内容包括课程标题和模块描述。
B. 数据处理与分析
- 文本清洗:使用自然语言工具包(NLTK)进行停用词移除、分词、小写化和 n-gram 生成,以标准化数据。
- 分类映射:使用两个既定框架对技能进行分类:
- ACM 计算分类系统(ACM CCS)
- 软件工程知识体系(SWEBOK)
将这些框架合并并细化为10 个具体技能类别(例如:系统结构、软件领域、数据库管理、软件设计与规划)。
- 模糊匹配:定制文本分析工具利用模糊关键词匹配,将职位描述和模块名称中的非结构化文本映射到这 10 个技能类别。
- 阈值:职位描述为 95% 相似度;模块分组为 75% 相似度。
- 过滤:排除模糊术语(例如单字母语言如"C"或"R"),以减少误报。
- 统计分析:进行频率分析,比较课程中模块的百分比与职位描述中提到特定技能类别的百分比。使用卡方检验分析工作性质(现场/远程)、工作类别(工程师/开发人员)和地点之间的相关性。
3. 主要贡献
- 自动化差距分析工具:开发了一个可扩展的网络爬虫和文本分析管道,专门用于将英国市场趋势映射到学术课程,克服了手动或基于调查研究的局限性。
- 英国特定实证数据:提供了针对英国境内技能差距的细粒度定量分析,该地区在全球比较研究中此前代表性不足。
- 细粒度技能分类:超越了“编程”等宽泛术语,分析 10 个不同的技术领域,揭示了细微的不一致(例如:过度强调理论 vs. 对架构强调不足)。
- 比较基准测试:直接比较了排名最高和最低的大学,揭示虽然课程结构总体一致,但顶尖机构略微更强调理论基础(例如:编译器设计)。
4. 主要结果
A. 课程与行业需求(差距)
将数据归一化为 100% 比例后,研究发现存在显著的不一致:
严重代表性不足(技能差距):
- 软件领域:行业需求比课程覆盖率高出约 198%(10.09% vs. 3.39%)。毕业生缺乏特定背景知识(例如金融科技、健康信息学)。
- 系统结构:行业需求比课程覆盖率高出约 79%(14.71% vs. 8.23%)。在云原生架构、分布式系统和微服务方面存在缺陷。
- 软件设计与规划:与行业需求相比,课程中对此的估值低约 20%(19.75% vs. 16.46%)。
课程中的过度强调:
- 数据库管理:大学分配的关注度比明确的职位需求高出约 165%(12.83% vs. 4.83%)。作者认为,这可能是因为数据库技能现在被视为“隐含的基础知识”,或已整合到更广泛的云/数据工程角色中。
- 开发框架与编程语言理论:两者在学术界相对于明确的招聘广告提及都被过度强调,这可能是由于行业中框架的快速演变以及编译器设计的理论性质所致。
高度一致:
- 通用编程语言:几乎完美一致(两者均约为 18%)。
- 软件验证与确认:高度一致,这与旧研究将测试列为主要差距的观点形成对比。
B. 就业市场特征
- 远程工作:26% 的软件工程职位完全远程,19.67% 为混合模式。这显著高于一般市场平均水平,尽管“现场”职位(54.33%)仍占主导地位,特别是涉及硬件的“工程师”职位。
- 地点相关性:工作地点与工作性质之间存在统计上显著的关系;伦敦的远程职位列表非常少,而“未知”地点的职位主要为远程。
5. 意义与建议
意义:
研究强调,主要差距不在于基础编码技能(这些技能已高度一致),而在于应用性、整合性和架构性知识。云计算和特定领域系统的快速演变速度超过了传统大学课程的静态性质。
对高等教育机构的建议:
- 课程重新分配:减少独立的理论数据库模块,将其整合到云数据工程和系统设计课程中。
- 新课程模块:引入专门的现代软件架构模块(微服务、云原生模式),以解决系统结构方面的差距。
- 领域专业化:与行业合作开发选修路径(例如金融科技、健康信息学),以弥合软件领域方面的差距。
- 顾问委员会:建立正式的行业顾问委员会,进行持续的课程审查,以跟上技术变革的步伐。
未来工作:
作者建议扩展数据来源至更多招聘网站,整合软技能分析,并将匹配引擎从模糊逻辑升级为**命名实体识别(NER)**模型,以更好地处理上下文、同义词和新兴技术。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。