从8岁敲代码到被AI接管,一名微软工程师“破防”:“我整整30年的编程生涯,几乎快成「历史文物」了!”

打开今日头条查看图片详情

【CSDN 编者按】这是一位拥有 30 年编程经验的老开发者的“自我清算”。本文作者 Paul Payn,目前是微软 CTO 领导下的首席研究工程师,从 Commodore 64 到大型语言模型,从敲代码到与 AI 共创,他亲眼见证了整个软件行业从“手写逻辑”走向“机器自动生成”的惊人跨越。当他意识到自己赖以为生的技能,正被工具以指数级速度超越时,那种震撼与失落,相信每一位程序员都能感同身受。

原文链接:https:///posts/historical-artifact/

作者 | Paul Payne 翻译 | 郑丽媛

出品 | CSDN(ID :CSDNnews)

好吧,我得承认——我整整 30 年的编程生涯,如今已经成为了一件“历史文物”。

AI 时代的浪潮,比我想象得更快。也许在不久的将来,人类回望当下时会觉得:当年居然真的是“人”在给机器写代码,简直滑稽。

打开今日头条查看图片详情

打开今日头条查看图片详情

我曾坚信,编程离不开人类

我从 8 岁那年开始学编程,那时的我正抱着一台 Commodore 64,翻着厚厚的用户手册,对着杂志上的示例代码一行行地抄。此后 40 年,我从未停止过学习:编程并不是一门“学会了就完事”的技能,而是一场永不休止的自我进化。每一代开发者,都要学会在浪潮里自我重塑。我们招程序员时,最看重的几项品质,包括适应性、独立学习能力和批判性思维,正是这种生存能力的体现。

从本质上说,编程需要一种“机械同理心”(mechanical sympathy)。你必须理解机器的底层逻辑:存储、内存、处理器、接口……在此之上,再去学习语言语法和工具链:什么样的字符组合,才能让系统真正执行。再往上,是抽象的世界:先应对大型程序,再到程序集群,最后是计算机网络系统。

程序员的核心工作之一就是 “管理复杂性”,所以学习和掌握相关方法至关重要。经验丰富的开发者会熟练运用各种抽象工具:数据结构与算法、配置与状态管理、封装思想、函数式与面向对象组合、实体与数据区分、事件与快照模式、循环与递归选择……这类知识无穷无尽。更别提每周都有新工具、新产品发布,都在不断重构你的技术栈。

然后就是权衡了,和所有工程领域一样,编程的本质也是做取舍。你要在处理性能与内存间取舍、在开发时间与功能完整度间取舍、在可靠性与成本之间取舍。经过一次次的权衡,最后才能诞生出“合格”的程序。

但程序不是孤立存在的,它们是为了解决人的问题——要变成真实的产品和服务。因此,程序员不仅要会写代码,还要懂用户、懂需求、懂商业,确保系统可行、能跑、能卖。并且,由于程序员写的程序要和用户交互,我们还必须时刻关注心理学、社会学,以及这些领域与技术的交叉点。

几十年后,我意识到,编程教给我最大的,并不是语法或算法,而是如何思考问题。如果你要拆解一个复杂问题、让不同模块协同、或者预判一个系统随时间的演化——这类工作,过去必须有程序员在场。这也是过去半个世纪里,编程能渗透到几乎所有科学领域的原因: 程序员,是加速一切问题求解的“设计师、建筑师和工匠”,他们在所有领域都能解决问题。

打开今日头条查看图片详情

那么……编程真的离不开人类吗?

三年前,我面试了几个高级工程师候选人。而面试中常会遇到一种情况:有些人,不管什么原因,就是没掌握编程工作必需的基础技能。如果他们的批判性思维或问题解决能力很强,我们可能会根据岗位需求适当放宽要求,但这种“基础不达标”的情况实在令人费解。

连续面试几个候选人失败后,我瘫在办公椅上抱怨:“这么基础的问题,他们怎么连个解决方案都写不出来?”

我同事觉得好笑,问我:“什么问题?”我跟他描述了一遍,他说 “好”,然后我才发现,他不是在帮我分析面试问题——而是在把问题输入给 OpenAI 的 GPT-3 Davinci playground(当时我们刚拿到早期访问权限)。

敲了几下键盘提交后,屏幕上立刻弹出了一段完美的 Python 代码。我一看,答案不仅正确,效率还很高。我很惊讶,让他换个编程语言再试,结果成功了;我又让他换个编程范式,还是成功了。更夸张的是,AI 甚至没等我们继续要求,就自动输出了其他多种语言的解决方案。

从那天起,我们微软内部的一支小团队就开始深入研究这种由LLM(大语言模型)驱动的系统。

一开始,我和行业里大多数人想法一样:这项技术顶多就是提高效率的工具,绝不可能替代程序员。要让 AI 解决“非玩具级”的复杂问题,还需要很长时间——毕竟程序员日常用到的技能,对一个“文本补全的模型”来说太难了。

但后来,我们一个个地解决AI 的短板:

● 记忆窗口太短?我们发明了外部上下文管理技巧。

● 只能输出文本?我们让它调用工具、运行命令。

● 动作链太短?我们教它如何规划长序列任务。

● 不会拆解复杂问题?我们让它学会任务分解与执行反馈。

● 输出不可控?我们建立了可度量、可验证的机制。

● 缺乏自省?我们给它加上“自我反思”模块,让它能根据结果自我调整策略。

在这个过程中,模型能力不断提升,生态也在扩大……一步一步地,AI 从我们程序员手里接走了越来越多工作。

今年春天,Anthropic 发布了 Claude Code,它的两个特性让我们的系统效率飙升:

(1)能直接通过命令行和电脑交互,而不是像 ChatGPT 那样困在网页或 API 里;

(2)优雅地整合了三种经典模式:任务分解、任务委派、工具调用(比如网页请求、文件搜索),让 AI 能可靠地协调一系列任务。

自那之后,我们全年都在用像 Claude Code 这类的工具,不断提升 AI 系统的能力:能处理更大的任务、可靠性更高、持续运行时间更长。

但即便如此,我当时仍没觉得“编程会变成历史文物”。

打开今日头条查看图片详情

原来,编程已经不需要人类了

上周,我们团队把之前积累的各种技术和实验,整合到了 Claude Code 上(把它当快速实验平台用),很快就集成了很多来之不易的成果。我们已经在 GitHub 上发布了早期原型Amplifier(https://github.com/microsoft/amplifier),未来一两周还会发布新版本。

当然,这个工具本身不会取代我,但它也让我确信了一件事:距离AI 取代程序员的时间,只剩“几个月”,而不是“几年”——因为,它已经搞定编程里“最难的部分”了。

用 Amplifier 时,你只需要描述自己想要什么,它就能按你的编程理念,从设计、后端、前端到测试,完整地把产品做出来。更离谱的是,它还会自我改进,也就是你用得越多,它越聪明:会积累可复用的工具;会记录有用的技术方法;会从你的使用中学习,主动建议如何优化自己。

这是一种“指数级效率提升”——你做出来的东西,会帮你更快地做出新东西。

过去一周,我用 Amplifier 做了两件事:

(1)分析了两个不同的代码库,从其中一个里提取我正在开发的功能模块,然后让它提出三种方案,把这个模块整合到另一个代码库里;接着它并行实现了这三种方案,最后还给出了 “哪些可行、哪些不可行” 的总结。

(2)把我写的一套(大型)Bash 脚本,转换成了三个东西:Web 服务 API、Golang 命令行工具、完整的 Web 应用前端。

当然,写提示词需要时间,也需要程序员的知识,但每个任务只需要给 Amplifier 三条提示。每次它都会运行 30 到 120 分钟,最后返回能直接用的软件——还包括文档。

同一时间,我们团队的其他人也用它做了许多事:开发了 Amplifier 的新版本、搭建了一套完整的评估框架、做了两个不同的图形化实验桌面。最让我惊讶的是一个设计师:他没什么编程经验,却靠 Amplifier 实现了一个“从设计风格到完整框架”的新流程 —— 融合了 Figma、Storybook 等工具的思路和工作流,做出了一个全新的 “AI 辅助设计应用”。我估计,这个工具能让他的效率提升 10 倍。

除此之外,我们还让 Amplifier 对接了一个“管理大型关联任务列表”的项目,它直接把这个项目整合进了自己的系统。我同事让它通宵运行,它自主完成了几十个任务,还准备了一份“早间报告”——里面包含了多个组件的实现方案,让我同事判断下一步该做什么。

这并不是最终产品,我们还有很多工作要做,比如:硬件和软件厂商需要发布 AI 可用的产品背景信息,我们还得迭代和发布新的系统集成标准。

但说真的,这是我第一次感觉到:“最难的部分,已经被攻克了。”——从现在开始,AI可以直接按照人的需求做事,不需要程序员在中间搭桥了。

打开今日头条查看图片详情

所以,编程的未来是怎样的?

像我刚才提到的,“把 Bash 脚本转成 Web 应用”的项目,其实全程都在一台树莓派(Raspberry Pi)微型电脑上运行。我只是在上面装了 Amplifier,挂载了旧代码库,然后告诉它要做什么——全程没碰过一行代码。而它做出的成果,比我花几周时间亲自做的还要好。

你可以想象一下未来:我们无需再下载、安装软件,只需告诉AI“我想要什么”,它就会帮你做出来。想改功能?加新特性?做个全新应用?没问题,直接跟它说就行。

而我过去几十年积累的那些编程技能,包括算法、抽象、架构设计,现在只要给 Amplifier 写对提示词,它就都能做到。现在只差最后一步:把这些“专业知识”全部封装好交给 AI。届时,哪怕没有编程经验的人,也能让 AI 按自己的需求,随时搭建软件。

打开今日头条查看图片详情

当“编程”不再需要人类,我们该怎么办?

我得承认,至少这对我个人而言是一场“生存危机”。

外界对我的身份认知中,很大一部分是 “程序员”。过去,我一直觉得编程就像“魔法”:只要写对“咒语”(代码),就能召唤机器完成奇迹——这也是我的“职业超能力”。可现在,每个人都能用“魔法”了,我的“超能力”突然变成了“日常技能”,那我还能在行业里立足吗?

同时,我的职业技能也产生了一种快变成“遗产”的感觉。我们都希望自己做的事能超越生命周期,但现在很明显:我职业生涯的遗产,会变成一种“奇观”—— 就像铁匠、抄写员、宫廷小丑那样。

但这次技术带来的“淘汰”,可能比以往更特殊。过去,被技术取代的人,还能把自己的领域知识和问题解决能力,迁移到新领域里升级:铁匠去建钢铁厂,抄写员变成印刷工,小丑变成喜剧演员。他们仍在解决问题,只是换了工具。

可这一次,当“解决问题”本身都能被自动化,我们还能去哪?

我的同事 Brian Krabach 半年前也有过类似的思考,但我当时没信。我以为 AI 最多取代部分编程工作,未来很长一段时间里,我们还是需要程序员来引导 AI。但 Amplifier 每天都在证明:我的时间判断错了。

Brian Krabach比较乐观,他说“取代程序员” 反而让他能做自己一直喜欢的事——更快地解决更大的问题。但我没他那么乐观。对我来说,“识别问题、提出方案”从来都不是难事。而我在多个创新实验室的经历告诉我:这些能力,同样是 “可自动化的流程”。

有人或许会辩解:“机器不知道人类在面临什么问题啊!”是的,但也许我们很快会让机器写出“知道该解决什么问题”的软件。

想到这里,我其实感到一丝慰藉——也许,真正的大问题终于有望被解决:能源、医疗、教育、社会治理……只是从此以后,我的贡献,不再来自我那双敲键盘的手;那些我靠几十年磨砺得来的技能,也将不再属于某个专业群体,它们会属于每一个能调用算力的人。