作为谷歌开发者工具产品管理高级总监,瑞安·萨尔瓦(Ryan Salva)身处人工智能工具变革编程方式的最前沿。这位曾任职于GitHub微软的行业老兵,如今负责Gemini CLIGemini Code Assist等工具,正引导开发者步入“智能体编程”的新纪元。

Cover Image

他的团队于周二发布了一项新的第三方研究,揭示了开发者实际如何使用AI工具——以及还有多少进步空间。我与他坐下来探讨了这份报告以及他个人使用AI编程工具的经验。

谷歌每年都会进行开发者趋势调查——但今年的报告真正聚焦于AI工具,特别是开发者在编程方法上愿意在多大程度上拥抱“智能体化”。研究中有没有什么发现让您感到意外?

一个非常有趣的发现是开发者开始使用AI工具的中位时间点。研究显示是2024年4月,这与Claude 3Gemini 1.5的发布时间相当吻合。这真正标志着推理或思维模型时代的黎明,也大约在同时,我们在工具调用方面取得了巨大进步。

对于编码任务,你确实需要能够利用外部信息来解决问题,因此模型可能需要执行grep命令,可能需要编译代码。如果代码编译成功,它可能还想运行单元测试和集成测试。我认为工具调用确实是关键所在,它赋予了模型在执行过程中自我纠正的能力。

您个人是如何使用AI编码工具的?

“我现在的大部分编码都是为了业余项目,我大部分时间都在使用基于命令行的工具。这包括Gemini CLI。此外也会用一点Claude Code,一点Codex。你不可能只用一个终端工具,所以我在使用的集成开发环境(IDE)上非常多样化。我用Zed。我用VS Code。我用Cursor。我用Windsurf,所有这些都用,因为我感兴趣的是观察世界如何运转,以及行业如何演变。”

“在专业层面,产品经理通常与文档打交道,所以首先是使用AI来帮助我编写规格说明和需求文档。”

“我很好奇这是如何运作的。您正在用Gemini CLI来构建Gemini CLI本身,但我想它不会自己运行自己。”

一个开发任务通常始于一个议题,可能是某人在GitHub上提交的一个带有关Bug的议题。老实说,很多时候这个议题的描述相当不完善。所以我会使用Gemini CLI来创建一个更健壮的Markdown格式的需求文档。这通常会生成大约100行技术性强、且以结果为导向的规格说明。然后,我会使用Gemini CLI,基于该规格说明和团队文档中的通用偏好来编写代码。

“在整个工程团队中,我们有几层不同的规则和Markdown文档供模型读取,这些文档阐述了我们的工作方式:这是我们做测试的方法,这是我们管理依赖的方式,等等。所以当它生成代码时,也参考了这些文档。”

“当Gemini CLI进行故障排除时,我会让它更新我的需求文档,写明“我修复了这个步骤。现在我开始下一步”,依此类推。每一个这样的更新都会在代码库中创建自己的提交和拉取请求,所以我总是可以回退或撤销。”

“我想说,我大概70%到80%的工作是在终端中使用自然语言进行的,尝试用Gemini CLI来制定需求,然后让Gemini CLI为我编写大部分代码,之后我会用我碰巧在用的任何IDE去审查和阅读这些代码。但大多数时候,我把IDE当作阅读代码的地方,而不是编写代码的地方。”

您认为原始的计算机代码还有未来吗?还是我们会把所有东西都移到终端窗口里?

“三十年来,IDE一直是我们进行软件开发一切活动的地方。你有IDE,你有浏览器,你还有终端窗口。”

“我认为现在大体上依然如此,但我猜想,随着时间的推移,我们最终会花更多时间处理需求,而在IDE中花费的时间将逐渐减少。而且我认为这种变化实际上可能会在一个相当长的时间跨度内发生。”

“很多人对此感到焦虑,担心这对软件开发这一职业意味着什么。如果10年后,我们不再看代码了,那对开发者意味着什么?他们还会有一份工作吗?”

“我认为,开发者的工作将变得更像建筑师。它将关乎于处理庞大、复杂的问题,并将其分解成更小、可解决的任务。你需要更多地思考你试图产出的东西的宏观蓝图,而不是用于在机器代码中表达这个蓝图的中间语言。”


文章标签: #人工智能 #编程工具 #谷歌 #开发者 #未来趋势

负责编辑

  菠萝老师先生 

  让你的每一个瞬间都充满意义地生活,因为在生命的尽头,衡量的不是你活了多少年,而是你如何度过这些年。