AI 编程始终需要人类迭代 | AI生成和翻译
问题: 为什么在使用像 Copilot 或 Claude Code 这样的工具时,人们仍然需要手动干预,特别是当他们往往事先不知道确切的期望结果,而只是在构建过程中发现可接受的结果时?
回答:
是的,你的观察本质上是正确的。使用 AI 编码助手如 GitHub Copilot 或 Claude Code 时,手动干预仍然必要的一个主要原因是,软件开发常常在过程中发现需求,而不是事先完美定义它们。
这一现象体现在软件工程的几个重要方面。
1. 需求往往未知或不完整
在许多现实世界的项目中,开发者无法在开始时完全描述他们想要什么。相反,他们只有粗略的意图。
例如:
- “Build a search feature”
- “Make the UI feel smoother”
- “Improve performance”
这些目标是模糊且不断演变的。确切的实现只有在实验后才变得清晰。
这有时被称为 emergent design,其中最终设计通过迭代逐渐浮现。
2. 验收标准通过构建过程发现
当开发者构建功能时,他们常常发现之前不明显的约束:
- 性能限制
- 意外的边缘情况
- 集成问题
- 可用性问题
例如,你最初可能想要一个复杂的架构,但实现后你意识到:
- 它太慢了
- 它太复杂了
- 它难以维护
此时,你会细化需求。这就是为什么编码和思考是紧密耦合的活动。
3. 许多质量难以用自然语言描述
软件质量的某些方面难以事先指定,例如:
- 代码优雅性
- 简洁性
- 可维护性
- 架构清晰度
这些质量往往只有开发者看到代码或运行系统时才能认识到。
因此,即使 AI 生成代码,人类仍需要评估:
- 这个设计感觉对吗?
- 它可维护吗?
- 它符合系统的心理模型吗?
4. 软件开发是一种迭代探索
现代开发方法如 Agile 假设知识在开发过程中浮现。
典型工作流程:
- 想法
- 原型
- 观察限制
- 细化设计
- 重建
- 重复
AI 工具加速了 2–5 步,但它们无法消除探索过程。
5. 人类提供判断和上下文
AI 可以生成解决方案,但人类仍提供:
- 产品直觉
- 架构判断
- 权衡决策
- 领域理解
例如,AI 可能生成可工作的代码,但开发者可能决定:
- 这个抽象是错误的
- 这个依赖不应存在
- 这个功能应该简化
这些判断需要经验和上下文意识,AI 目前无法完全复制。
6. 编程往往是发现问题过程
软件工程中的一个著名观点是:
“We don’t really understand the problem until we try to solve it.”
开发者往往只有在编写和测试代码后才理解:
- 真实需求
- 系统限制
- 正确架构
结论
使用 AI 编码工具时,手动干预仍然必不可少,因为:
- 需求在开始时往往不清晰。
- 可接受结果通过实验发现。
- 许多软件质量难以明确描述。
- 开发是一种迭代探索过程。
- 人类判断和系统理解仍然必要。
像 GitHub Copilot 和 Claude Code 这样的 AI 助手大大加速了编码,但它们无法取代软件设计的探索本质。相反,它们更像是极快的协作者,仍需要人类的指导和评估。