工程瓶颈已经转移
AI辅助开发降低了编写代码的成本,使得工程瓶颈从编写代码转向了判断:知道该写什么、发现细微错误以及决定什么是真正重要的。文章探讨了这种转变对工程实践的影响,包括更积极的委托、风险导向的代码审查、设计可逆依赖和可删除模块,并强调了人类判断力仍然不可替代。
多年来,我一直将工程决策视为一旦做出就不可更改的刻在石头上的东西。选择错误的抽象层,你会为其付出多年的代价;选错服务边界,你得花几个季度来理清。这种成本深刻影响了我做事的谨慎程度:规格说明的仔细程度、审查的次数、在承诺任何事情之前等待的时间。
我并不认为这种直觉完全错了,但我觉得它如今已经变得不那么相关了。AI辅助开发使第一遍编写变得极其廉价,以至于瓶颈已经悄然转移。昂贵的部分不再是编写代码,而是知道该写什么、发现什么微妙地错了,以及决定什么才是真正重要的。
换句话说,过去谨慎很重要,尤其是在大规模场景下,但现在我认为判断力取而代之。过去几个月尤其改变了我的工程思维方式。
之前与之后的心态
在AI辅助开发之前,依赖变更和技术债务清理带有特定的成本:注意力和风险,而不仅仅是时间。触及一个接口意味着要首先审计每一个下游消费者。重构核心模块意味着要映射所有调用点并吸收任何遗漏。
我保护着设计,推迟清理,维护抽象层的时间过长,因为破坏需要我无法在冲刺中合理化的努力。
但现在,AI使验证、迁移和重构变得足够廉价,可以尝试、检查并撤销。我可以起草一条迁移路径,审查差异,如果方向错误,一个下午就放弃。没有真正的时间或精力损失。
我曾经无限期推迟的探索性重构,现在在暴露它们的特性工作的同一个会话中就完成了。
真正的转变在于我们可以把注意力花在哪里。当触碰代码昂贵时,你就保护它。当它廉价时,你可以探索它。
现在,谨慎只属于那些真正难以逆转的决策:没有回滚的数据迁移、带有外部依赖的API契约、嵌入拓扑的架构选择。其他一切都可以灵活处理,这从一开始就改变了我对设计的思考。
三个具体转变
旧的本能是追求纯粹:锁定精确版本,避免分支,把每个上游依赖都视为神圣不可侵犯。我的新本能更务实。AI辅助验证使得在几秒钟内测试一个本地修补的依赖与你的关注区域变得廉价。而且更好的是,模型使得迁移出依赖同样容易,因此你永远不会真正被锁定。“尝试,然后继续”总比等待上游要好,尤其是你可以让模型在上游准备好时再把你迁移回去。
旧的本能是将清理工作囤积起来,留给专门的冲刺周期。债务太贵,所以你要么批量处理,要么忽视它。我的技术栈主要包括Devin、Cursor和Codex,这使重构和风格修改变得非常快。我仍然喜欢拥有对人类可读的代码,以防我们需要深入研究一个棘手的错误。这种增量清理现在可以在特性之间进行,而不仅仅是在专门周期内。这改变了成本核算:债务不那么可怕,不那么需要推迟。但它仍然是真实的——AI工具压缩了努力,而不是判断何时修复什么所需的能力。
聊天和代理界面惩罚以屏幕为中心的思维。如果你的产品核心逻辑与特定的UI形状紧密耦合,那么每次交互模型发生变化时你都需要重建它——而目前交互模型正在快速变化。新的本能是将UI视为一个薄的、可丢弃的层,位于定义良好的行为之上。构建易于更改或删除的系统。投资于你的系统做什么的语义,而不是它如何显示的像素。过度工程一个固定的界面是新的过早优化。
对团队实践的影响以及什么仍然重要
AI辅助开发压缩了迭代周期,这改变了我们在工程上的战略制定方式,而不仅仅是编写代码的方式。
对我们团队的影响到目前为止:
- 更积极地委托。生成是廉价的,所以初级工程师可以拥有更多表面区域。你的工作从编写转向设置约束和审查结果。
- 审查风险,而不是风格。代码审查变成“什么在大规模或负载下会失败”,而不是“你是怎么写的”。
- 选择可逆的依赖。快速迭代会迅速暴露糟糕的锁定。优先选择可以在一个冲刺内替换的契约。
- 为删除而设计。AI生成的代码被更频繁地替换。模块化、有边界的设计不仅仅是优雅的——它比以往任何时候都更实用。
- 教授品味,而不是语法。指导转向帮助工程师识别看似合理但错误的输出。
什么仍然重要
AI可以比以往更快地编写代码,但这并不意味着它正确。它经常产生没有错误但仍解决错误问题的代码。仍然需要有人去阅读、维护并发现这些错误。那个人就是你。
有些事情没有改变:
- 你仍然需要决定正确的解决方案是什么样子的。AI没有像你那样理解你的业务需求。
- 代码仍然应该可读。如果出现问题,你需要自己介入调试,你会很高兴能够理解代码在做什么。
- 只有真正的人才能理解用户真正在挣扎什么。AI无法感知这一点。
更快地移动是好的,但最终决定权仍然属于人类。工具加速了工作,判断力仍然属于你。
最后思考
AI并没有消除工程中的艰难工作。它重新定位了它。曾经用于理清遗留代码、修补脆弱集成以及维护没人完全理解的系统的时间,现在可以用于更好的事情:理解用户、设计适应性强的架构以及构建真正重要的东西。
维护税并没有消失,但它正在缩小。你用回收的注意力做什么才是真正的问题,而能够回答这个问题的工程师将定义软件开发的这个时代。