为什么 OpenAI 的 Codex 不会取代编码员
原文网址:https://spectrum.ieee.org/openai-wont-replace-coders
人类程序员实际上可以通过 Codex 变得更加强大和高效今年夏天,人工智能公司 OpenAI 发布了Codex,这是一个新系统,仅使用以通俗语言编写的简单提示即可自动编写软件代码。Codex 基于GPT-3,这是一个革命性的深度学习平台,OpenAI 在2019 年之前对互联网上几乎所有公开的书面文本进行了训练。
作为早期的 Beta 测试员,我有很多机会让 GPT-3 和 Codex 完成他们的工作。关于 Codex,我最常被问到的问题是“这会取代人类程序员吗?” 随着像美国这样的世界强国投资数十亿美元来培训新的软件开发人员,很自然地担心所有的努力和金钱可能都白费了。
如果您自己是一名软件开发人员——或者您的公司已经花费了大量资金来雇佣他们——那么您就可以松口气了。Codex 不会很快取代人类开发人员,尽管它可能会让他们变得更加强大、高效和专注。
为什么 Codex 不是对人类开发者的生存威胁?多年前,我与来自美国一家大型咨询公司的高级数据科学家和软件开发人员一起在政府数据库项目中工作。我们的任务是了解州机构如何使用其数据库向组织分配拨款,然后就如何改进数据库向该机构提出建议。
当我第一次开始与我的开发人员同事一起工作时,我对他如何打发时间有很多先入为主的想法。我想他会整天伏在笔记本电脑上,用 R 敲出代码或在 Mathematica 中编写出色的公式,以帮助我们更好地了解客户的数据库。我想象着美丽心灵式的在 Windows 上疯狂涂鸦、回归分析,以及在屏幕前花费大量时间,编写数千行 Python 代码。
相反,我的同事通过与客户坐下来并花几天时间了解他们的赠款过程来开始参与。这导致与个别工作人员、利益相关者、该机构的选民等举行会议。经过几个月的这种工作,他终于坐下来分析该机构的数据,使用 R 和各种图形库。实际的编码和分析需要两天时间。他的分析结果很准确,他的程序运行良好。客户很兴奋。
他后来向我解释说,实际编写代码和运行分析占用了他大约 1% 的时间。其余时间用于与客户合作以了解他们的问题、确定要使用的正确软件和数学模型、收集和清理实际数据以及展示结果。在大多数情况下,编码和数学本身是软件开发过程中很小的、几乎是死记硬背的一部分。
这是开发人员的典型做法。根据Tech Republic 的说法,编写实际代码通常只占用典型软件开发人员不到一半的时间,在许多情况下,仅占其中的 20%。这意味着,即使像 Codex 这样的系统运行良好,它们也最多只能取代典型的人类软件开发人员的一半工作,而且通常还不到四分之一。除非有人训练 Codex 与客户坐下来,赢得他们的信任,了解他们的问题,并将这些问题分解成可解决的组成部分——简而言之,做我的同事在我们的项目中所做的事情——系统不会很快威胁到熟练的开发人员。
非编码人员可以坐下来使用 Codex,编写并开发出一个工作软件的那一天还很遥远。
在他们宣布 Codex的论文中,OpenAI 的科学家们承认了这一点。用他们的话说,“工程师不会花一整天的时间编写代码。” 相反,他们将大部分时间花在“与同事协商、编写设计规范和升级现有软件堆栈”等任务上。Codex 的创建者怀疑该系统可以通过让开发人员“更快地编写好的代码”来“在一定程度上降低生产软件的总体成本”。但他们怀疑它会窃取工作。如果有的话,他们建议自动化与软件开发相关的繁重工作将会开放该领域适用于更广泛的人群。它也可能会创建一个新的专业:“快速工程”,其他人不太确定。正如记者 Steven Levy在《连线》中指出的那样,Codex 可能不会窃取个别软件开发人员的工作。但是,如果它使每个开发人员的效率大大提高,公司可能会决定他们可以减少他们的数量。一个项目之前可能需要 10 个开发人员,如果这些开发人员得到 Codex 或类似的 AI 系统的协助,则可能只需要 8 个开发人员,从而导致净损失两个工作岗位。
总有一天这可能是真的,但那一天不会很快到来。尽管大流行,但鉴于2020 年全球对开发人员的需求增长了 25%,因此 Codex 等系统对工作岗位的真正威胁似乎微乎其微,至少目前如此。如果有的话,允许顶级公司使用更少的开发人员可能会使这些开发人员可供中级公司或初创公司使用,从而在技术生态系统的各个层面产生更好的软件。目前,初创公司往往难以吸引有才华的开发人员。如果全球挖走的谷歌和 Facebook 挖走的顶级开发人员更少,那么新兴的创新公司可能会获得更多的顶尖人才。
同样重要的是要记住,所有这些都基于 Codex 或类似系统可以像人类软件开发人员一样编写代码的想法。目前,绝对不能。OpenAI 承认,在发布时,Codex 的代码包含错误或在63% 的时间里根本不起作用。即使在 37% 的时间内编写完美的代码对机器来说也是一件大事。但是,非编码人员可以坐下来使用 Codex,编写并开发出可工作的软件的那一天还很遥远。
像 Codex 这样的系统可以创造“半人马”,即人类和人工智能的混合体,可以比任何一方单独做的事情更快更好。
这就是为什么科技界的许多人不把 Codex 看作是新代码的生成器,而更多地看作是帮助人类的强大工具。当我问未来学家丹尼尔杰弗里斯Codex 是否会取代人类软件开发人员时,他回答说“没有机会”。用他的话来说,“我们可能需要数年时间才能拥有一个能够生成始终如一的良好例程代码和创造性新代码的代码引擎。”
相反,杰弗里斯想象像 Codex 这样的系统创造“半人马”,“人类和人工智能的混合体,可以比任何一方单独做的事情更快更好地做某事”。半人马已经在国际象棋等游戏中证明了自己的价值,在这种游戏中,人/机器半人马始终胜过人类大师和无辅助计算机。人类/人工智能半人马可能比人类软件开发人员工作得更快,但与 Codex 等单独工作的系统相比,它会更准确,更能适应现实世界的问题。
流行的代码库 Github 在推出Copilot时引起了轰动,Copilot是一个由 Codex 提供支持的代码辅助平台。Copilot 的工作方式类似于自动更正,提供代码来完成整个功能或自动填充重复代码作为开发人员类型。不过,如果半人马真的是人工智能的未来,那么该系统的名称就会产生误导。在航空领域,副驾驶是一名完全合格的飞行员,如果需要,他可以从机长手中接管飞机的控制权。另一方面,自动驾驶仪可以在某些情况下自动驾驶飞机(例如直线和水平巡航时),但在情况变得危险时(例如在恶劣天气下着陆时)必须将控制权移交给人类飞行员。
GitHub 的 Copilot 更像是一个自动驾驶仪,而不是真正的副驾驶。当任务简单且重复时,它可以自行编码,但一旦任务变得更复杂,就需要人工干预。“作为开发人员”,Github 在其关于 Copilot 的页面上说,“你总是负责。” 最终,这不是对 Copilot 或 Codex 的批评。在航空领域,自动驾驶仪是非常有用的系统。
在给定的商业航班上,飞机可能有90% 的时间处于自动驾驶状态。但至关重要的是,人类飞行员始终在监督该系统。如果没有他们 10% 的贡献,飞机就会经常坠毁。换句话说,飞行员已经是熟练、安全和有效的半人马。他们可以为软件开发领域的类似人马提供有用的蓝图。这可能就是 GitHub 和 OpenAI 决定首先使用航空比喻来描述他们的系统的原因。
除非 Codex 在未来几年显着改进,否则人类软件开发人员的工作是安全的。但考虑到潜在的效率提升,公司和个人开发人员今天应该开始探索半人马技术。如果您是一名开发人员,请学习快速工程等技能,并申请访问 Copilot 和 Codex 等系统,以便您尽早获得使用它们的经验。如果您领导一家技术公司,请开始考虑拥抱半人马如何使您自己的软件开发工作流程更高效。如果您教授计算机科学或编码,请立即开始对您的学生进行人工智能系统和混合半人马方法的教育,以便他们在进入就业市场时准备好使用 Codex 或 Copilot 等平台。
当 Codex 之类的系统与熟练的人类开发人员进行较量时,它们可能会失败。但随着 Codex 及其同类产品的改进,通过将自己的技能与先进的人工智能相结合,将自己变成半人马的人类很可能会成为一股强大的——也许是不可阻挡的——技术力量。