专栏名称: 程序员的那些事
最有影响力的程序员自媒体,关注程序员相关话题:IT技术、IT职场、在线课程、学习资源等。
目录
相关文章推荐
51好读  ›  专栏  ›  程序员的那些事

20 多年经验的程序员大姐:一年内 AI 绝无可能自主编写 90% 的代码

程序员的那些事  · 公众号  · 程序员  · 2025-03-27 11:38

正文

请到「今天看啥」查看全文


大家好,我是小程程。

今天在 HackerNews 刷到一篇热文,来自大佬 Martin Fowler 的个人网站,作者是 一位从业 20 多年的 程序员大姐 Birgitta Böckeler


开发者技能在代理编程中的角色

随着 AI 编程助手的能力不断提升,业界反应各不相同。有人从近期的技术进步推断:“ 一年后,我们将不再需要开发者 。” 另一些人则担心 AI 生成代码的质量,以及初级开发者如何适应变革。

在过去几个月里,我频繁使用 Cursor、Windsurf 和 Cline 的代理模式(主要用于修改现有代码库,而非从头开发井字棋游戏)。IDE 集成的最新进展给我留下了深刻印象,这些集成极大地提升了工具辅助我的方式:

  • 执行测试和其他开发任务,并尝试自动修复错误

  • 自动检测并尝试修复代码规范和编译错误

  • 进行网络搜索

  • 部分工具甚至集成了浏览器预览功能,可捕获控制台错误或检查 DOM 元素

这些功能带来了令人惊叹的 AI 协作体验,有时能帮助我以创纪录的速度构建功能和解决问题。

然而

即使在这些成功的协作中,我仍需持续干预、纠正和引导 AI。很多时候,我甚至决定不提交 AI 生成的更改。在本文中,我将通过具体的引导案例,说明开发者的经验和技能在“监督代理”模式中的作用。

这些案例表明,尽管 AI 技术进步显著,但我们距离 AI 自主编写非重要任务的代码仍有很长的路要走。同时,它们也揭示了开发者在可预见的未来仍需掌握的技能类型——这些是我们必须保留和培养的能力。


我需要干预的场景

首先要说明的是,AI 工具在我列举的这些方面 绝对且始终表现不佳 。某些问题可以通过额外提示或自定义规则缓解,但无法完全控制:LLM 经常不严格遵循提示要求。

编程会话越长,结果越不可预测。因此,无论提示多么严谨,或编程助手集成了多少上下文提供者,我列举的问题仍有 不可忽视的发生概率

我将案例分为三类影响范围:

a. 减缓开发速度 (与手动编程相比)
b. 破坏团队协作流程
c. 损害代码长期可维护性

影响范围越大,团队发现问题的反馈周期越长。
(同心圆图示:提交、迭代、代码库生命周期)

1. 提交时间影响

这些案例中,AI 的阻碍大于帮助。由于问题最明显,这类影响反而是 最不严重 的,因为更改很可能不会被提交。

代码无法运行

我必须干预以确保代码正常工作。我的经验帮助我快速定位错误,或及时放弃 AI 生成的方案,重新开始或手动解决问题。

问题误诊

AI 经常陷入错误诊断的死胡同。基于对类似问题的经验,我能及时将其拉回正轨。

示例 :AI 误认为 Docker 构建问题由架构设置引起并修改了配置,但实际原因是复制了错误架构的 node_modules。


2. 团队协作流程影响

缺乏审查和干预,会导致交付迭代中的团队摩擦。基于在多个交付团队的经验,我能在提交前纠正这些问题。即使有 AI,程序员新手仍需通过试错学习,问题在于 AI 带来的编程效率提升是否会导致团队无法持续吸收这些错误。

过度前期工作

AI 倾向于一次性实现大范围功能,而非渐进式开发。这可能导致在发现技术选择不可行或需求误解时,浪费大量前期工作。

示例 :在前端技术栈迁移任务中,AI 试图一次性转换所有 UI 组件,而非从一个组件和垂直切片开始。

暴力修复而非根本原因分析

AI 有时采用暴力方法解决问题,而非诊断根本原因。这会将问题延迟到后续阶段,增加其他成员的分析难度。

示例 :Docker 构建内存不足时,AI 直接增加内存设置,而非探究内存使用过高的原因。

复杂化开发流程

AI 生成的构建流程可能损害开发者体验。

示例 :要求分别运行前后端命令(而非统一命令)、破坏热重载功能、复杂的构建配置等。

需求误解或遗漏

当需求描述不详细时,AI 容易得出错误结论。开发者必须在早期而非后期干预,否则问题将在后续流程中引发反复修改。


3. 长期可维护性影响

这是 最隐蔽 的影响,反馈周期最长(可能数月后才被发现)。代码当前可能正常运行,但未来修改成本极高。这类问题最依赖我 20 余年的编程经验。

冗长冗余的测试

AI 生成的测试常创建新函数而非扩展现有断言,或添加过多重复断言。对新手而言,更多测试≠更好。测试重复会导致维护困难和脆性增加。

缺乏复用性

AI 代码有时缺乏模块化,导致重复代码。

示例 :未发现已有 UI 组件,重复开发;使用内联 CSS 而非类和变量。

过度复杂的代码

AI 可能生成冗余代码或不必要的功能。

示例 :每次 CSS 修改后,我都需手动删除大量冗余样式;生成复杂的 Web 组件,远超当前需求。


结论

我的经验表明, 一年内 AI 绝无可能自主编写 90% 的代码 。它能辅助编写 90% 的代码吗?或许对某些团队和代码库成立。

目前,在一个中等复杂度的 1.5 万行的代码库中,AI 能辅助我完成 80% 的工作。

如何防范 AI 编程失误?

那么,怎样在享受 AI 编程助手带来的便利时,保护软件和团队免受 AI 工具的不可预测性影响?

个人开发者

1、 始终仔细审查 AI 生成的代码。我几乎每次都能发现需要修复或改进之处。

2、 当感到 AI 编程过程失控时立即停止。要么修改提示词重新开始,要么回归手动实现。

3、 警惕那些短时间内奇迹般生成的“足够好”的方案,它们往往会带来长期维护成本。

4、 实践结对编程 。四只眼睛比两只看得更清楚,两个大脑比一个更少自满。

团队与组织

1、 传统代码质量监控 。如果尚未部署,应安装 Sonarqube 或 Codescene 等工具检测代码异味。虽然无法覆盖所有问题,但能构建安全网的基础。某些代码异味(如代码重复)在 AI 工具中会更突出,需加强监控。

2、 预提交钩子与 IDE 集成代码审查 。尽可能实施左移策略——利用 Pull Request 阶段或流水线中的代码审查、语法检查和安全扫描工具。但在开发过程中直接发现问题效果更佳。

3、 重温代码质量实践 。针对本文所述陷阱及团队实际遇到的问题,建立强化措施来减轻后两种影响半径。例如创建"失误日志"记录 AI 代码引发的团队摩擦或维护问题,每周复盘。

4、 制定自定义规则 。多数编程助手支持配置规则集或随提示词发送的指令。团队可利用这些功能迭代基准提示指令,将最佳实践制度化。但需注意,AI 未必会遵循规则,对话越长、上下文窗口越大,效果越不稳定。

5、 建立信任与开放沟通的文化 。我们正处于技术颠覆工作方式的转型期,每个人都是新手。具备信任文化和开放沟通的团队更能应对技术带来的脆弱性。例如,因"有了 AI"就施压团队加速交付的组织,更容易面临质量风险;而高信任度和心理安全感的团队,开发者更易分享 AI 使用中的挑战,推动团队更快学习工具潜力。


网友评论

这篇文章在 HackerNews 引发热议,小程程摘录两个留言:

网友 ikerino

最近我大部分开发工作都在使用 Cursor。这篇文章与我的体验高度吻合。补充几点:

1、 AI 知识停留在 2021 年

直观感受是,AI 代理的知识似乎卡在了 2021 年左右。当我安装较新的软件包时,Claude 会回退到四年前流行的过时包或实现方式。这种情况既令人沮丧又需要反复纠正。虽然通过明确指定使用哪些包可以缓解问题,但无法根治。

2、 错误的不可预测性

几个月前,我用 Claude“一键生成”了一个功能完整、打磨得相当不错的 Web 应用——要是我自己开发可能需要几周或几个周末。但当我要求它用提供的文件更新网站图标时,它却徒劳地折腾了一个小时(最后我自己花了几分钟解决)。几天前,我尝试用类似方式生成另一个 Web 应用,在与代理纠缠了约 4 小时后,我几乎想彻底放弃这段代码。

3、 降低尝试门槛,但高质量产出仍需努力

AI 让我有勇气尝试那些原本因时间、技术或动力不足而不会启动的项目。低摩擦开发确实令人兴奋,但构建有价值的产品依然困难重重。即使有 AI 辅助,打磨出一个像样的 MVP 仍需投入大量精力。

4、 龟兔赛跑的启示

依赖 AI 代理的诱惑在于初期进展看似极快,但最终我往往觉得:如果用更慢、更专注的方式开发,反而能取得更扎实的成果。手工编程时,我很少需要回溯或推翻整个方案;而使用 AI 驱动的方式,速度可能提升 10 倍,但中途要丢弃约 70% 的工作。

“我的经验表明,一年内 AI 绝无可能自主编写 90% 的代码。它能辅助编写 90% 的代码吗?或许。”

完全赞同。当前环境很像自动驾驶汽车的炒作周期——有很多大胆承诺(也有真实进步),但未来五年内,我看不到 AI 能独立写出有用软件的可能性。


网友 ferguess_k

我其实不太喜欢 IDE 里的 AI 功能。我不希望它们替我思考。代码补全和智能感知已经足够了。

不过,我认为有三个重要事项需要注意:

1、 快速掌握新框架或语言

由于 AI 的帮助,人们可能会期望你能更快做到这一点。掌握时间的上限可能从原来的“最短时间”变成“最多两周”,对初级开发者也是如此。

2、 聚焦核心问题

与其花时间记忆一年只用几次的 Shell 脚本,不如把精力放在学习更基础的知识上。你可以用 AI 辅助学习入门。如果是为了面试准备,花一周时间死记硬背也无妨。

3、 主动排除 AI 的思维干扰

如果所有事情都依赖 AI(包括算法和设计),可能会影响你对问题的理解深度。

关于 AI 编程助手,各位程序员都有哪些心得呀,欢迎大家留言讨论。

- EOF -

推荐阅读 点击标题可跳转

1、 刚刚!TypeScript 之父宣布一重大好消息

2、 “我被人攻击了,半个互联网都想搞垮我的 APP”

3、 怀孕女子楼顶维权,涉事方某里回应:她是外包,没辞退







请到「今天看啥」查看全文