写点什么

一个二十多年老兵的忧心:那条从 Debug 开始走向资深工程师的路,正在崩塌

灯火明
  • 2026-05-18
    北京
  • 本文字数:3881 字

    阅读完需:约 13 分钟

【编者按】不久前,InfoQ 曾报道了《微软警告称,AI 正在掏空初级开发者的培养渠道》。微软 Azure CTO Mark Russinovich 等人的研究文章指出,当企业将初级任务自动化以追求短期 ROI 时,不仅让新人背负了丧失深度思考能力的“认知债务”,更导致了软件人才金字塔底座的崩塌——我们正在失去培养下一代资深工程师的“训练场”。

在传统的软件工程人才培养链路中,那些看似低价值的 Bug 修复、文档整理和简单模块编写,恰恰是新人理解复杂系统、建立工程直觉的“训练场”。当 AI 抽干了这些高训练密度的初级任务,软件行业赖以生存的人才管线正面临断裂的风险。

InfoQ 始终关注开发者生态的长期演进。我们认为,这不仅是一个就业市场的波动问题,更是一次关于“工程能力如何传递”的深层拷问。

如果说微软的文章是从机构研究视角发出的宏观警告,那么今天这篇文章,则是一位拥有 20 年编程经验的行业老兵,从工程实战和人才培养的一线发出的深度回响。作者敏锐地指出:软件行业那条“从 Debug 和文档起步,在琐碎任务中理解系统”的自然进化路径正在崩塌,并从工业界用人策略的漂移、高等教育体系的滞后以及科研逻辑的异化三个维度展开分析。

为什么你必须读这篇文章?

  • 如果你是企业管理者: 你需要思考,在追求短期 ROI 的同时,如何避免砍掉公司未来的“种子粮”。

  • 如果你是教育工作者: 面对“教育滞后于工业”的宿命,如何重构课程体系以应对“人才成熟周期前移”?

  • 如果你是正在入行的准开发者: 当“人人都能写代码”成为现实,你必须重新审视职业程序员的核心护城河——那些 Prompt 给不了的“背锅经历”和系统判断力。

AI 降低了写代码的门槛,却在无形中抬高了成为职业工程师的门槛。以下是关于这场“无声革命”的观察与思考。

如果 AI 持续替代大量初级开发任务,未来五到十年内一个关键问题会变得越来越突出:中高级工程师从哪里来?

过去,计算机行业有一条相对自然的人才培养路径。新人从模块代码写起,自行调试,编写注释和文档,再经过 commiter review 代码风格,跑 CI,通过后最终 merge 入仓。在这套流程中,新人会逐渐理解系统、业务、工程习惯和组织协作。模块本身可能并不复杂,但这些初级任务能让他们快速上手。

而现在,AI 编程工具最先压缩的恰恰是这些高确定性、高重复性,但对于初级工程师来说又有最高训练密度的任务。时下各大公司都在思考如何有效引入 AI 编程工具让资深工程师提高效率,同时压缩初级开发岗位节省成本。但长期看,这势必会拔掉培养资深工程师所需的“苗子”。

因此,文章开篇那个问题的本质是:当初级任务不再具备经济价值时,行业对初级工程师的要求会如何变化,而岗位训练机制又会如何变化?

下面我将尝试从工业界和教育界两方面聊聊这个问题可能的答案。

对工业界的影响

从工业界看,AI 编程工具普及后,企业用人策略可能出现明显分化。

对于不愿意或没有能力培养初级开发的中小企业,以及非 IT 企业内部的开发部门来说,最现实且短期理性的策略可能是减少初级岗位,用少量资深开发加 AI 工具,再配合外包来维持开发需求。对单个公司来说这很合理:既然 AI 可以完成一部分明确任务,为什么还要投入时间培养经验不足的新手?

但从行业整体来看,如果所有公司都如此,长期就会出现人才管线断裂。初级岗位减少,真实工程训练减少,能成长为资深开发的人也会减少。几年之后,企业可能会发现资深开发更贵、更难招,而大量历史系统、技术债务会堆积,这些仍然需要真正有经验的人来处理。

大厂的情况可能会有所不同。有资源、有长期人才战略的公司,仍然可能保留实习项目、应届生项目、导师制度等较为完备的内部培养机制,但对初级岗位的门槛会显著提高。

过去初级岗位只需要能完成明确任务,现在则需要具备 AI 协作、小规模代码库分析、模块化验证与调试等等能力,甚至承担一些基本工程判断责任。而一个刚出大学门、连 stack trace 都可能不太会读的应届生是很难达到这个标准的。

更进一步地说,AI 工具的出现让公司期待初级岗位一开始就具备更接近中级工程师的判断力。

这样的变化对于计算机行业的新人来说,意味着更残酷的竞争:大厂会培养少数高潜新人,名校、强实习和开源或研究项目经历会成为更重要的敲门砖。

计算机行业的入口不会完全关闭,但会更卷:少数新人进入高质量培养计划,多数人被挡在门外或流向边缘技术岗位。这代表了行业人才成熟周期的整体前移

未来,行业可能会要求学生在大学早期甚至大学前就已经有相当的计算机基础:较为熟练的使用一门高级语言、熟悉基础算法和数据结构、了解基础的 OS/网络/体系结构知识、,甚至有 OI/ACM 竞赛经验或者个人项目集。想从事计算机行业的人,可能会像现在的艺术生那样从小就开始学习专业知识并接受相关训练。传统意义上“大学时才系统接触编程,毕业后从初级岗位开始一步步迈向资深”,这样的例子可能会从主流变成越来越罕见的例外。

AI 降低的是“生成代码”的门槛,但却提高了“成为职业程序员”的门槛。

对计算机高等教育的影响

在这种行业背景下,计算机高等教育会受到很大冲击,原先的旧教育体系面临较高的重构压力

过去,大学主要负责基础教育,企业负责工程训练。传统计算机专业通常会教授算法、数据结构、操作系统、网络、计算机组成或体系结构,加上一门编程语言,再配合若干项目课。这个体系过去大体可行,因为本质上学生在大学里学的是编程基础课,真正的工程能力往往是通过进入企业后从事初级开发岗位补上来的。

但如果 AI 压缩了初级开发岗位,这套分工就会被打破,大学不可避免地需要承担更多原本由企业完成的训练功能。也就是说,高等教育不能只教理论基础,还需要把更多“企业里初级开发会要干的活”模拟进课程体系。

一个理想的方向,是在高等教育中建立更接近真实工程环境的训练机制:比如组织学生阅读一个陌生的小型代码库并模拟可能出现的生产事故。而后引导学生复现并分析错误根因,通过调试修复并提交 PR,接受 peer review,写单元测试,做事故复盘等完整流程。

这些训练和传统课程不同。它们不只是让学生“知道某个知识点”,而是让学生理解一个工程系统是如何长期运行、演进和出问题的。

但这对高等教育资源要求很高,它需要一个足够复杂又不至于太吓人的代码库、需要助教们承担指导和 review 职责,需要鲁棒的测试环境及 CI 基础设施,甚至需要和工业界合作。强校可能有条件做到,普通院校很难完整承担。结果可能是,计算机高等教育本身也会进一步分化:有些学校可以提供真实工程训练,有些学校仍然停留在传统课程和孤立项目作业上。

与此同时,原有的理论课也不能丢。AI 时代的理论基础可能更重要,因为只有理解底层机制,人才有能力判断 AI 生成的代码是否可靠。但理论课的教法需要更接近真实工程问题:

  • 算法和数据结构不能只停留在刷题和复杂度分析,还要介入数据的实际组织和维护。

  • 操作系统不能只讲进程、线程、虚拟内存和文件系统,还要面对资源争用和系统故障。

  • 网络不能只讲 TCP/IP 和 DNS,还要排查超时、重试风暴。

  • 体系结构不能只讲 pipeline、cache 和指令集,还要联系硬件约束,分析代码是计算 bound 还是吞吐 bound。

  • 编程语言课也不能只追求语法,而要训练可读性、错误处理、测试、模块化和维护性。

但问题在于,任何一个上过大学 CS 专业的人都知道,在当下的教育环境中,能把前半部分讲明白就已经非常了不起。即便是从现在开始做教育改革,到真正产生效果也需要相当长的时间,而 AI 工具的普及只用了两三年。

教育变化通常滞后于工业变化。这种滞后会造成一个现实错位:一部分学生在旧体系下被培养,但毕业时需要面对的已经是一个使用 AI 工具、对初级岗位要求更高的新市场。

在学术界,这种“错位”已经开始暴露问题了。我的不少师兄弟在学术界做教职带研究生,他们告诉我现在很多学生尝试新思路时强烈依赖 LLM 生成 demo、脚本和实验代码。这本身无可厚非,真正的问题是学生无法理解生成出来的代码,也不具备 debug 能力。一旦输出出错,代码无法运行或结果无法达到预期,他们无法靠自己定位,最终只能推给导师。而导师为了项目进度,又不得不亲自 debug。虽然短期内论文和 demo 可以继续推进,但最关键的训练环节被跳过了。这样培养出来的学生也很难满足未来市场对 researcher 的要求。

更严重的是,由于计算机科学大部分属于实验科学,debug 能力不仅是工程能力,也是科研可信度的一部分。如果学生不能对自己的实验系统负责,就很难判断实验结论是否建立在可靠实现之上。一个 silent bug 可能直接导致整篇论文得出错误的结论。

可能的未来培养机制

到目前为止,计算机行业都依赖一种很自然的学徒制:新人通过低阶真实任务逐渐成长。AI 时代,这种自然路径被压缩了。未来如果想延续中高级工程师培养链条,行业必须把训练机制显式设计出来。

一种比较现实的方案可能是“多方共同承担”:

  • 大学把学生训练到“可被学徒化”的水平;

  • 企业提供名额更少但更高质量的培养方案;

  • 开源社区提供真实协作与长期维护经验;

  • AI 工具提供个性化辅导、代码解释和低成本练习环境;

  • 导师和资深工程师训练新人形成判断、验证以及为代码负责的能力。

但重中之重,可能还是在于想要从事计算机行业的人自己。你需要尽早起步,最好能在大学前就打好基础,在大学期间能做几个拿得出手的作品或者参与研究或开源项目,这样才会让你跻身于“能够驾驭 AI 编程工具的初级开发”的及格线上。

这乍一听很可笑,就像是在招聘广告上写“要求应届生具备 3 年实际开发经验”。但在 AI 编程工具喊出“人人都能写代码”的 slogan 之后,这份“经验”就变成了区分业余和专业的唯一条件。

无论如何,只有拥有过真实的“背锅经历”(需求变化、系统故障、线上事故、拉通对齐、清理屎山等等),才能真正从“初级”成长为“资深”,而这些经历是任何 prompt 都给不了的。