📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

How AI is Reshaping the Craft of Building Software - The Pragmatic Summit

The Pragmatic Engineer30:35

Transcription

所以 [音乐] 这是一个多么美好的时代啊,EJ。 >> 是的。 >> 你能告诉我们一个很多人都在问的问题吗?OpenAI 现在里面到底发生了什么?[笑声] 更具体地说,在构建软件方面,工程师们是如何工作的,以及整个事情是如何变化的。我很高兴你澄清了有很多事情正在发生。嗯,我在这里待了大约六个月,我学到的一件事是,从公司里发生的研究类型中,有很多东西可以学习。嗯,仅仅是展望一下可能性,就足以让人惊叹。所以,我告诉你这个,嗯,我们编写软件的方式已经从根本上改变了,它发生了巨大的变化,即使在过去的六个月里,我也看到我们从 Codex 作为一种工具,变成了一个扩展,然后变成了一个代理,现在变成了一个队友。我完全预计工程师们现在会给他们的代理起名字,并称自己为他们的队友,而且这种情况正在迅速发生。嗯,我一直在查看内部使用 Codex 的人们的排行榜,一些工程师每周都会常规地处理数千亿个 token。而且这不仅仅是一个代理。我们正在谈论,嗯,上周我们内部发布了 Codex Box,这是一种让我们能够在服务器上实际预留开发盒并发送提示的方式,它正在完成工作,在你使用笔记本电脑协调所有这些事情的时候,它正在完成工作。然后人们会关闭他们的笔记本电脑,去开会,回来后,所有工作都完成了。所以,这是并行发生的。这就是 OpenAI 内部软件发生的根本性变化,我迫不及待地想在几个月内看到这一切在硅谷中心地带,然后进一步扩展。我认为这将是常态。每个人都将以这种方式开发软件。嗯,这很酷。>> 所以,如果我把自己带回到六个月前,甚至一年前,听到你这么说,我会觉得,哦,这就像一个童话故事。你在编造一半。然而,实际上我们很多人都在使用它。我正在使用它。我看到了正在发生的事情。我一直在与 OpenAI 内部的工程师交流。我喜欢与工程师交流,因为他们没有过滤器,就像这是实用引擎工作的秘密部分一样。我与那些没有接受过媒体培训或其他任何培训的工程师交流,他们只是 [笑声] 他们只是告诉我真相。在 OpenAI 内部,有一件事让我感到非常欣慰,我必须承认,不是所有的工程师都用 Codex 编写 100% 的代码,他们都在更多地使用它,但它有不同的层次。然而,有一个团队绝对处于最前沿,我再次与许多工程师交流过,那就是 Codex 团队。嗯,他们甚至比 OpenAI 内部的其他人都领先。所以 Tibo,你领导着 Codex 团队。你能告诉我 Codex 团队今天是如何工作的,以及一名工程师典型的流程是什么样的,就像昨天或今天早上一样?>> 是的,这是一个快速发展的局面。嗯,Codex 团队的运作方式令人欣喜的是,他们几乎每周都在不断地重新发明自己的工作方式。我们追求的是,你知道,我们识别出每一个小瓶颈,而瓶颈不断变化。所以,你知道,以前是代码生成,然后你知道,然后它转移到代码审查,现在它非常关注:嘿,我们如何更快地理解用户需求?我们如何处理工单?你知道,我们如何弄清楚 Twitter、Reddit 上每个人都在说什么,所有重要的平台,然后将其综合成一个战略?而每个人都在使用,你知道,并试图最大限度地利用代理来实现最佳效果。一件有趣的事情是,前几天,在一次谈判中,你知道,有人试图加入 Critics 团队,这个人问我:我将获得多少计算能力来在 OpenAI 构建产品?我当时想,嗯,这是一个有趣的问题。我的意思是,我们确实有很多计算能力,但我并没有真正考虑过,所以这就像每位员工的计算能力上限。嗯,通常这更多地是留给那些实际上在训练真正出色的模型的研究人员。所以我认为那里有一个转变,你知道,人们意识到你可以以各种新颖的方式极大地提升自己,如果你有很好的品味、很棒的想法,你知道如何构建软件,那么,你知道,这真是个美好的时代,真的,你知道,你可以做到的事情真是不可思议。>> 再往后退一步,离开 Codex 团队,VJ,你对 OpenAI 内部有很多了解。软件工程师或产品工程师的工作是如何变化的?OpenAI 一直在招聘非常明确的产品工程师。他们的工作是如何变化的?事情是如何与产品融合的,还是没有融合?>> 嗯,从根本上说,我们仍在为人类构建产品。因此,即使在,嗯,我一直在玩 Codex,这得益于新的 One App,它让每个人都能更轻松地开始编码。嗯,即使在很多情况下,我们必须想象我们要构建和发布的产品,而这就是它的开始,然后你必须不断地调整它,直到达到正确的位置。我认为这不会改变。只要我们继续为人类构建软件。我的意思是,在未来的某个时候,我们可能会为代理构建软件,但到那时,代理可能会成为产品工程师或产品经理。嗯,但我认为,嗯,速度使其更具吸引力、更具说服力,而且说实话,更有趣。嗯,我在飞机上写代码。嗯,当时,你知道,我无法访问开发盒,所以你必须一直打开笔记本电脑,当空乘人员过来时,你必须关闭笔记本电脑。不,不,但我不希望,你知道,代理停止工作,所以我把它稍微打开,然后放下。>> 每个人都带着笔记本电脑到处跑,你知道,半开着,现在。就像 >> 是的,我们在做什么?我认为,我认为这,你知道,我实际上认为,你知道,现在更有趣的是,构建软件,因为,嗯,周期,满足感周期如此之短,看到你正在构建的产品,测试它,验证它,然后回到 Codex,这真是太酷了。>> 作为工程师,我们是工程师,你们现在开始看到哪些新的、不同的或奇怪的工程实践,这些实践开始变得有意义,尽管它们很奇怪?嗯,以前,你知道,你会有像,你会有困难的技术权衡,然后你会,你知道,写一个设计文档并讨论所有内容,然后你知道,也许你会想,哦,还有哪些其他可行的选择?然后你知道,你会,你知道,抛弃它。我认为一件令人欣喜的事情是,现在我看到人们并行地探索多种不同的实现,然后我们可以真正地深入研究我们认为工作得更好的那一个。嗯,另一件事是,我也看到规则在模糊。嗯,所以,就像我们的设计师现在交付的代码比六个月前的工程师交付的代码还要多。而且这仅仅是因为,你知道,模型已经变得足够好,以至于它们产生的代码实际上是我们希望合并的代码。>> 你看到 OpenAI 内部还有其他什么吗?嗯,我注意到,我不知道你们是否还记得你们使用的每一个命令行工具的命令行?我不想挑剔,就像我当时在和 Tibo 说话一样。>> 他的团队编辑视频文件,你知道,如果你知道 ffmpeg,就像,我认为没有人记得命令行。Codex 是一个很棒的工具,你可以,你知道,好吧,我想做这个,然后输入命令行,然后执行它。嗯,所以这些是我们看到人们使用 Codex 的一些新方式,特别是。我还认为,我们现在已经从仅仅编码,发展到代码审查、安全审查,然后,正如 Dibo 所说,我们将找到更多的瓶颈。所以,一旦你解决了编码问题,例如,现在你已经让每个工程师的生产力提高了五倍。嗯,五倍。嗯,将会发生的是,将会编写更多的代码,这意味着代码审查将成为瓶颈,然后,在代码审查之后,集成和部署 CI/CD 将成为瓶颈。所以,我们将不得不不断地去解决下一系列问题,这实际上非常令人兴奋。然后 TB,当我们谈论你在 Codeex 所做的事情时,有一件我以前从未听说过的非常有趣的事情是这些通宵运行和自我测试。C 你能告诉我们吗?因为这就像全新的东西。是的,我认为很容易陷入,哦,这只是自动补全的增强版,你知道,它只会实现一个小功能,当然,它会在大约 10 分钟内完成。但我们看到的是,如果你给模型一个非常大的任务,它实际上要强大得多。它能够运行数小时。所以,我们组装了环境和技能,以便 Codex 能够完全自主地测试自己。嗯,我们通宵运行它,这样,你知道,它基本上会在一个循环中执行 QA,并标记回归。另一件事是,我一直在与团队中的一位研究人员交谈,他实际上在训练模型,他说,每次我认为自己比 Codex 更强大时,我就会发现自己错了,我只是没有正确地提示它,或者我没有以正确的方式设置它。而且,你知道,这既令人兴奋,又有点令人沮丧。嗯,因为他说,哦,现在它只是,你知道,完全独立地训练模型,并在最后写一份小的 PDF 报告,你知道,包含它自己的见解和发现,然后我们只需要拿走它,然后找到,你知道,最有前途的事情来迭代,然后把它放回 Codex。嗯,所以,这些非常非常长的任务和成就,你知道,看到一个模型独立地做到这一点真是不可思议。>> 是的。还有一件事我们谈过,我觉得有点像科幻小说,你说你们有时会有会议,Codex 团队会开会讨论 Codex 和你们遇到的问题,你告诉我一些有趣的事情,你知道,人们聚在一起开会,然后你就可以启动 Codex 线程来诊断 Codex 的问题,你能稍微解释一下这是如何进行的吗?因为这就像一个循环本身。>> 是的,我们在这里做了两件大事。所以我们每周都有一次分析审查,我们回顾一下,你知道,功能采用情况,留存率,你知道,我们分析我们的漏斗,我们总是以我们提出的问题开始会议,你知道,这些问题在我们的仪表板中没有得到解答,或者我们还没有研究过,你知道,我们只是,哦,这看起来很有趣,然后我们的数据分析师说,好吧,让我们开个会,让我们在后台启动一个小的 Codex 线程,你知道,它会在 20 分钟后回来,我们就会得到答案,你知道,就像,我们可以在会议的最后 10 分钟里讨论它。然后我们为房间里人们提出的五个或六个问题这样做,这有点像一种神奇的体验,你知道,就像有这些小顾问,你知道,在我们后台为我们工作,然后另一件事是,嗯,无论,你知道,我们就像,你知道,Codex 就在那里,你知道,帮助弄清楚,你知道,出了什么问题,最快的恢复路径是什么?嗯,在那里,它感觉就像,你知道,加速了很多,你知道,我们可以收集多少信息,以及我们能多快地解决问题。所以这是其中之一,它绝对在加速,我们也在其他地方看到了这一点。一个反复出现在整个行业中的大问题是,新毕业生怎么样?初级工程师怎么样?我与 OpenAI 的工程主管谈过,他说了一些有趣的事情,那就是你们正在招聘早期职业生涯的工程师。你能稍微谈谈这个吗?这真是太好了。你能谈谈它的进展情况吗?你看到了什么?初级工程师的担忧,即他们不如现在高级工程师那样使用 AI 代理,有多少是合理的?你知道,他们是如何跟上进度的?>> 嗯,我们正在招聘很多,嗯,应届毕业生,直接从大学招聘。我们也有,所以今年我们有一个相当完善的实习计划。我真的相信,新创建的软件工程师将是 AI 原生的。他们将以原生方式了解这些工具。嗯,他们将能够从第一天起就利用我们的 AI 工具。我认为给他们机会将是至关重要的,并且在这样的环境中培养他们将是惊人的。我迫不及待地想看到这一点。所以,今年夏天,是我们第一批新毕业生进入 OpenAI 的时候,我对此感到非常兴奋。嗯,大约有 100 人左右。然后,我想继续扩大我们在 OpenAI 的实习计划。所以,是的,这将是一件非常非常酷的事情,在这个时代见证。>> 然后 Tibo,你如何将人们引入 Codex 体验,特别是?即使在 OpenAI 内部,我的感觉是 Codex 团队可能比你们的工作方式领先几个月或几周。当有人进来,无论是从外面还是从 OpenAI 内部,他们如何跟上团队的工作方式?>> 所以我经营这个团队,它是一个非常扁平化的组织,就像,我有 33 个直接下属,他们四处奔波,做着很酷的事情,而且,你知道,我不想成为瓶颈。我认为这是领导者需要注意的事情之一,就是不以足够快的速度改变组织结构,以适应人们实际构建的速度,而一个人成为每个决定的瓶颈是行不通的。但人们首先接触到的,显然是 Codex 本身。所以,Codex 负责入职培训。你知道,你只需要问 Codex 问题,浏览代码库,了解其他人正在做什么,接收,你知道,每日报告。但负责入职培训和,你知道,文化以及我们如何构建的人,也是那些最近刚加入团队的人。嗯,我发现,你知道,就像谈论新毕业生一样,你知道,我有一个非常出色的新毕业生加入了团队,你知道,六个月前,他做得非常出色。嗯,这有点出乎意料,但我理解,你知道,这个人拥有,你知道,无限的能量,比我多得多。嗯,而且,你知道,他非常非常快。嗯,我认为,你知道,我的大脑可能已经开始衰退了。嗯,你知道,这个人,Ahmed 的大脑正处于巅峰状态。嗯,而且,你知道,他是一个非常出色的人,他在团队中取得了巨大的成功,这真的令人欣喜。现在,我来扮演一下魔鬼的代言人,[清嗓子] 我们很多人,更有经验的人,看到过新毕业生成长为非常成功的专业人士,我们已经看到,至少到目前为止,基础是如此重要。那么,你认为如果新毕业生使用 AI 编码作为基础,他们可能会跳过我们做了 10 到 20 年的事情,会发生什么?他们是在打下正确的基础,还是我们在问正确的问题?即使是 >> 基础仍然非常重要,对吧?所以我们在设计整个代码库时非常小心,你知道,就像整体架构一样。你知道,我们进行代码审查,就像你说的,你知道,我们不完全依赖,你知道,Codex 来编写所有内容,然后闭上眼睛说,这没问题。嗯,你知道,我们也有最好的工程师在做这个。但我发现,新毕业生能够吸收这些,然后,你知道,就像,如果你有正确的代码库结构,你知道,你设定了正确的护栏,那么,你知道,他们就非常高效。所以我认为这只是关于你正在建立的环境,以及,你知道,提前思考,你知道,这个代码库将如何发展。>> 以及从软件工程师开始的角色是如何变化的,与六到八个月前相比。软件工程师做什么?就像,如果你必须向一个新来的初级工程师解释,他们会问,“嘿,VJ,我每天要做什么?”他们会做什么?>> 是的,我认为,嗯,基础的概念,基础永远不会过时。所以这永远是重要的,无论如何。我认为我们都在这里,因为我们有扎实的基础,这让我们来到了这里。嗯,然后在,你知道,软件工程师的角色方面,它已经发生了很大的变化。我不知道你是否,我可能是在暴露年龄,25 年了,嗯,在这个行业里,我看到了太多的范式转变,而且,我实际上在微软从事过开发人员工具,编写了 Visual Studio 的编辑器和语言服务。所以,当我第一次看到 IntelliSense 时,那是一个非常酷的时刻,你可以输入,然后点击点,然后选项就出现了。>> 是的。但你还记得吗?我差不多在那时候进入这个行业,我周围的开发者说,如果你使用 IntelliSense,你就不是一个开发者。>> 是的。[笑声] 而且,我的意思是,我见过那些,我的意思是,这可能在我之前,当人们可能认为,好吧,如果你不写汇编语言,你就不是一个好的软件工程师。然后是 C++,然后,你知道,抽象级别越来越高,然后人们抱怨 JavaScript。还记得那些日子吗?我不认为那些东西真的重要。关键是,只要你有扎实的基础,只要你有产品直觉,知道你在构建什么,并且能够上下堆栈来解决问题,那些将是更重要的。而且我认为这永远不会过时。我觉得这永远是这种情况。>> 我们在这里主要是工程师,工程领导者,但让我们也为产品经理和设计师考虑一下。你们如何看待他们的角色变化,特别是现在工程师和他们都可以更快地构建功能?这如何改变他们的角色,还是我们越来越接近,还是他们仍然有与你所见不同的角色?>> 嗯,我回到,只要我们为人类构建产品,我们就需要人类设计师,我们就需要人类产品经理。我认为这是一个,你知道,我不知道,嗯,产品感觉或设计感觉没有替代品。这些东西会发展,会变得更有效率,会有更多的抽象,但我们会继续发展。他们变得越来越有效率,如果有什么的话。所以产品经理在写代码,设计师在写代码,他们将他们的设计,嗯,投入生产,原型,并在工程师之前进行验证。所以我认为这些已经变得更有效率了。嗯,你知道,这可能是,产品经理也在使用 Codex 来构建 PowerPoint 幻灯片,我们有 Excel 插件,所以它基本上是全方位的,不仅仅是工程师,周围的每个人都变得更有效率。>> 你在 OpenAI 内部做的一件很酷的事情,我听说过,就是这个内部知识共享的展示和讲述,团队在那里展示他们所做的事情。你能告诉我们你是如何想出这个主意的吗?你是如何实际操作的?你能告诉我们一些团队展示过的很酷的东西,以及也许其他团队采纳的东西吗?>> 是的,这很有趣,因为我们正在发现技术并不断发展它,我们也与它共同发展。所以,你知道,就像你们所有人一样,我们正在发现,嘿,这就是 AI 可以为我做什么,这对组织意味着什么,或者这对我的项目意味着什么,我们也在同时发现它。你知道,就像,一旦,你知道,当我们有某种感觉它开始起作用时,我们就把它推向世界。所以,你知道,我们有一个非常小的,非常小的时间,你知道,我们实际上能够,你知道,比你们所有人拥有更多的水晶球。嗯,而且,好的想法在组织中快速传播非常重要。所以,你知道,我们使用 Slack 和 Codex Slack 频道,以及热门技巧,这两个频道非常非常活跃。然后,你知道,我们组织定期的黑客马拉松,展示和讲述,我们只是试图尽快传播,你知道,使用 AI 的新工作方式。而且,这是一个非常有创造力的时期。所以,我认为没有一种真正的方法来使用这些东西。你知道,它仍然处于探索阶段,然后,我们有一个非常出色的产品经理,负责 Codex,Alexander Emberos,他是整个 Codex 团队唯一的全职产品经理。他极大地提升了自己的效率,你知道,在 Codex 的帮助下,就像,你知道,前几天他组织了一次 bug 狂欢,持续了一个小时,人们在审查我们要发布的功能,然后他派 Codex 来收集大家的反馈。这最终形成了一个 Notion 文档,然后他派 Codex 将功能改进的工单,你知道,bug 报告,你知道,功能改进的工单输入到 Linear,然后分配给每个人,然后跟进每个人,了解进展情况。所以,他就像,你知道,通过利用 AI,他正在成为一个 10 倍,你知道,50 倍的项目经理。而且,我认为重要的是,再次回到瓶颈问题,你知道,你需要继续回去,你知道,你的产品经理不能成为瓶颈。所以,你知道,你需要从原则上来看待它。>> 我想补充一点,我参加过这些演示日,我们看到了很多这些项目的演示。我记得参加过这些黑客马拉松,看了这些演示。我注意到的一件事是,这些演示的深度一直在不断提高。所以,不仅仅是表面上的,这是可能的。一些演示实际上是,这是可能的,而且我们已经处理了所有这些边缘情况,实际上是一个非常可用的产品。所以,人们正在构建的所有产品的深度,日复一日,即使只是为了展示一些功能,也绝对在不断提高,并且越来越深入。>> 我们需要添加的一个免责声明是,在 OpenAI 内部,每个人都可以访问无限的 token,没有成本,人们在笑,因为这很重要,对吧?在外部世界,如果你可能,成本仍然是一个问题。你获得最高订阅,当它用完时,你就进入了积分模式,你知道,有些人对此很满意,尤其是创始人,但有时人们会问这个问题,考虑到很多地方都受到成本的限制,只是为了实际目的。对于那些受到 OpenAI 团队工作方式的启发,但有这些限制/束缚的人,你们有什么建议和策略?成本是我们一直在考虑的事情。嗯,一方面,我们当然希望我们的模型越来越强大,并将其提供给我们的用户。嗯,而且,我也相信,在某个时候,思维会发生转变,因为现在你应该想象,现在你有一个队友,他为你 24/7 工作,你可以给你的队友发送指令,你知道,你可以给你的队友分配 Linear 任务或 Jira 任务,然后期望,你应该完全期望你的队友能够处理这些事情。然后问题就变成了,你知道,你愿意为这个队友付多少钱,而不是你将使用多少 token。嗯,所以,如果你开始以每个工程师拥有四到五个这样的队友的生产力来衡量,那么它就开始变得更有意义了。现在,你应该让我们负责,让这些代理足够强大,可以把它们当作队友。这就是我们正在努力的方向。>> 是的。我认为,思考它如何抵消公司内部的成本也很有用,而且有些事情,你知道,你现在可以做,而且实际上,你知道,对你来说非常便宜。所以,你知道,做市场研究,回顾你的整个功能积压,并找出哪些是你轻易就能实现的。嗯,你知道,在那之前,你需要分配,你知道,可能 15 名工程师去查看那个积压,而现在,你知道,几乎是免费的。嗯,显然,不是每个人都能,你知道,为他们的员工提供无限推理的福利。嗯,但我确实认为过早地限制它,你知道,也是一种风险。而且,我们正处于人们能够获得多大杠杆的非常非常早期阶段。所以,我肯定会说,嘿,你公司里最优秀的人,你知道,给他们,你知道,非常非常舒适的大量推理。>> 回顾一下变化的速度,我们知道它很快,而且它变得非常非常快。感觉就是这样,但从你在 OpenAI 之前的时间,以及 VJ,你在这个行业已经很久了,超过 25 年。回想起来,有没有一个时候变化也感觉很快?过去我们看到过类似的事情吗?>> 我认为我从未见过这样的事情。嗯,我可以回顾一下,在过去的 25 年里,我经历了互联网泡沫的破裂,那是在我上大学的时候,然后我记得 Y2K,我记得移动革命,我实际上是社交网络革命的一部分,而这次感觉非常不同。这次发生在一个巨大的规模上,而且也发生得非常快。这次发生的速度,有些图表没有意义,所以,我认为这是一件非常非常特别和独特的事情,而且生活在这个时期也很好。作为最后一个问题,变化很快,但你们两位在 OpenAI 工作已经有一段时间了,所以我将请你们做出一个诚实的预测,两年后,你们认为软件工程会是什么样子?以及工程管理会是什么样子?只是基于你们所知道的。[笑声]>> 显然,两年是一个太长的时间。嗯,[笑声] 我认为,从现在起六个月,我敢肯定,你知道,我非常有信心地说,你知道,我们可能会在速度上再提高一个数量级,而这将,你知道,再次改变事情。另一件事是,我们将让大型的多代理网络协同工作,以实现非常非常大的目标。你知道,例如,它应该,你知道,与光标演示的相同团队一起,你知道,嘿,从头开始重建一个浏览器,你知道,就这样,24 小时后,你知道,你就有这个,这个东西被构建了,你知道,大约有两百万行代码,它几乎是,你知道,无法理解,你知道,实际发生了什么。所以,在那里,我认为我们将开始看到,我们将围绕正在构建的内容设置护栏,这样你就不必再查看代码了,你可以以某种方式证明它是正确的,或者它受到限制,以至于它是安全的,你可以只查看输入和输出,然后代码将变得抽象化,而一切都将是关于,你知道,实际的挑战和事物,以及,你知道,系统的属性。软件一直在增加抽象,这使得我们更容易构建大量的,嗯,代码,用很少的代码。所以,多年来,抽象一直在增加,我觉得我们正处于一个抽象正在增加的时期,变化的速度也相当快。嗯,在某个时候,我担心,我会这么说,因为任何足够复杂或复杂的系统,调试起来都会变得更难,所以你依靠症状来调试这些东西。所以我,我,我,我认为几年后,我们将达到软件如此复杂,软件有如此多层,我们将非常擅长通过查看症状来识别问题,而我们的工具也将变得非常擅长这一点。嗯,所以我认为这将是一个独特的,嗯,功能,或者我认为这将是一个独特的,嗯,软件开发人员需要掌握的能力。>> 好的,VJ。>> 我想补充一点关于未来会是什么样子。嗯,我认为你将能够直接打电话给你的助手,并检查工作,你知道,你将有一个专门的个人助理,能够代表,你知道,所有为你高效工作的 AI 代理的工作,而不是不得不监控和,你知道,与一百个或,你知道,两百个单独的,嗯,小代理进行检查。我认为这是我们将会看到的,实际上,包括今年。>> 是的。嗯,非常感谢 VJ 和 Tibo 让我们得以一窥 OpenAI 内部的实际情况以及你们的团队是如何工作的,这感觉就像领先于潮流几个月或几周,或者有时更长,但它确实在发生。而且,也只是关于我们在这个真正激动人心的时期可能会看到或看不到什么。非常感谢。>> 谢谢。谢谢。 [音乐] [掌声]