从8岁敲代码到被AI接管,微软工程师“破防”:
栏目:行业动态 发布时间:2025-10-23 11:32
从8岁敲代码到被AI接管,微软工程师“破防”:“我整个30年的编程生涯几乎成了”历史遗迹。 ”...
从8岁敲代码到被AI接管,微软工程师“破防”:“我整个30年的编程生涯几乎成了‘历史遗迹’!” 【CSDN编者按】这是一位拥有30年编程经验的老开发者的“自我清算”。本文作者 Paul Payn 目前是微软 CTO 领导下的首席研究工程师。从Commodore 64到大型语言模型,从敲代码到与AI共同创造,他亲眼目睹了软件行业从“书面逻辑”到“机器自动生成”的惊人飞跃。当他意识到依赖一生的技能正在以指数级的速度被工具取代时,我相信每个程序员都能体会到这种震惊和失落。原文链接:https://payne.io/posts/historical-artifact/author |保罗·佩恩翻译 |郑丽媛制作| CSDN(ID:CSDNNEWS)好吧,我不得不承认——我整个30年的编程生涯r已经成为“历史文物”。 AI时代的浪潮来得比我想象的要快。也许在不久的将来,当人们回顾现在时,会觉得当年其实是“人”在为机器编写代码,这并不可笑。我曾经相信,编程离不开人。我8岁时开始学习编程。当时,我拿着一台Commodore 64,仔细地阅读着厚厚的用户手册,并从杂志上的示例代码中逐行复制。在接下来的40年里,我从未停止过学习:编程不是一种可以“学而做”的技能,而是一种永无休止的自我保护。每一代开发者都必须学会在浪潮中重塑自我。当我们招聘程序员时,我们看重的品质,包括灵活性、独立学习能力、批判性思维,都是这种生存的体现。本质上,编程需要一种“机械同理心”。你必须明白机器的底层逻辑:存储、内存、处理器、接口……除此之外,您还必须了解语言和工具链的语法:系统实际上可以执行什么字符组合。此外,还有一个抽象的世界:首先处理大型程序,然后处理程序集群,最后处理计算机网络系统。程序员的主要工作之一就是“管理复杂性问题”,因此了解和掌握相关技术非常重要。有经验的开发人员会熟练使用各种抽象工具:数据结构和算法、配置和状态管理、封装思想、函数和面向对象的组合、实体和数据的差异、事件和快照模式、循环和递归选择……这些知识是无穷无尽的。更不用说每周都会发布新的工具和产品,并且您的技术堆栈也在不断修复。然后就是权衡。像所有领域一样对于工程来说,编程的本质就是做出权衡。你必须在处理性能和内存之间、在开发时间和开发完成之间、在可靠性和成本之间做出选择。经过反复权衡,一个“合格”的方案或许终于诞生了。但程序并不是孤立存在的,它们旨在解决人类问题——成为真正的产品和服务。因此,程序员不仅要写代码,还要了解用户、了解需求、了解业务,以确保系统可行、可操作、可上市。而且,由于程序员编写的是与用户交互的程序,因此我们必须始终关注心理学、社会学以及这些领域与技术的交叉点。几十年后,我意识到编程教会我的不是语法或算法,而是如何思考问题。如果你想分解一个复杂的问题,让不同的模块一起工作,或者预测一个系统在时间上的演变ime——那种工作,在过去,程序员必须在那里。这也是近半个世纪以来编程几乎渗透到所有科学领域的原因:程序员是加速解决所有问题的“设计师、建筑师和工人”。他们可以解决各个领域的问题。那么……编程真的离不开人吗?三年前,我面试了几位高级工程师候选人。在面试中,我们经常会遇到一种情况:有些人,无论出于什么原因,根本就没有掌握编程工作所必需的基本技能。如果他们的批判性思维或解决问题的能力较强,我们可以根据职位的需要,适当放宽要求,但这种“初选不达标”的情况着实让人吃惊。在接连面试了几位候选人后,我倒在办公椅上抱怨道:“他们怎么没有写出一个重大问题的解决方案呢?”伊格觉得好笑,问我:“什么问题?”我向他描述了一下,他说“好吧”,然后我发现他并没有帮我研究面试的问题——他在Openai的GPT -3 Davinci Playground上输入问题(当时我们只接受了早期访问)。敲击几下键盘提交后,一段完美的Python代码出现在屏幕上。当我看到这个答案时,答案不仅正确,而且很棒。我很惊讶,并让他用编程语言再试一次,结果成功了;我要求他改变一种编程范式,但它仍然成功了。更厉害的是AI可以自动输出很多其他语言,甚至不用等我们继续询问。从那天起,微软内部的一个小团队开始脱离这个LLM(大语言模型)驱动的系统。一开始,我和大多数业内人士一样认为:这项技术充其量只是一个提高效率的工具,并不能取代程序员。需要很长时间让人工智能解决“非玩具级”的复杂问题——毕竟程序员每天使用的技能对于“文本补全模型”来说太难了。但最终,我们一一解决了AI的缺点: ● 记忆窗口是否太短?我们发明了外部上下文管理方法。 ● 可以输出文本内容吗?我们让它调用工具并运行命令。 ● 动作链太短?我们教它如何计划一长串任务。 ● 不知道如何分解复杂的问题?我们让它知道任务的分解和执行反馈。 ● 输出不受控制?我们建立了可衡量且行之有效的机制。 ● 缺乏内省?我们为其添加了“自我反思”模块,以便它可以根据结果调整策略。在这个过程中,模型的能力不断提升,生态系统也不断扩大……人工智能一步一步地从我们程序员身上分担了越来越多的工作。今年春天,Anthropic 发布了克劳德代码。它的t两个功能使我们的系统变得高效:(1)它可以通过命令行直接与计算机进行通信,而不是像 ChATGPT 那样陷入网页或 API 中; 。从那时起,我们全年都在使用 Claude Code 等工具来不断提高人工智能系统的能力:它们可以处理更大的任务,更可靠,并且持续时间更长。但即便如此,我仍然不觉得“编程会成为历史遗迹”。事实证明,编程不再需要人了。上周,我们团队整合了之前在Claude Code(将其作为快速实验平台)中积累的各种技术和实验,快速集成了许多来之不易的成果。我们已经在 GitHub (https://github.com/microsoft/amplifier) 上发布了早期原型放大器,新版本将在未来一两周内发布。当然,mism这个工具不会取代我,但它也让我确信一件事:距离AI取代pro还剩“几个月”语法师,而不是“年”——因为它已经解决了编程的“最难的部分”。使用放大器时,您只需要描述您想要什么,它就会完全按照您的编程理念,从设计、后端、前端到测试来创建产品。更烦人的是,它还会自我完善,也就是说,你用得越多,它就会越聪明:它会收集可用的工具;会记录有用的技术方法;它将从您的使用情况中学习并主动建议如何优化自身。这是一种“效率提升”——你所做的将帮助你更快地做新事情。上周,我用放大器做了两个包:(1)研究两个不同的代码库,从其中一个代码库中提取我开发的功能模块,然后提出三个选项将该模块集成到另一个代码库中;(1)研究两个不同的代码库。然后它并行实施这三个选项,最后提供“什么有效、什么无效”的摘要。 。当然,写得快文字需要时间,需要程序员的知识,但每项任务都必须交给放大器三个提示。每次运行 30 到 120 分钟时,它都会返回即用型软件,包括文档。同时,我们团队的其他人也用它做了很多事情:开发了新版本的放大器、构建了完整的分析框架、构建了两个不同的桌面图形实验。让我惊讶的是,他是一名设计师:他几乎没有编程经验,但他依靠放大器实现了“从设计风格到完成框架”的新流程——结合figma、storybook等工具的想法和工作流程,创建了一个全新的“AI辅助设计应用”。我估计这个工具会让他变得更好10倍。另外,我们还要求放大器连接到一个“管理大型相关任务列表”的项目,它直接将该项目集成到自己的系统中。我的同事让它运行了一夜,完成自主完成了数十项任务,并准备了一份“晨报”,其中包含几个组件的执行计划,供我的同事确定下一步该做什么。这不是最终产品。我们还有很多工作要做。例如,硬件和软件制造商需要发布AI可以使用的产品背景信息,我们还需要弯曲和发布新的系统集成标准。但说实话,那是我第一次感觉到:“最难的部分已经过去了”。 - 从现在开始,人工智能可以直接根据人类的需求做事,而不需要程序员来弥补这个差距。那么,编程的未来是什么?正如我刚才提到的,“将 bash 脚本转换为 Web 应用程序”项目实际上是在 Raspberry Pi 微型计算机上运行的。我只是在上面放了一个放大器,安装了旧的代码库,然后告诉它要做什么——没有触及任何一行代码。它产生的结果比我独自花费几周的时间要好。你可以想象未来:我们不会蒙古包需要下载并安装软件,我们只需要告诉AI“我想要什么”,它就会为你做。想要更改功能吗?添加新功能?创建一个新的应用程序?没问题,直接说就可以了。我过去几十年积累的编程技能,包括算法、抽象和架构设计,现在只需在放大器中输入正确的单词即可完成。现在只剩下最后一步了:封装所有这些“专家知识”并将其交给人工智能。之后,即使是没有编程经验的人也可以根据自己的需求随时使用AI来开发软件。人走了怎么办?需要“编程”吗?我不得不承认,这对我个人来说是一场“生存危机”。外界对我身份的认知很大一部分是“程序员”。以前,我总觉得编程就像“魔法”:只要写对“咒语”(代码),就可以召唤机器。哦,完全的奇迹——这也是我的“职业超能力”。但现在,人人都会使用“魔法”,我的“超能力”一下子变成了“日常练习”,我还能在行业立足吗?同时,我的专业技能也产生了一种即将成为“遗产”的感觉。我们都希望我们所做的事情能够持续一生,但现在很明显,我职业生涯的遗产将是一种愿景——就像铁匠、木匠、宫廷小丑一样。但科技这次做出的“移除”或许比以往更加特别。过去,被技术取代的人们能够将自己的领域知识和解决问题的能力转移到新的领域进行升级:铁匠建铁厂、抄写员成为印刷工、小丑成为喜剧演员。他们仍然解决问题,只是改变工具。但这一次,当“解决问题”本身可以自动化时,我们能走向何方?我的同事布莱恩·克拉巴赫也有类似的经历这是六个月前的事,但当时我并不相信。我认为人工智能会取代一些编程工作,而且我们在很长一段时间内仍然需要程序员来指导人工智能。但放大器每天都在证明:我在我的时代错了。布莱恩·克拉巴赫 (Brian Krabach) 则更为乐观。他说,“更换程序员”让他能够做他一直喜欢做的事情——更快地解决更大的问题。但我并不像他那么乐观。对我来说,“认识问题并提出解决方案”并不困难。我在许多创新实验室的经验告诉我,这些技能也是“自动过程”。有人可能会说:“机器不知道人面临什么问题!”是的,但也许我们会允许机器编写“知道要解决什么问题”的软件。想到这里,我真松了口气——也许,真正的大问题都可以得到解决:能源、医疗、教育、社会管理……但从现在开始,我的贡献不再来自于我敲击键盘的双手;而是来自于我的双手。我拥有的技能几十年磨砺的不再属于某个特定的专业群体,而是属于每个能够使用算力的人。 特别声明:以上内容(如有则包括照片或视频)由自媒体平台“网易号”用户上传发布。本平台仅提供信息存储服务。 注:以上内容(包括图片和视频,如有)由网易HAO用户上传发布,网易HAO为社交媒体平台,仅提供信息存储服务。