资深软件工程师期待的AI编程体验:结构、控制与信任

本文探讨了AI辅助编程的现有问题,指出AI工具需要为开发者提供更多结构、控制及测试验证方式,以实现可靠协作,而非仅追求代码生成速度。

资深软件工程师期待的AI编程体验

AI编码助手或编辑器,如Cursor、Windsurf、Lovable和GitHub Copilot,正在改变开发者的编码方式。如今,只需输入几个提示,就能在几分钟内将想法转化为可运行的应用程序。这令人兴奋,但也存在风险。许多新开发者可以在不完全理解代码工作原理的情况下构建功能。你能信任AI编写的代码吗?你或你的团队以后能理解它吗?在某些情况下,是AI而不是开发者在做出关于软件架构如何构建的重大决策。

通常,资深工程师不会在不考虑领域知识、架构或代码可重用性的情况下直接开始编码。他们知道一段代码何时适用,何时不适用。为了在真实项目中有用,AI工具需要为开发者提供更多结构、控制以及测试和信任所构建内容的方式。

在本文中,我将探讨AI辅助编程(或有些人称之为氛围编码)的现有问题,以及AI编辑器体验对资深软件工程师应该是什么样子。

当今大多数AI编码工具的问题

AI编码工具向我们展示了语言模型可以编写代码。如今大多数工具旨在节省时间和自动化常规任务。AI可以自动化高达80%的工作,但达到99%或更高的准确性仍然取决于人类输入。因为最终,代码库中最有价值的部分不是代码,而是背后的思考。让我们回顾一些关键的AI编码问题。

1. AI误解你的意图

AI从未完全理解你想要构建什么。你输入一个提示,如“创建一个返回活跃用户的端点”。AI自信地编写了一些代码。但“活跃”在此上下文中意味着什么?最后登录时间?会话时间?订阅状态?

AI提供了一个半正确的解决方案,而没有理解全部意图。如果你尝试提供高度详细的提示,对于基于令牌的定价模型来说成本太高,对用户来说也很费力。或者AI陷入循环,中途忘记提示。现在你花了更多时间调试你没有编写的代码。

2. AI不解释其选择

这个API调用从哪里来?这个函数的结构是什么?为什么选择这个库?这些问题没有得到回答,因为大多数AI工具提供输出而没有理由。因此,资深开发者被迫审计不熟悉的代码,对其背后的假设或权衡没有洞察,这使得修改输出变得风险很高。当没有人拥有或理解代码背后的推理时,代码就失去了长期可维护性。

3. 没有任务结构,没有规划

编码不仅仅是打字。它是分解问题、做出架构决策和思考边缘情况。我尝试过的大多数氛围编码工具在一个块中生成代码,而没有将工作分解为逻辑步骤,或提供已完成和剩余内容的可见性。

没有任务进度仪表板或已完成与待处理操作的概述。你盲目点击“下一步”,不知道完成了多少或还剩多少。它鼓励与AI的被动关系,开发者成为审查者而不是协作者。

4. 测试来得太晚(或根本没有)

AI工具很少测试它们编写的内容。如果测试,也往往是表面级的。这意味着更多的错误、更多的手动努力和更多的风险。对于交付生产代码的资深开发者来说,这些问题使AI感觉更像一个初级实习生,而不是可靠的队友。

资深开发者真正需要从AI中获得什么

AI工具不应该只是打字快。它们应该支持经验丰富的开发者构建和维护软件的方式,具有结构、反馈循环和领域意识。

1. 计划:在编码前对齐

资深开发者通常不会直接开始编码——他们会澄清范围、将工作分解成部分,并对要构建的内容达成一致。AI工具应该通过提出正确的问题、澄清范围并创建带有子任务的任务计划来做同样的事情。这个计划阶段有助于解决AI编码中最大的痛点之一:不对齐。

2. 编码和验证:不仅生成,还要测试、修复、重复

代码编译通过是不够的。每次AI生成代码时,它还应通过单元测试和功能测试来验证其适用于不同的工作流。

这个过程应该是自动化和可重复的,就像一个代码验证循环(如下图所示*)*:

  • 从任务生成一个代码单元
  • 用测试验证它
  • 如果失败则调试和重写,直到代码通过所有测试
  • 总结结果和推理

3. 不仅编写代码——还要拥有它

资深开发者构建随业务演进的软件。这需要将代码与业务意图、领域术语和组织标准对齐。为了帮助资深工程师,AI生成的内容应附带上下文:

  • 生成了什么,以及它如何与目标连接?
  • 为什么选择这个方法或库?
  • 与现有实现相比发生了什么变化?
  • 做出了哪些权衡——性能与清晰度、速度与灵活性等?

这种清晰度至关重要,特别是如果你想长期维护代码。内联注释、代码差异和简单的变更日志应该是输出的一部分。

4. 安全、沙盒环境

对于企业和专业开发者来说,对工具的信任不仅来自输出质量,还来自输出生成的安全性。

然而,当今许多AI工具默认基于云处理,通常将大部分代码上传到外部服务器。对于处理敏感数据、专有代码或受监管环境的团队来说,这是一个致命问题。

  • 代码应在安全沙盒中运行和测试。
  • 避免将源代码上传到外部服务器。
  • 测试应在隔离环境中工作,实现无风险的实验。

AI编码的未来是协作

资深工程师需要的不仅仅是一个打字助手。他们需要一个可靠、可解释和自主的队友——一个在编码前计划、测试每一步、解释所做决策并适应项目上下文的代理。这才是真正的开发方式。我们离这个未来并不远。但达到那里意味着重新思考整个AI编码体验,并开始构建在团队中赢得一席之地的AI代理。

我很想听听你的想法:

  • 你期望AI助手在你的编码工作流中做什么?
  • 你是否曾经使用过AI生成的代码,它有效但不合理?
  • 在真实项目中使用AI工具时,你如何平衡速度和理解?
  • 你希望当前AI编码工具拥有但还没有的一个功能是什么?
  • 你认为AI工具应该参与架构决策吗?为什么或为什么不?
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计