ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI编程之外:研发流程重构的暗线与工程实践

AI编程之外:研发流程重构的暗线与工程实践

1. 为什么只盯着AI Coding会看偏方向

1.1 一个被过度简化的叙事

过去一年多,关于AI编程的讨论几乎都集中在同一个画面上:一个开发者坐在编辑器前,敲下几行注释,AI自动补全出一整段函数,甚至直接生成一个可运行的小项目。这个画面很震撼,也很容易传播,于是它成了很多人理解“AI改变软件开发”的全部。

但如果你真的在一个研发团队里待过,就会知道写代码这件事在整个研发流程里占的时间其实没有外人想象的那么多。一个需求从提出到上线,中间要经过需求评审、技术方案设计、任务拆分、编码、自测、代码评审、联调、测试、灰度发布、线上监控这一长串环节。编码只是其中一环,而且往往不是最耗时的那一环。

我见过不少团队兴冲冲地给所有人配上了AI编码助手,结果一个季度过去,交付效率的提升远低于预期。原因不复杂:瓶颈根本不在写代码的速度上,而在代码写出来之后的那一堆事情上。代码写得越快,如果评审、测试、联调这些环节还是老样子,反而可能堆积更多半成品,制造出新的拥堵。

所以标题里那句话是有道理的——真正的变化,不是发生在“写代码”这一个动作上,而是发生在整个研发流程的重构上。AI Coding只是最容易看见的那一层,水面之下还有更大的结构在动。

1.2 研发流程的“木桶效应”

用一个老掉牙但依然好用的比喻:研发流程是一只木桶,交付效率取决于最短的那块板。AI Coding把“编码”这块板一下子拉长了很多,但如果“代码评审”“测试验证”“环境部署”这些板还是原来的长度,那整个桶的容量几乎没变。

我做过一个粗略的观察,在一个中等规模的研发团队里,一个中等复杂度的需求,各环节的时间占比大致是这样的:

环节传统模式时间占比引入AI Coding后的变化
需求理解与方案设计20%基本不变
编码实现35%明显缩短
自测与调试15%可能增加(AI生成的代码需要更多验证)
代码评审10%可能增加(评审量变大)
联调与测试15%基本不变
发布与监控5%基本不变

这张表不是精确统计,而是我根据多个项目经验给出的估算。它想说明的问题是:编码环节缩短了,但其他环节没有同步变化,整体交付时间的压缩就非常有限。更麻烦的是,AI生成的代码如果质量参差不齐,自测和评审的负担反而会上升。

这就是为什么我说,只盯着AI Coding,等于只看到了冰山露出水面的那一角。

1.3 真正值得关注的三条暗线

如果把视角从“写代码”拉高到“整个研发流程”,我认为有三条变化是更值得关注的。

第一条是需求的表达方式在变。以前需求文档是写给人看的,现在越来越多的团队开始把需求写成结构化的、机器也能理解的形式,因为下游的很多环节要交给AI去执行。这背后是需求工程的一次 quietly 升级。

第二条是验证环节的自动化程度在被迫提升。AI生成代码的速度越快,人工验证就越跟不上,于是测试用例生成、自动化测试、静态分析这些能力必须同步跟上,否则整个流程会失衡。

第三条是研发角色的边界在模糊。当AI能承担一部分编码、一部分测试、一部分文档工作时,原来清晰的“前端”“后端”“测试”“运维”分工开始出现重叠,团队需要重新思考每个人到底负责什么。

这三条暗线,才是“整个研发流程发生变化”的真正含义。接下来我会逐层拆开讲。

2. 需求与方案阶段:变化从源头开始

2.1 需求描述正在从“给人看”变成“给人和机器一起看”

以前写需求文档,讲究的是把背景、目标、验收标准说清楚,让开发、测试、产品都能看懂。现在多了一个隐含要求:这份描述最好也能被AI工具直接消费。

我举个具体的例子。传统需求里可能会写“用户可以在列表页筛选出最近七天创建的订单”。这句话人看得懂,但AI要把它转成代码或测试用例,就需要补充更多结构信息:筛选条件的字段是什么、时间范围怎么计算、边界情况怎么处理、无结果时展示什么。

于是有些团队开始尝试一种“双层需求”写法:上层是给人看的自然语言描述,下层是结构化的字段说明和验收条件。下层这部分,可以直接被AI工具读取,用来生成接口定义、测试用例甚至部分代码骨架。

这种写法一开始会增加产品经理的负担,但实测下来,它减少的是下游反复澄清的成本。我参与过的一个项目里,需求评审的轮次从平均三轮降到了一轮半,因为很多歧义在写结构化描述的时候就被逼着解决了。

注意:不是所有需求都值得结构化。探索性、创意性的需求,过早结构化反而会限制思路。我的经验是,面向内部系统、流程明确的需求适合结构化,面向用户体验、需要反复打磨的需求还是先保持自然语言。

2.2 技术方案设计:AI开始参与“选型讨论”

技术方案设计这个环节,以前完全是资深工程师的领地。现在的情况是,AI可以快速给出多个方案的对比,虽然不一定都对,但能帮人打开思路。

我自己的做法是,在做一个新模块的设计时,先让AI列出三到五种可能的实现路径,包括各自的优缺点、适用场景、潜在风险。然后我拿着这份清单去和团队讨论,重点不是采纳AI的建议,而是用它来暴露我可能忽略的维度。

比如有一次设计一个数据同步模块,我原本只考虑了定时轮询和消息队列两种方案。AI补充了“基于变更数据捕获”和“双写加对账”两种思路,虽然最后没有采用,但讨论过程中我们对数据一致性的理解深了不少。

这个环节的关键在于:AI负责发散,人负责收敛。把AI当成一个不知疲倦的头脑风暴参与者,而不是决策者。

2.3 任务拆分:从“按人分”到“按可验证单元分”

任务拆分是研发流程里最容易被低估的环节。拆得好,后面顺风顺水;拆得不好,联调的时候就是灾难。

引入AI之后,任务拆分出现了一个新趋势:不再单纯按照“前端做这个、后端做那个”来分,而是按照“可独立验证的单元”来分。因为AI生成的代码需要快速验证,如果一个任务太大、依赖太多,验证周期就会拉长,反馈就慢。

具体做法是,把每个任务拆到能在半天内完成并验证的程度。比如“实现订单查询接口”可以拆成“定义接口契约”“实现数据访问层”“实现业务逻辑层”“编写接口测试”四个子任务,每个子任务都有明确的输入输出和验证方式。

这样做的好处是,AI可以在每个子任务上独立工作,人也可以独立验证,不需要等到整个功能做完才发现问题。我试过在一个中型项目里用这种方式,联调阶段的问题数量比以往少了大约四成。

3. 编码与评审阶段:AI Coding之外的关键动作

3.1 代码生成只是起点,代码理解才是难点

AI Coding工具现在确实能生成可运行的代码,但“可运行”和“可维护”之间还有很大的距离。我见过太多这样的情况:AI生成的代码逻辑上没问题,但命名随意、结构混乱、缺少注释,过两个月连原作者都看不懂。

所以真正重要的动作,不是让AI多写代码,而是建立一套让AI生成的代码能被快速理解的机制。我们团队的做法是,在代码评审清单里增加了几条专门针对AI生成代码的检查项:

  • 变量和函数命名是否表达了意图,而不是data1、handleThing这种
  • 是否有不必要的抽象,AI有时候会过度设计
  • 错误处理是否完整,AI经常忽略边界情况
  • 是否有重复代码,AI倾向于复制粘贴而不是抽取公共逻辑

这几条看起来简单,但执行下来,代码的可读性提升很明显。关键是,评审的人要意识到,AI生成的代码和人类写的代码有不同的“坏味道”,不能用同一套直觉去审。

3.2 代码评审:从“找bug”转向“找意图偏差”

传统代码评审的重点是找bug、找风格问题、找潜在的性能隐患。但在AI参与编码之后,评审的重点需要发生偏移。

原因是,AI生成的代码在语法层面通常没问题,常见的bug模式也较少犯。它真正容易出问题的地方是“意图偏差”——代码做的事情和需求想要的不是一回事。比如需求说“超时后重试三次”,AI可能实现成“重试三次,每次间隔固定”,但实际业务需要的是“指数退避”。

所以评审的时候,我现在会先问一个问题:这段代码解决的是不是我们真正要解决的问题?然后再看实现细节。这个顺序的调整,让评审效率高了不少,因为很多问题在第一个问题上就暴露了。

实操心得:让AI自己先评审一遍自己的代码,把明显的风格问题和潜在bug过滤掉,人工评审聚焦在业务逻辑和架构层面。这样能省下不少时间。

3.3 自测环节:AI生成测试用例的利与弊

AI生成测试用例这件事,用好了是神器,用不好是负担。

好处很明显:它能快速覆盖大量常规场景,尤其是那些人类容易忽略的边界条件。比如输入为空、输入超长、并发访问这些,AI通常会主动想到。

但问题也很明显:AI生成的测试用例往往“为了覆盖而覆盖”,缺少对业务核心逻辑的深度验证。它可能生成了二十个测试,但真正关键的那两个场景反而没测到。

我的做法是,让AI生成第一版测试用例,然后人工补充“业务关键路径”的测试。具体来说,我会问自己:如果这个功能只能测三个场景,我会测哪三个?把这三个场景的测试写扎实,剩下的交给AI去补充。

这样既利用了AI的广度,又保证了测试的深度。

4. 测试与发布阶段:被AI倒逼的自动化升级

4.1 联调为什么还是那么痛

联调是研发流程里最容易被忽视、但实际耗时很长的环节。AI Coding再强,也解决不了“两个服务之间的接口对不上”这种问题。

我观察到的现象是,AI生成代码的速度越快,联调的问题反而可能越多。因为AI在生成代码时,对接口的理解可能和实际约定有偏差,如果缺少严格的接口契约管理,联调时就会暴露出一堆不一致。

解决这个问题的关键,不是让AI写得更准,而是把接口契约前置。具体做法是,在编码开始之前,先用结构化的方式定义好接口的输入输出、错误码、超时行为,然后让AI基于这份契约生成代码。这样即使有偏差,也能在早期发现。

我们团队现在用一个简单的做法:每个接口在实现之前,先写一份契约文件,包含请求示例、响应示例、错误场景。这份文件既是文档,也是AI生成代码的输入,还是联调时的对照标准。三合一,省了很多扯皮。

4.2 自动化测试的覆盖面必须跟上

AI让代码产出速度提升了,如果测试还是靠人工点点点,那测试就会成为新的瓶颈。所以自动化测试的覆盖面必须同步提升。

但这里有个误区:不是所有测试都值得自动化。我的经验是,按照“变更频率”和“业务重要性”两个维度来划分:

变更频率业务重要性建议策略
高高必须自动化,且要稳定
高低自动化优先,允许偶尔失败
低高自动化加人工复核
低低人工抽检即可

这张表帮我们团队省了不少力气,因为不是所有东西都值得投入自动化成本。把资源集中在真正重要的地方,效果更好。

4.3 发布环节:灰度与回滚的自动化

发布环节的变化,可能是整个研发流程里最不显眼但影响最大的。AI让代码变更的频率变高了,如果发布还是手动操作、回滚还是靠人肉,那风险就会累积。

我们现在的做法是,把灰度发布和自动回滚做成标准能力。每次发布先切5%的流量,观察关键指标,如果错误率超过阈值就自动回滚。这套机制建立之后,发布的心理负担小了很多,因为知道出了问题能快速恢复。

这个环节和AI没有直接关系,但它是AI Coding能够真正发挥价值的前提。如果发布环节还是脆弱的,那前面写得再快,也不敢频繁上线,整体效率还是上不去。

5. 角色与协作:研发流程变化带来的连锁反应

5.1 开发者的工作重心在转移

当AI能承担越来越多的编码工作时,开发者的时间分配会发生明显变化。我自己的感受是,写代码的时间占比从原来的六成降到了三成左右,多出来的时间主要花在三件事上:把需求想清楚、把方案设计好、把验证做扎实。

这其实对开发者提出了更高的要求。以前你可以靠“写代码快”来体现价值,现在写代码快不再稀缺,稀缺的是判断力——判断什么该做、什么不该做、怎么做更稳妥。

我见过一些开发者在这个转变中感到不适应,因为他们习惯了用代码量来衡量自己的产出。但换个角度看,这其实是好事:把重复性的编码工作交给AI,人去做更有创造性和判断性的工作。

5.2 测试角色不是消失,而是升级

有一种说法是AI会让测试岗位消失,我不认同。测试的工作内容确实在变,但不是消失,而是升级。

以前测试的主要工作是执行用例、找bug。现在这部分工作越来越多地被自动化覆盖,测试人员需要往前站,参与到需求评审和方案设计中去,从源头发现可测试性问题。同时,他们还需要具备设计测试策略、搭建测试框架、分析测试数据的能力。

我认识的一个测试同学,去年开始主动学习如何用AI生成测试用例、如何设计自动化测试框架,现在他在团队里的价值比之前更高了,因为他能解决的是“怎么保证质量”这个系统性问题,而不是“帮我测一下这个功能”这种执行性问题。

5.3 协作方式:从“交接”到“共享上下文”

传统研发流程里,各个环节之间是交接关系:产品把需求交给开发,开发把代码交给测试,测试把结果交给运维。每次交接都有信息损耗。

AI工具的介入,让这种交接模式开始松动。因为AI可以同时理解需求、代码、测试用例,它可以在不同环节之间传递上下文,减少信息损耗。

我们团队现在尝试的做法是,用一个共享的上下文文档来贯穿整个流程。需求、方案、接口契约、测试要点都放在同一个地方,AI工具可以读取这个文档来辅助各个环节的工作。这样就不需要每个环节都重新解释一遍背景。

这个做法还在磨合中,但初步效果是,跨环节的沟通成本降低了,因为大家看的是同一份信息,而不是各自理解的版本。

6. 常见问题与实操避坑指南

6.1 引入AI后效率反而下降的几种情况

这是最常见的问题。很多团队兴冲冲引入AI工具,结果发现效率没提升,甚至下降了。根据我的观察,主要有以下几种原因:

第一种是工具太多、切换成本高。团队同时用了好几个AI工具,每个工具的操作方式不同,开发者要在不同工具之间来回切换,时间都花在切换上了。解决办法是收敛工具,选一个主力的,其他作为补充。

第二种是流程没有同步调整。AI把编码速度提上去了,但评审、测试、发布还是老流程,结果就是半成品堆积。解决办法是同步优化下游环节,让整个流程的节奏匹配起来。

第三种是缺少使用规范。每个人用AI的方式不一样,有人用来生成代码,有人用来查文档,有人用来写注释,没有统一规范,效果参差不齐。解决办法是制定简单的使用指南,明确什么场景用什么工具、生成的内容需要经过什么检查。

6.2 AI生成代码的质量波动怎么应对

AI生成代码的质量不稳定,这是客观事实。同样的提示词,不同时间生成的结果可能差别很大。

应对方法有几个。一是建立代码模板库,把常用的、经过验证的代码模式沉淀下来,让AI基于模板生成,而不是从零开始。二是增加自动化检查,用静态分析工具、格式化工具、单元测试来兜底,把明显的问题自动过滤掉。三是人工评审聚焦关键部分,不要试图审查每一行代码,而是重点看业务逻辑和架构决策。

我自己的习惯是,AI生成的代码先跑一遍自动化检查,通过了再看。这样能省下不少精力。

6.3 团队抵触情绪怎么化解

不是所有人都欢迎AI工具的引入。有些开发者会觉得自己的价值被威胁,有些会觉得AI生成的代码不可靠,有些只是单纯不习惯改变。

化解抵触情绪,我的经验是不要强推,而是用实际效果说话。先找一两个愿意尝试的成员,在小范围里用起来,把效率提升的案例整理出来,让其他人看到实际好处。同时,要明确AI是辅助工具,不是替代方案,人的判断力依然是核心。

另外,要给团队足够的学习时间。AI工具的使用本身就需要学习,不能指望今天引入明天就见效。我见过一些团队因为急于求成,反而让团队对AI产生了负面印象。

6.4 常见问题速查表

问题现象可能原因建议处理方式
AI生成的代码能跑但难维护缺少命名和结构规范建立代码模板库,增加评审检查项
编码快了但交付没快下游环节没同步优化同步优化评审、测试、发布流程
测试用例覆盖不全过度依赖AI生成人工补充业务关键路径测试
联调问题变多接口契约不清晰编码前先定义结构化接口契约
团队使用意愿低缺少引导和案例小范围试点,用效果带动
发布风险变高变更频率增加但发布机制没变建立灰度发布和自动回滚能力

这张表是我在实际项目中踩坑之后整理的,不一定全面,但覆盖了最常见的情况。遇到问题的时候可以对照着排查。

7. 我对整个研发流程变化的理解

7.1 变化的核心是“反馈速度”

把上面这些串起来看,我认为整个研发流程变化的核心,其实是反馈速度的提升。

AI Coding让代码生成变快了,但如果没有配套的评审、测试、发布机制,这个“快”就传递不到最终交付上。真正有价值的,是让整个流程的反馈循环变短:写完代码能快速验证,验证完能快速评审,评审完能快速发布,发布后能快速看到效果。

这个循环越短,团队的学习速度就越快,调整方向的能力就越强。AI在这个循环里扮演的角色,是加速器,而不是替代品。

7.2 不要追求一步到位

我见过一些团队试图一次性重构整个研发流程,结果往往是虎头蛇尾。更现实的做法是,找到一个最痛的环节,先把它优化好,然后再推进到下一个环节。

比如,如果联调是最痛的,那就先把接口契约管理做好。如果发布是最痛的,那就先把灰度发布和自动回滚建起来。一个环节一个环节地改,每次改完都观察效果,有效就继续,无效就调整。

这种渐进式的做法,看起来慢,但实际上更稳,也更容易在团队里形成共识。

7.3 人的判断力依然是稀缺资源

最后说一点我自己的体会。AI工具越强,人的判断力就越重要。因为AI可以生成很多选项,但选哪个、怎么组合、什么时候该停下来,这些都需要人来决定。

我在实际项目中的感受是,AI帮我省下了大量执行时间,但我的思考时间并没有减少,反而增加了。因为我有更多时间去想“这件事到底该不该做”“有没有更好的方式”“风险在哪里”。

所以如果你问我,研发流程变化之后,开发者最需要提升的能力是什么,我会说是判断力——在信息不完整的情况下做出合理决策的能力。这个能力,AI暂时还替代不了。

这个内容后续还可以这样扩展:针对不同规模的团队,研发流程的优化重点是不一样的。小团队可能更关注工具链的整合,大团队可能更关注流程的标准化和度量的建立。如果你所在的团队正在经历这个变化,欢迎一起交流踩过的坑和有效的做法。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进