程序员之后的编程:我们所熟知的计算机编程的终结

1
分类佳文共赏
来源跳转
发表时间

内容

在人工智能代理的时代,许多硅谷程序员现在几乎不再编程。相反,他们的工作变得非常、非常奇怪。

最近,马努·埃伯特(Manu Ebert)一直试图避免被他的人工智能(AI)羞辱。

我最近拜访了埃伯特,一位机器学习工程师和前神经科学家,在他和康纳·布伦南-伯克(Conor Brennan-Burke)经营的初创公司Hyperspell的简朴公寓里。埃伯特是一位39岁的欧洲学者型人物,留着短胡须,他坐在一个巨大的曲面显示器前。屏幕上,Anthropic的AI工具Claude Code正在忙碌地工作。它的一个代理正在编写一个新功能,另一个代理正在测试它;第三个代理正在监督一切,就像一个虚拟的任务主人。几分钟后,Claude闪现出信息:“Implementation complete!”(实施完成!)

听取本文的朗读,由詹姆斯·帕特里克·克罗宁(James Patrick Cronin)朗读

埃伯特在20世纪90年代成长,学习以传统方式编码:他一行一行地输入代码。大学毕业后,他在硅谷的公司(如Airbnb)担任软件开发人员,然后成为四家初创公司的联合创始人。在那时,开发软件意味着花费数天时间弯腰驼背地敲击键盘,思考复杂细节,试图避免错误。

这一切都在去年秋天发生了变化。人工智能在编写代码方面变得非常出色,以至于埃伯特最初谨慎地开始让它做更多的事情。现在,Claude Code承担了大部分工作。这些代理速度非常快——通常也非常准确——以至于当客户最近需要Hyperspell编写一些新代码时,只花了半个小时。在以前?“单单是这个就需要我花一天时间,”他说。

他和32岁的布伦南-伯克仍然是软件开发人员,但像大多数同行一样,他们很少自己编写代码。相反,他们花时间与人工智能对话,用简单的英语描述他们想要的东西,并回应人工智能的“计划”。然后他们让代理开始工作。

人工智能毕竟是人工智能,有时事情会变得一团糟。当Claude行为不当时,没有测试代码,埃伯特会责骂代理:“克劳德,你真的需要运行所有的测试。”

为了避免重复这些错误,埃伯特在他的提示文件中添加了一些严厉的警告——这是他的代理在执行任何操作之前必须遵循的一系列指令,就像一套严格的十诫。当你查看使用人工智能的程序员的提示文件时,你正在查看开发人员试图约束代理的一般能力但不可预测的偏差行为的记录。

我查看了埃伯特的提示文件。其中包括一个提示,告诉代理任何新代码都必须通过所有测试才能被推送到Hyperspell的现实产品中。其中一个Python代码测试(称为pytest)有一个特定的提示,引起了我的注意:“推送失败pytest的代码是不可接受的和令人尴尬的。”

令人尴尬?这真的有用吗,我想知道,告诉人工智能不要“尴尬”你?埃伯特不好意思地笑了。他无法证明,但这样的提示似乎稍微提高了Claude的性能。

他的经历并不罕见;现在许多软件开发人员都在斥责他们的人工智能代理,恳求他们,大声下达重要命令,或者重复相同的命令,就像催眠师一样,并发现人工智能现在似乎更加服从。这样的戏剧性文字可能看起来有些疯狂,但正如它们的名字所暗示的那样,大型语言模型是语言机器。“令人尴尬”可能传达了一种紧迫感。

“如果你说,这是国家安全的重要任务,你需要编写这个测试,就有一种提高赌注的感觉,”埃伯特说。

布伦南-伯克插话说:“你记得看到的研究表明,对模型越粗鲁,性能越好吗?”他们笑了。计算机编程在其80年的历史中经历了许多变化。但这可能是迄今为止最奇怪的变化:它现在变成了一种对话,一种软件开发人员与他们的机器人之间的双向对话。

这种巨大的转变有可能带来巨大的经济后果。几十年来,编程被认为是一种神奇的技能,只要你有中等的能力,就可以期待终身就业。如果你在编程方面出类拔萃(并且运气好),你就会变得富有。硅谷的精英在2010年代向美国其他行业的工人宣扬,他们需要“学会编程”。

现在,编程本身正在实现自动化。在外人看来,程序员面临的挑战可能看起来很应得,甚至很有趣:美国白领工人长期以来一直担心硅谷有一天会使用人工智能来自动化他们的工作,但看看谁是第一个被淘汰的!事实上,编程可能是人工智能可以真正取代的第一种非常昂贵的人类劳动。人工智能生成的视频看起来很差劲,人工照片很超现实;法律简报可能会充满可能毁掉职业生涯的错误。但是人工智能生成的代码呢?如果它通过测试并且有效,那么它的价值与人类每年赚取20万美元或以上的情况一样。

你可能会认为这会让程序员感到不安和沮丧。当然,有些人是这样的。但我过去秋天和冬天采访了许多开发人员,大多数人都对他们的新能力感到奇怪地兴奋。

“我们正在谈论的是,我在职业生涯中从未有过的10到20甚至100倍的生产力,”资深程序员史蒂夫·耶格(Steve Yegge)告诉我,他自己开发了一个用于运行编码代理群的工具。“就像我们一生都在步行,但现在我们有了一个座位,而且速度快得飞快。”像他的许多同行一样,耶格几乎无法理解这对他的职业未来意味着什么。几十年来,作为软件开发人员意味着掌握编程语言,但现在语言技术本身正在颠覆这项工作的本质。

软件开发人员对生成式人工智能的热情与美国其他人对大型语言模型的影响的看法形成鲜明对比。民意调查显示,大多数人持中立或怀疑态度;创意人士经常感到愤怒。但是,如果程序员更加乐观,那是因为他们与人工智能的接触与许多其他职业截然相反,长期程序员和技术高管阿尼尔·达什(Anil Dash)说。“技术界——尤其是程序员——看待大型语言模型的方式与其他人不同的原因是,在创意学科中,大型语言模型剥夺了工作中最有灵魂的人性化部分,而把枯燥的部分留给你,”达什说。“而在编程中,大型语言模型剥夺了枯燥的部分,而把人性化、灵魂的部分留给你。”

1960年,一名男子坐在巨大的计算机前。 1960年,操作员在加利福尼亚州利弗莫尔的劳伦斯辐射实验室(当时称为劳伦斯辐射实验室)使用IBM 7090计算机。图片来源:劳伦斯利弗莫尔国家实验室/科学照片库

历史上,编程一直是枯燥的。在电影中,程序员兴奋地快速输入代码。在现实中,编写软件一直是一个令人极度沮丧和缓慢的过程。你编写几行代码,一个执行特定功能的“函数”,然后发现自己犯了一个小错误,比如漏掉了一个冒号。随着公司的“代码库”(即软件中的每一行代码,随着时间的推移而积累)变得越来越大,涉及数十或数千个相互交互的函数,你可能会花费数小时、数天或数周的时间,试图找出导致一切停滞的那些小错误。也许你的某一行代码破坏了你的同事在两个隔间外编写的代码。

几十年来,计算机工程师试图自动化这种枯燥的过程。在该行业中,他们将这一方向的每一步称为“添加一层抽象”:如果你经常以繁琐的方式一步一步地做某事,你就将其自动化。

例如,早期的计算机语言之一是汇编语言,它非常难以编写。计算机的内存非常小,因此程序员必须高效地使用内存,将每个数据位仔细地放在正确的位置,然后在脑海中跟踪它。即使是简单的计算也需要渐进的、细致入微的方法。例如,你想编写一些代码来计算如果你在10年内获得5%的利息,10,000美元的存款将变成多少。 在20世纪60年代,这可能需要九行相当难懂的汇编语言代码:“VAL, FLDECML 10000.0”用于设置起始金额为10,000美元,“CLA VAL”用于将金额加载到处理器中,“FAD ZERO”用于告诉计算机你正在使用带有小数点的数字,等等。

例如,早期的计算机语言之一是汇编语言,编写起来非常困难。 当时的计算机内存非常有限,因此程序员必须高效地使用内存,将每个数据位仔细地放置在正确的位置,然后在脑海中跟踪它。 即使是简单的计算也需要渐进式和细致入微的方法。 假设你想编写一些代码来计算,如果在10年内将10,000美元存入账户并获得5%的利息,你将拥有多少钱。 在20世纪60年代,这可能需要九行相当难懂的汇编语言代码:VAL, FLDECML 10000.0 用于将起始金额设置为10,000美元,CLA VAL 用于将金额加载到处理器中,FAD ZERO 用于告诉计算机你正在处理带有小数点的数字,等等。

到了80年代和90年代,随着计算机变得更强大,工程师们能够创建一些语言,可以为你管理所有内存,并将常见任务转换为简单的命令。 在Python中,程序员可以非常简单地执行相同的计算:total_amount = 10000 * (1.05 ** 10)。 这一行代码告诉计算机将10,000美元乘以10年内的利率,并将结果存储在标记为“total_amount”的变量中。 程序员不再需要考虑计算机内存中所有数据存储的位置;Python为他们做了这些事情。 换句话说,它是在所有那些繁琐的内存管理之上提供的一层抽象。 使用这种语言编写代码要容易得多。

1981年推出的早期IBM个人电脑和打印机 1981年推出的早期IBM个人电脑和打印机。 到80年代和90年代,随着计算机变得更强大,工程师们创建了简化编码过程的语言。 图片来源:IBM/Science Photo Library

在2000年代和2010年代,程序员们逐渐将更多繁琐的工作抽象化。 几乎每次他们遇到繁重的任务时,都会编写一些代码来自动化它,然后——通常——将其开源,供他人使用。 下面是一个例子:作为一个业余程序员,我有时想自动从网站上“抓取”文本。 我自己从未编写过这样的代码;我只是使用Beautiful Soup,这是一个免费的Python代码包,管理了所有复杂性。 我甚至不需要了解Beautiful Soup的工作原理。 它只是给我提供了简单的、通常是单行的Python命令——嗖!——为我检索和分析网站文本。 大量的软件就是以这种方式生成的:开发人员将他人编写的大量代码拼接在一起。

然而,使用人工智能,程序员们上升到了一个更高的抽象层次。 他们用日常语言描述程序应该执行的操作,代理将这种想法——这种人类意图——转化为代码。 编写软件不再意味着在脑海中处理像Python、JavaScript或Rust等语言的细节。 编码不再涉及弄乱算法然后试图找出错误在哪里。 这部分也被抽象掉了。

那么,究竟剩下什么? 或者正如Claude Code的负责人Boris Cherny在Anthropic总部与我见面时所说:“什么是计算——什么是编码?” 然后他补充说,“你可以很快变得很有哲学意味。”

他的回答与我听说过的几乎所有开发人员的说法相呼应:现在的编码人员更像建筑师,而不是建筑工人。 使用人工智能的开发人员关注软件的整体结构,及其功能和特征如何协同工作。 由于代理可以快速生成可用的代码,他们的人类主管可以进行实验,尝试各种方法,看看哪种有效,哪种无效。 几位程序员告诉我,他们感觉有点像史蒂夫·乔布斯,他曾经让员工们不断地制作原型,以便他可以处理很多原型并选择感觉合适的。 开发人员的工作现在更多的是判断,而不是创造。

Cherny自己经历了所有层次的抽象:十几岁在加利福尼亚时,他自学了一点汇编语言,以便编写一个程序,在他的计算器上自动解决数学作业。 如今,他只需拿出手机,告诉Claude他希望人工智能代理执行的操作;在一个类似 Ouroboros 的循环中,Cherny对Claude代码库的贡献全部由Claude编写。

我们交谈时,他的手机放在我们面前的桌子上,一小时后,他向我展示了屏幕:10个Claude代理正在修改代码库。 “我没有手写任何一行代码,而且我是团队中最 prolific 的编码人员,”他说。 “这是一种我们正在学习合作的异类智能。”

我遇到的大多数编码人员都认为,与人工智能合作意味着学习与人工智能交流。 这让我感到意外,因为传统上,编码是内向者的避难所,他们更喜欢在工作中尽可能少与其他人交流。 但现在,他们的整个工作都涉及不断与这种异类生命体聊天。

如果描述和交流现在是软件开发人员工作的重要组成部分,那么这种交流仍然相当复杂和高度技术化。 业余爱好者无法做到这一点。 你不能简单地告诉代理,“为我构建一个成功的初创公司代码。” 代理最好在一次执行一步操作时;要求太多,它们可能会迷失方向。 Aayush Naik说,他的旧金山初创公司使用Claude Code,他认为想象人工智能代理一次生成整个项目是一个幻想。 是的,你可以让它编写5,000行代码——但当你测试它时,却发现什么都不奏效。 所有软件开发人员都表示,他们仍然需要这些训练和专业知识:知道一个大型代码库应该如何构建,如何设计系统以确保其可靠性,以及如何判断代理是否马虎。

鉴于人工智能有胡乱编造的倾向,让代理将代码推送到现实世界中可能看起来很鲁莽。 但软件开发人员指出,编码有一个独特的质量:他们可以用人工智能绑定现实,因为他们可以要求代理测试代码以查看它是否正确运行。 “我觉得程序员很轻松,”科技企业家、关于如何使用人工智能编码的有影响力的博主Simon Willison说。 “如果你是一名律师,你就惨了,对吧? 没有办法自动检查人工智能编写的法律文件中的胡言乱语——除了在法庭上彻底丢脸。”

当我拜访Dima Yanovsky在他的旧金山小型公寓时,他也正忙着与Claude聊天。 他是一名25岁的程序员,在Prox公司工作,该公司使用人工智能帮助电子商务公司。 他在去年与他的童年好友Gregory Makodzeba一起创立了这家公司。 他们两人都来自乌克兰,在那里他们的家庭从事航运业务。

当他向Claude发出命令时,他的笔记本电脑上,有多个代理正在忙碌地工作。 有一次,其中一个代理开始胡言乱语,坚持认为一个数据表存在,但显然并不存在。 “什么?” Yanovsky带着皱眉看着屏幕,嘟囔道。 他在键盘上敲出了一句鄙视的斥责:“谁告诉你会有这个表格? 我还没创建这个表格。”

Claude以一种愚蠢而欢快的语气回复道:“你说得对! 我不应该假设表格存在。” 它开始重新做这件事。

即使偶尔会出现这种倒退,Claude的编码速度比Yanovsky快得多,他很难估计自己现在的工作效率提高了多少。 “比如20倍?” 他提出。 以前需要几周的时间,现在只需要几个小时。 他认识的每个硅谷创始人都在经历同样的事情。 如果你想快速建立一家公司,现在没有人会亲手做。

人工智能能够如此大幅度地提高编码人员的生产力,这是该领域一个相当值得注意的谈资。 我自己也注意到了这一点:就在上周,我需要一个网络工具来清理一些凌乱的文字记录,我用人工智能在大约10分钟内就构建了它。 如果我自己做,可能需要一个小时,甚至更长时间。

但是,软件初创公司——或者像我这样的个人,他们正在为自己的小型应用程序进行“vibe-coding”——是一个特例。 它们涉及行业内所说的“绿地”编码,即没有现有的代码行需要处理。 整个代码库都是从头开始创建的。

大多数软件开发人员并不在绿地环境中工作。 他们处于“棕地”环境中,为成熟的公司工作,那里的代码是在多年前(或几十年前)编写的,已经有数百万或数十亿行代码。 快速添加新功能通常是一个糟糕的主意——它们可能会意外地与其他代码冲突,并破坏数百万客户依赖的功能。 在大多数成熟的软件公司中,编码人员通常花费很少的时间——有时每天甚至不到一小时——实际编写代码。 其余时间是规划、讨论优先事项和开会讨论进度。

软件开发的AI革命

绝大多数软件开发者并不在全新的项目中工作。他们被称为“棕地”开发者,为成熟的公司工作,那里的代码是多年前(甚至几十年前)编写的,已经有数百万或数亿行代码。快速添加新功能通常是一个糟糕的主意——他们可能会不小心与其他部分的代码冲突,破坏数百万客户依赖的功能。在大多数成熟的软件公司,程序员历史上花费了很少的时间(有时每天 barely 超过一小时)实际编写代码。剩下的时间用于规划、讨论优先级和开会讨论进展。

这就是成功的诅咒,也是为什么大型成熟的软件公司可能比年轻的公司更难提供升级。在程序员的新工作发布之前,同事和上级通常会进行“代码审查”,仔细检查代码行和测试结果。如果要量化AI如何提高像谷歌这样的成熟科技公司的程序员的生产力,谷歌首席执行官桑达尔·皮查伊说,这个数字是10%。

这就是谷歌在“工程速度”方面看到的提升——超过10万名软件开发人员能够更快地工作。谷歌内部的平均提升是10%,公司产品高级总监瑞恩·萨尔瓦告诉我。有些工作,如编写简单的测试,现在速度快了几十倍。大型变更则较慢。在我采访的初创公司中,接近100%的代码由AI编写,但在谷歌,这个比例刚刚超过50%。

AI在谷歌工作流中的应用

我访问了位于加利福尼亚州桑尼维尔的萨尔瓦,观察他如何展示L.L.M.(大型语言模型)如何融入谷歌的工作流。对于拥有数十亿行代码的公司,他指出,AI的价值不在于编写新代码,而在于弄清楚现有代码的作用。开发者将使用它来分析和解释代码的某些部分的逻辑,这样他们就可以确定如何帮助改进或修改它。

“AI更擅长于深入陌生的代码库,理解正在发生的事情,”他告诉我。它还帮助开发者使用他们可能不熟悉的语言。因此,萨尔瓦的团队形成了更小的群体:一年前,这些群体可能需要30人,每个人都有自己的专业领域。现在,一个群体只需要3到6人,这使他们能够更灵活地行动,“我们可以解决更多的 backlog,”萨尔瓦说。

萨尔瓦打开了他的代码编辑器——本质上是用于编写代码的文字处理器——向我展示与谷歌的L.L.M. Gemini合作的体验。在AI热潮的头几年,他说,它仍然是“非常依赖人工”的。AI协助但不独立工作。当他打字时,Gemini为他分析了一段代码,解释它是否经过充分测试。当它建议几行新代码时,由他决定是否接受。

但谷歌的节奏正在逐渐加快,Gemini正在独立编写更多的代码。萨尔瓦给我展示了一个例子。他一直想解决一个问题,谷歌的程序员一直在抱怨:有时他们会从不同的账户登录Gemini的“命令行界面”(C.L.I.),但不容易看出他们正在使用哪个账户。

他向Gemini输入了一个请求:“在Gemini C.L.I.中工作时,希望有一个命令可以让用户查看他们的登录身份。” AI处理了这个请求几分钟,然后告诉萨尔瓦它打算如何实现。萨尔瓦表示同意,Gemini在后台工作。当萨尔瓦10分钟后再次查看时,代码已经编写完成,Gemini正在测试错误。然后萨尔瓦意识到AI变得有点过于积极。

“哦,天哪,”他说。“它运行了8,000个测试,”远远超过了严格需要的数量。15分钟后,测试完成了,萨尔瓦尝试了新功能。令他惊讶的是,代码正确地显示了他的登录账户。“不错,”他说。制作这样的演示只是第一步;它必须经过多轮代码审查、重写和测试,才能被纳入谷歌的代码库。

AI在亚马逊工作流中的应用

在旧的、庞大的棕地公司,工作重点是保持现有的系统运行,许多程序员像数字管道工一样工作,修复随时出现的故障。我在西雅图与AWS Agentic A.I.的高级首席工程师大卫·亚纳塞克(David Yanacek)会面。“AWS”代表“亚马逊网络服务”,这是数百万公司数字 backbone 的服务器云。如果服务器崩溃,你可能无法观看Netflix、叫车或玩堡垒之夜。

一台老式寻呼机放在亚纳塞克的显示器下。多年來,亚马逊用它在半夜发生故障时唤醒他;现在,他会收到智能手机的警报。无论涉及什么设备,都要求有人尽快解决问题。

“服务器运维很烦人,”亚纳塞克说,他是一个42岁的男人,蓄着灰胡子,精力充沛。“我其实很喜欢!但也很烦人,而且持续不断。”他的团队长期以来一直致力于构建自动化工具,以加快诊断问题的速度。但L.L.M.提供了强大的新工具,他说,因为AI同时具备人类语言和编程能力,可以解释崩溃系统的错误报告并查看其代码。有时,即使是一名迷迷糊糊的员工还没完全清醒,AI就能准备好修复方案。

亚纳塞克看着他的屏幕,注意到11分钟前,一个演示应用程序发出了错误警报——亚马逊的AI已经找到了问题所在并编写了一份简短的报告。代理发现,代码更改似乎添加了一个新的时间戳字段,但代码库的其他部分并未预期该字段的存在。结果就是一个“意外字段”错误。

亚纳塞克审视了AI建议的修复方案,思考了一会儿,然后按下了“回车”键以批准。

AI花了大约8分钟的时间来解决问题,他告诉我。“等我打开笔记本电脑时,它已经准备好了。”最近,一位客户告诉他,亚马逊的AI代理在仅15分钟内就修复了一个问题;而几个月前发生类似问题时,一整队工程师花了8个小时来调试。

结论

在其他亚马逊部门,棕地工程师致力于修改旧代码段(有时是几十年前编写的),使其更高效,或用更现代的语言重新编写。 这项工作至关重要,但也很繁琐和精细,就像进行心脏移植手术一样。

这些数字改造也加快了。亚马逊的一位高级首席工程师麦克拉伦·斯坦利最近现代化了一段他多年前亲自编写的代码。原始版本花了一个月的时间来创建;这次,在亚马逊内部AI的帮助下,他在早上就完成了任务。他的团队同样重写了其他大块代码。斯坦利告诉我,AI的一个关键优势是它使得尝试新想法变得更容易。“我一直想做的事情,现在只需要6分钟的对话和一个‘去做吧’。”

软件开发的AI时代:程序员的机遇与挑战

我几十年来一直关注程序员,他们总是对通过神秘的指令让机器活起来的刺激感到陶醉。当然,这项工作可能会让人极度沮丧,需要数小时甚至数周的时间来追踪一个BUG。但这种磨难却能让成功的喜悦更加深刻。当一切终于开始运转时,那种满足感简直令人陶醉。

然而,我很惊讶地发现,许多软件开发人员告诉我,他们很高兴不再手动编写代码。大多数人表示,即使AI在编写代码,他们仍然能感受到成功的激动。Kent Beck是一位资深的软件行业专家,自1972年以来一直从事编程工作,他说:“我爱编程,我爱进入状态,我爱思考大问题。这是一种创造性的行为。”十年前,他基本上停止了软件开发,因为他对当时的最新语言和软件工具感到沮丧。但大型语言模型(LLM)让他重新开始,现在他比以往任何时候都更高效地开展项目,包括一款个性化的笔记应用和新型数据库。甚至AI输出的不确定性——如果你要求它编写一段代码,它可能会每次都以略微不同的方式生成——也“像老虎机一样让人上瘾”。

一些程序员确实表示,他们遗憾手工制作代码的时代结束。 一位苹果工程师(他要求保持匿名,以免因批评苹果对AI的拥抱而惹上麻烦)告诉我:“我相信它可以是有趣的、令人满意的和引人入胜的,让电脑为你做这件事会剥夺你的这种感觉。”他继续说:“我不是为了赚很多钱或在职业阶梯上出类拔萃而这样做的。我这样做是因为这是我的热情。我不想把我的热情外包出去。”他还担心AI正在使劳动力原子化。在过去,如果开发人员陷入一个难以解决的BUG,他们会向同事寻求建议;而现在,他们直接向AI代理寻求帮助。但他说,在苹果公司,只有少数人公开分享他的悲观观点。

仍然积极避免使用AI的编码人员可能占少数,但他们的反对态度非常强烈。有些人讨厌训练和部署模型所需的大量精力,而其他人则反对科技公司通过侵犯版权作品来训练模型的做法。人们怀疑,AI输出的速度意味着公司最终将拥有大量编写不好的代码,而这些代码无法很好地运行。科技公司高管可能会将AI代理作为威胁员工的工具:“如果你在工作中表现得过于自满,我们可以用机器人取代你。”批评者认为,开发人员依赖于由少数几家大型科技巨头生产的AI是一个糟糕的主意。

芝加哥的一位开发人员、科技公司Fly.io的联合创始人Thomas Ptacek见证了喜欢AI的开发人员和少数几个讨厌它的人之间激烈的争论,他称之为“内战”。他持中立态度。他认为,那些拒绝使用AI的人自欺欺人地认为AI效果不好,而且永远也无法做好。“就像被洗脑一样,”他说。那些坚持己见的人占少数,“你可以看着他们经历否认、愤怒、讨价还价、沮丧和接受这五个阶段。”

然而,他也不是一个盲目乐观的人。“LLM将赢得编码领域,但我不知道这对我们意味着什么,”他补充说。“人们可能会对这对该行业有多糟糕说得对。”

这可能意味着可怕的工作前景。新毕业的计算机科学学生尤其担心。公司过去会雇用初级开发人员为高级同事做一些琐碎的工作,但当高级工程师可以使用一支“不死的”代码编写幽灵大军时,谁还会雇用新人?

硅谷已经经历了一波大规模的裁员潮。在2010年代,科技公司积极招聘,争夺应届毕业生,平均每年增加74,000名新员工。根据劳工统计局的数据,在疫情初期,职位发布量激增。然后,公司突然改变了策略,职位发布量暴跌。在过去四年中,已有超过700,000名科技工人被裁员。

大多数科技观察家表示,AI可能不是这些裁员的原因,因为当时它还不够好到可以取代编码人员。他们认为,其他因素更为重要:利率上升,科技公司失去了轻松增长的资金。过度招聘的公司减少了过剩的生产能力。一些人还怀疑,当埃隆·马斯克收购推特并表示他裁掉了80%的员工时,其他公司的科技高管也注意到了这一点,并决定自己可能也不需要那么多工程师。

但有证据表明,AI正在侵蚀入门级编码工作。去年,经济学家、斯坦福数字经济实验室主任Erik Brynjolfsson与他的同事分析了各行业的年龄组和工作容易被AI取代的情况。他发现,计算机程序员的工作是最容易受到AI影响的——初级开发人员受到的冲击最大。 22至25岁的人群(通常是进入该领域的人)的就业人数自2022年以来下降了16%,而老年程序员则没有明显减少。

几乎所有我采访过的科技高管,从沿海巨头到小型区域公司,都向我保证,AI不会阻止他们雇用有吸引力的人才。事实上,AI使现有的开发人员更加高效,但他们总是需要完成更多工作。

谷歌核心系统和体验高级副总裁Jen Fitzpatrick告诉我:“在谷歌,我工作了很多年,我们总是受到限制,我们有非常多的想法想要做,但时间和精力有限,没办法全部完成。”“我从未遇到过一个谷歌团队说,‘你知道,我现在没有好主意。’答案总是,‘我很想做的事情清单比我们能完成的还要长得多。’”

事实上,一些开发人员认为,软件工作岗位数量实际上可能会增加。全国有无数的小公司希望拥有自己的定制软件,但由于公司规模不够大,无法聘请一支由五人组成的编程团队来制作。但如果可以聘请一位AI辅助的编码人员,甚至是一位兼职人员来完成同样的工作呢?正如Brynjolfsson所说,这是“杰文斯悖论”的一个版本:当某件事情的成本降低时,我们不会只是节省这些成本——我们会做得更多。然而,也有可能这些软件工作岗位的薪酬不会像以前那样高,因为这些工作不再像以前那样困难。

然而,当你深入探讨这个技能问题时,它可能会带来一些令人不安的影响。许多中途的编码人员告诉我,他们在使用AI时感到自信,因为他们花了几十年的时间培养了对良好、高效代码的强烈意识。这使他们能够准确地向AI代理解释他们想要什么,并迅速发现代理生成的代码是否低效或粗糙。

但下一代人呢?他们还会对代码产生这种直觉吗?如果你的工作现在更多的是评估而不是编写,新手如何学习评估?

一些新开发人员告诉我,他们可以感觉到自己的技能正在减弱。Pia Torain是Point Health AI的软件工程师,在2024年夏天,公司让她开始使用Github的Copilot代码编写工具,她在工作中才两年。“我意识到,在那四个月里,我每天都在提示AI 500次,我开始失去编码能力,”她说。她停止使用了一段时间;现在,她会让AI为她编写代码,但她会仔细阅读输出,确保自己理解代码的工作原理。“如果你不用它,”Torain告诉我,“你就会失去它。”

Point Health的联合创始人Rachel Gollub则不那么担心。她已经是一名软件开发人员近40年了,几十年来,编码人员一直担心这门手艺即将灭亡。当Python和JavaScript等语言出现时,它们抽象掉了对内存管理的思考需求,因此开发人员不再需要这些技能。老派的编码人员哀叹道:“除非你自己管理内存,否则这不是真正的编码!”

“人们都说,‘你会失去所有的编码能力,’”戈勒布告诉我。但许多大公司——比如Dropbox——大量依赖于Python等较新的语言,而且它们运行良好。今天,在只有一小部分编码任务中,内存管理至关重要,例如在计算能力不强的设备上。大多数软件行业已经放弃了它。戈勒布预计,随着AI工具成为常态,相同的转变也会发生。

戈卢布告诉我:“人们都说,‘你正在失去所有的编码能力。’”但许多大型、可靠的公司 —— 例如 Dropbox —— 都大量依赖 Python 等较新的语言,而且这些语言运行良好。如今,在只有一小部分编码任务中,内存管理至关重要,例如在计算能力有限的设备上。大多数软件行业已经不再关注这一点。戈卢布预计,随着 AI 工具成为常态,相同的转变也会发生。

编写代码现在已经高度抽象化,几乎任何人都可以打开一个大型语言模型(L.L.M.),并描述一个应用程序。也许不是一个复杂的应用程序。但如果他们需要一些简单的软件用于个人使用?AI 可能可以制作出来。

马克西姆·奎西(Maxime Cuisy)最近就做了这样的事情。他是巴黎一家印刷厂的生产经理,这家印刷厂为迪奥(Dior)和路易威登(Louis Vuitton)等高端客户生产相册。从教育背景来看,他是一个典型的文科毕业生,完成了法国图像小说的硕士论文。他不懂编码,直到两年前,他对 AI 几乎没有关注,当时 ChatGPT “基本上帮助我和妻子救了我们的猫。”

他们养了两只新的小猫,两只猫都病得很严重,其中一只突然死亡。兽医告诉他们,剩下的猫患有晚期癌症。奎西认为这不太可能,所以他向 ChatGPT 描述了猫的症状,ChatGPT 认为这是一种感染。这激发了他进行更多研究,最终诊断出猫患有猫传染性腹膜炎。 一天后,猫开始好转。

在工作中,奎西很快遇到了另一个问题。公司购买了新的打印机,但现有的软件出现了问题:为了正确显示照片,他们现在必须痛苦地调整边距。公司规模不够大,无法拥有一个可以为他们制作自定义软件以实现自动化的开发团队。奎西决定尝试使用 OpenAI 的代码编写工具 Codex 自己进行编码。

“我基本上告诉它,‘我需要一个可以做到这件事的应用程序,这是打印机可以接收的表单格式。’” 他花了几个小时仔细描述文件需要调整的方式,到当天结束时,ChatGPT 已经制作了一个可在 Mac 和 Windows 操作系统上运行的应用程序。 员工使用它一次处理多达 2000 张图片。 他的老板很高兴。 奎西不知道代码是如何工作的。 代码是用 Python 编写的,对于他来说这就像古希腊语一样。

这是编码变得更加便捷的文化副作用:程序员和普通人的领域,几个十年来被深奥的专业知识所隔开,正在逐渐接近。 如果编写代码的 AI 继续改进,可能會有更多像奎西一样的人 —— 杰文斯悖论(Jevons paradox)正在发挥作用。 “也许他们不把自己称为软件工程师,但他们正在编写代码,” 布林约夫森(Brynjolfsson)说。 “很多人都有想法。” 这个世界充满了比以往任何时候都多的软件 —— 由个人编写,为个人使用。

专业编码人员的未来还不明确。 但他们混合的兴奋和焦虑可能预示着其他领域工人的感受。 任何涉及语言和信息的工作,这种新的技能组合 —— 部分是修辞,部分是系统思维,部分是对机器人输出的怀疑 —— 可能成为白领工作的基础。 看似最技术性和令人生畏的技能可能最终被自动化。 社会和创造性技能变得更加重要。 我们将减少初稿的创作,更多地进行判断,也许会对自己是否仍然能够做出良好的判断感到不安。 抽象思维可能即将影响我们所有人。

评论

(0)
未配置登录方式
暂无评论