微软的 GitHub Copilot 追求人工智能在编程中的绝对“价值实现时间”

201 阅读9分钟

GitHub 首席产品官 Inbal Shani 表示,这并不是为了更快地编写代码,而是为了让开发人员能够更好地利用他们的时间。

生成式人工智能可以在多大程度上帮助程序员的问题引起了激烈的争论。从他的第一手实验中发现OpenAI 的 ChatGPT “可以编写相当好的代码”。与此同时,一些研究发现,GPT-4等大型语言模型的整体代码质量水平远低于人类编码人员。

但一些人认为,关于人工智能是否适合作为编码员的争论可能没有抓住要点。他们说,通过自动化提供编码帮助的本质在于改变程序员工作的性质。

微软旗下开发者网站 GitHub 的首席产品官 Inbal Shani 表示:“如果你问我最大的变化是什么,生成式 AI 世界发生的事情就是我们在 AI 之上创建了另一个抽象层。”

该抽象层,即自然语言,最初仅用于代码完成。“这是我们看到的基本层,”她说。Shani 认为,抽象层的力量在于它可以扩展到代码完成之外的更多人工智能用途。

GitHub 于 2021 年 6 月推出了代码辅助版本 GitHub Copilot。Shani 表示,今年对于人工智能编程来说是“变革的一年”。正如微软首席执行官 Satya Nadella在 10 月份宣布的那样,GitHub 拥有超过 100 万付费客户使用 Copilot,并且有超过 37,000 个组织在使用它。

Shani 引用了 Accenture 等著名 Copilot 用户的例子,该公司已让数百名开发人员使用 Copilot。“他们已经看到有很多用途可以减少我们所说的样板代码,即开发人员不一定喜欢编写但必须编写的重复代码,因为这是他们基础的一部分。”

Shani 表示,埃森哲保留了 Copilot 编写的 88.5% 的代码。“因此,这意味着 copilot 能够向开发人员提供高精度、高保真度的答案,让他们选择保留该代码,而不需要重写它。”

根据衡量生产力的一项指标,在埃森哲使用 Copilot 后,当新代码与项目的主要源代码合并时,按时完成的拉取请求数量增加了 15%。此外,“他们发现开发人员更倾向于完成构建过程”,即将代码转换为运行的二进制文件的任务。

她指出,“有时,开发人员会阻止自己”进行构建。“他们说,我不信任,我需要再次测试,但使用 Copilot,它在某种程度上帮助建立了信任,将更多代码部署到生产中。”

这些微小变化的前景——更多的拉取请求、更多的构建、更少的样板代码编写——对开发人员的工作方式产生了直接的定性好处。

“如果我们能够以一致的方式提高构建速度,那么这基本上可以帮助开发人员减少等待构建的时间,从而有更多时间专注于架构等,”Shani 说。

“令我震惊的发现是,开发人员平均每天只有不到两个小时来编写代码”,Shani 说。“他们需要围绕软件开发生命周期做很多事情,但不是围绕编码——他们进行构建、编写测试、参加会议、需要与其他人互动、需要编写 PR [pull requests]。”

通过自动化其中一些任务或部分任务,“我们将为开发人员提供更多的带宽来投资其他领域”。

沙尼承认,这些都还没有在生产率提高方面得到彻底、严格的量化。“我认为我们正处于其中,”她在谈到衡量生产力的过程时说道。Copilot 及其同类产品“被采用的时间还不够长,不足以让我们获得真实、大量的数据,我们可以说,这就是我们如何永远改变生活的方式。”

她指出,定义对于生产力来说很棘手。“你可以非常快地编写非常糟糕的代码”,因此,通过代码完成来加速代码“不一定是成功的指标”。

相反,沙尼说,“我们正在进行的工作是,什么是真正的价值时间?影响是什么?我们如何衡量我们一直采用的这些工具的影响?这仍在进行中。”

沙尼说,另一个需要衡量的重要因素是“如何定义开发者的幸福感”。“对于开发人员来说,获得认可非常重要,而现在,一些公司的认可来自于衡量我编写了多少行代码。” 但她指出,程序员的冗长程度可能并不是衡量程序员有多优秀的最佳指标。

人工智能中形成的新抽象层的更深刻的元素之一是减少了在不同工具之间切换的需要。

“通常,如果我正在寻找一些我不知道如何写的东西,我会使用某种搜索引擎,”沙尼解释道。“Copilot 能够将所有这些带入同一个环境中。” 界面、提示“就在您的 IDE 集成开发环境中”,因此“您不需要使用不同的工具,不需要复制粘贴,不需要完成所有这些;您基本上就留在编写代码的地方。”

因此,“开发人员很高兴,因为他们在工具之间的上下文切换减少了。”

Copilot 正在寻找进入编程团队其他领域的途径。Shani 表示,电子商务公司 Shopify 是 Copilot 的一大用户,它正在使用 Copilot 进行编码面试,以评估新员工。它还使用 Copilot 来引导新程序员,作为“同行程序员”或教育者来帮助新程序员加快速度。

Shani 说,在 Copilot 和类似工具尚未产生人们想要的结果的情况下,很大程度上可能是因为即时工程的学习曲线。“你仍然需要知道如何提出正确的问题,”。

“你[在提示时]提出的问题越广泛,你得到的解决方案就越通用,但不一定适用于你的情况,”然而,“你越知道如何提出正确的问题,你就越好从副驾驶那里得到答案。”

她说,微软正在与埃森哲等客户合作研究“变革管理”,以及如何编写“正确的提示”,以及“如何思考你向 Copilot 提出的问题以获得适用的正确答案”。

Copilot 本身还有很多充实之处,这可能会对其实用性和准确性产生重大影响。该程序正在逐渐获得针对个人开发人员“个性化”的能力。“我们正在研究的一个方面是如何帮助这些模型了解您的编码风格,”Shani 说,“了解这些元素中哪些对您作为软件开发人员至关重要,从而调整我们为您提供的建议。”

2 月份,GitHub 将全面推出 Copilot 企业版。Shani 说:“这专门针对那些希望拥有自己的实施风格的企业的更多定制模型。”

在企业版中,“您将能够使用 Copilot 总结 PR 或向代码添加注释,或者搜索文档并获取您正在查找的文档。” 还将更加重视 Copilot 对测试和压力测试的处理。

Shani 表示,总体理念是“用同一种人工智能流程模型来集中所有内容,涵盖整个软件开发,从启动到生产。”

芯片制造商Advanced Micro Devices是企业版的测试客户之一,专门用于微调AMD的内部生成式AI模型。“我们有一长串的等待名单,里面有更多想要进入的顾客,”她指出。“我们正在对其进行大量严格的测试,在我们有信心分享之前,我们希望从目前参与我们测试计划的客户那里获得大量反馈。”

谈论开发人员的幸福感可能听起来很奇怪,因为有些人认为通过人工智能自动化代码可以消除编程工作。然而,沙尼坚称,事实并非如此。“它不会取代开发商,我想说,五年、十年内都不会,”她说。“我属于永远不会的阵营,因为我们只是作为开发者不断发展。”

Shani 一年前加入 GitHub 之前,曾在 Amazon AWS 运行 Elastic Containers 产品,她已经在人工智能领域工作了二十多年。她回忆起自己作为一名程序员从 Fortran 到 C++、Java 再到 Python 的个人经历。“每时每刻,每个人都惊慌失措:哦,天哪,这会夺走开发人员的工作。”

但是,“我们看到开发人员的数量有所增加,因为现在我们降低了编写更多软件的门槛。”

与此同时,沙尼认为,人工智能副驾驶的发展“与工业革命相同,工业革命导致工厂扩大食品生产规模以满足需求”。“这就是现在正在发生的事情:对软件的需求更多,因此对软件开发人员的需求也更多。”

如果代码生成可以准确地自动化,如果抽象层可以节省上下文切换,那么Copilot之类的产品是否能够真正缩短项目的开发时间?

在《The Mythical Man-Month》一书中 ,程序员 Fred Brooks 观察到,简单地向大型编程项目添加资源不仅不会加快项目速度,很多时候反而会让事情变得更糟。

目前尚不清楚人工智能是否会极大地帮助项目调度和管理,或减少大型编程项目所需的总工作量。

“我不知道几个月的概念是否会变成几秒钟,”沙尼说。“事情仍然需要适当的时间才能成熟,但我认为,如果我们能够在更短的时间内实现我们正在寻找的价值,那么实现这一目标的方式将会更加顺利和高效。”