软件工程将在5到10年内面目全非

摘要
本文源自Y Combinator于2025年5月发布的一段短视频,核心论点是:今天的软件工程岗位在五到十年后将不复存在。未来虽然仍需要聪明的、懂得驾驭AI编程机器 (AI Coding Machines) 的人才——如果我们仍称他们为"软件工程师"也未尝不可——但这份工作的本质将发生翻天覆地的变化。面对"我的工作可能会消失"这一命题,人们往往产生强烈的情绪反应,这是可以理解的恐惧。但回望历史,最早的计算机程序员 (Computer Programmers) 所从事的工作与今天的软件工程师截然不同:他们编写机器代码 (Machine Code),制作打孔卡片 (Punch Cards),随后我们通过构建更高级的工具,将工作从机器层面抽象出来——面向对象编程语言 (Object-Oriented Programming Languages) 以及围绕代码编写的各类工具链即是如此。AI编程的浪潮本质上只是又一次抽象:它让人类成为更高层级的智能体 (Higher-Level Agent),而非亲手书写每一行代码的人。
今日软件工程的消亡
当前软件工程师的日常工作——手动编写代码、调试、代码审查——在未来五到十年内将发生根本性变革。这并非意味着"编程"这一需求的消失,而是意味着实现方式将从人类逐行手写代码,转向由AI系统完成大部分编码工作。未来仍需要智慧且擅长驾驭AI编程机器的人才,但如果仍沿用"软件工程师"这一头衔,其工作内容将与今日截然不同。
恐惧与历史的启示
当人们听到"我的工作或我朋友的工作可能会消失"时,往往会产生强烈的情绪反应,这自然是令人恐惧的命题。然而,历史的视角提供了重要的参照:最早的计算机程序员的工作形态与今天的软件工程师几乎没有相似之处。他们操作的是机器层面的底层逻辑——编写机器代码、制作打孔卡片,与今天的抽象编程世界相去甚远。
编程的抽象化演进史
编程的发展史本质上是一部抽象化 (Abstraction) 的演进史:
- 第一层抽象:从机器代码到汇编语言,将人从直接操作硬件指令的繁琐中解放出来。
- 第二层抽象:从低级语言到高级语言,尤其是面向对象编程语言的出现,将数据与行为封装为对象,极大提升了代码的可组织性与可复用性。
- 第三层抽象:围绕代码编写的各类工具链——编译器、调试器、版本控制系统、集成开发环境等——进一步将开发过程中的机械性工作交由工具处理。
每一次抽象都让程序员从更低层的机械操作中解放出来,得以专注于更高层级的设计与逻辑。
AI:编程的又一次抽象
AI编程的兴起并非一场断裂式革命,而是抽象化演进的自然延续。正如面向对象编程语言让程序员无需关心底层内存管理,AI编程工具让程序员无需亲自书写每一行实现代码。人类的角色从"代码的编写者"转变为"更高层级的智能体"——负责定义需求、设计架构、评估AI产出,而非逐字符地构建软件。这一转变虽令人不安,但从历史来看,每一次抽象都扩大了程序员能完成的工作范围,而非缩小。拥抱这一趋势的人,将在下一个时代中获得更大的杠杆。