1. 从「写代码」被替代说起:一个正在发生的产研协作变局
过去一年半,我所在的团队经历了一次相当彻底的工作方式重构。起因很简单:我们开始大规模使用大模型工具来辅助甚至主导代码生成。最初只是拿它写一些样板代码、补全单元测试、生成正则表达式,后来逐渐演变成整个模块的初版代码都由模型产出,人只负责审阅、调整和集成。这个变化带来的冲击远超预期——不是"效率提升30%"这种温和的改善,而是"原本三个人两周的活,现在一个人三天能交"这种量级的跃迁。
但真正让我睡不着觉的,不是写代码变快了,而是产研协作的整个节奏被打乱了。产品经理习惯了"提需求→等排期→催进度"的线性流程,研发习惯了"接需求→估工时→埋头写"的工作模式,测试习惯了"等提测→跑用例→提Bug"的固定节拍。当代码生成的速度提升了一个数量级之后,这条流水线上的每一个环节都开始出现错位:需求还没想清楚,代码已经写完了;代码写完了,没人知道该怎么测;测试还没跑完,产品又改了主意。
这篇文章想聊的就是这件事:当大模型工具确实在替代「写代码」这个动作之后,产研协作到底该怎么办。我会从实际踩过的坑出发,拆解协作流程该怎么调整、角色边界该怎么重新划定、工具链该怎么重新组织,以及那些看起来很小但实际很致命的细节问题。适合正在经历或即将经历这场变化的产研团队参考,不管你是产品、研发还是测试,都能从中找到自己位置上的应对思路。
2. 为什么「写代码」被替代后,协作反而更难了
2.1 速度错配:当研发环节突然提速十倍
先说一个最直观的现象。以前一个中等复杂度的功能模块,从需求评审到代码提交,大概需要五到十个工作日。现在用大模型辅助,同样的模块,熟悉提示词工程的同学可能半天就能产出可运行的初版。问题来了:研发环节的速度提升了,但需求澄清、方案评审、测试验证这些环节的速度并没有同步提升。
这就好比一条高速公路,原来所有车道限速都是60码,大家相安无事。现在研发这条车道突然允许跑200码了,但入口匝道(需求)和出口匝道(测试)还是60码的通行能力,结果就是研发车道上的车要么堵在出口,要么被迫降速等待。更糟糕的是,有些车以为自己能跑200码,结果冲进了一个还没修好的出口,直接翻车。
我见过最典型的场景是:产品经理上午提了一个需求,下午研发就把代码写完了,然后问产品"你看看对不对"。产品经理懵了——他自己都还没想清楚这个需求的边界条件是什么,研发就已经把实现摆在他面前了。这时候要么产品被迫在极短时间内做出判断(往往判断不准),要么研发被迫反复重写(因为需求一直在变)。两种结果都不好。
2.2 质量幻觉:代码能跑不等于代码正确
大模型生成的代码有一个很迷惑人的特点:它看起来非常像正确的代码。命名规范、结构清晰、注释完整,甚至还会贴心地加上错误处理。但如果你仔细审查,会发现它在业务逻辑的边界条件上经常出错,在并发场景下可能有问题,在异常路径上可能直接崩溃。
我印象很深的一次,模型生成了一个用户权限校验的模块,代码写得漂漂亮亮,单元测试也全过了。但上线之后发现,当用户角色为空的时候,它会默认放行所有操作。这个Bug在测试环境没被发现,因为测试数据里所有用户都有角色。这就是典型的"质量幻觉"——代码能跑、测试能过,但不代表它是对的。
这个问题对协作的影响在于:审查成本并没有因为代码生成变快而降低,反而可能升高了。以前你审查同事的代码,你知道他大概会怎么想、可能会在哪里犯错。现在你审查模型生成的代码,你面对的是一个"看起来很对但你不确定哪里可能不对"的黑盒。审查者需要投入的注意力反而更多了。
2.3 责任模糊:代码是谁写的,出了问题谁负责
还有一个更微妙但更致命的问题:当代码主要由模型生成时,责任归属变得模糊了。以前代码是谁写的,出了问题就找谁。现在代码是模型生成的,研发只是"审阅"了一下,那出了问题算谁的?
我见过团队里出现这样的对话:测试提了一个Bug,研发说"这是模型生成的,我只是没注意到";产品说"我需求里没写这个场景";测试说"我按需求写的用例,需求里没提我就不测"。一圈下来,没人觉得自己该负责。这种责任模糊会严重侵蚀团队的协作信任——大家开始互相甩锅,而不是一起解决问题。
2.4 能力断层:会用工具的人和不会用的人差距拉大
最后一个但可能影响最深远的问题:团队内部的能力差距被工具放大了。一个擅长写提示词、懂得如何拆解任务、知道怎么验证模型输出的研发,和一个只会把需求丢给模型然后复制粘贴的研发,产出效率可能差五到十倍。这种差距在以前是不存在的——以前大家写代码的速度差异最多两三倍。
这种断层会导致协作上的新问题:快的同学觉得慢的同学拖后腿,慢的同学觉得快的同学在炫技。如果团队管理者不能很好地处理这个问题,团队氛围会迅速恶化。
3. 重新设计协作流程:从「串行流水线」到「并行迭代环」
3.1 核心思路:把「写代码」从关键路径上拿下来
传统产研协作是一条串行流水线:需求→设计→开发→测试→上线。每个环节依赖前一个环节的完成。当开发环节的速度大幅提升后,这条流水线的瓶颈就转移到了需求澄清和测试验证上。
我的建议是:不要把「写代码」当作一个独立的阶段,而是把它融入到需求澄清和方案设计的过程中。具体来说,产品经理在写需求文档的时候,就可以用大模型生成一个原型级别的代码实现,用来验证需求的可行性。研发在评审需求的时候,可以直接基于这个原型进行修改,而不是从零开始写。
这样做的好处是:需求阶段就能发现很多"想当然"的问题,因为代码不会骗人——你让模型生成一个实现,跑一下就知道这个需求在技术上是否可行、有没有隐藏的复杂度。同时,研发的工作从"从零写代码"变成了"审查和修改已有代码",心理负担和实际工作量都大幅降低。
3.2 具体流程调整:三个关键变化
变化一:需求评审带上可运行的原型。以前需求评审是看文档、看原型图,现在要求产品经理在评审前用大模型生成一个可运行的最小原型。这个原型不需要很完善,但必须能跑起来,能演示核心流程。评审的时候大家对着原型讨论,而不是对着文档想象。
变化二:开发阶段拆成「生成-审查-集成」三步。研发拿到需求后,第一步是用大模型生成初版代码,第二步是逐行审查并补充业务逻辑,第三步是集成到主分支并跑通端到端流程。每一步都有明确的产出和检查标准,避免"生成完就提交"的草率行为。
变化三:测试左移,从「等提测」变成「边生成边验证」。测试同学不再等研发提测后才开始工作,而是在研发生成代码的同时,就开始编写验证用例。甚至可以让测试同学直接用大模型生成测试代码,然后人工审查测试逻辑是否正确。这样当研发完成集成时,测试用例已经准备好了,可以立即开始验证。
3.3 角色边界重划:产品、研发、测试各自的新定位
当写代码不再是研发的专属技能后,三个角色的边界需要重新划定:
| 角色 | 传统定位 | 新定位 | 核心能力要求 |
|---|---|---|---|
| 产品 | 写需求文档、画原型图 | 写需求文档、生成可运行原型、验证技术可行性 | 提示词工程、基础代码阅读能力 |
| 研发 | 写代码、改Bug | 审查模型生成代码、补充业务逻辑、架构设计 | 代码审查、系统设计、提示词调优 |
| 测试 | 写用例、跑用例、提Bug | 设计验证策略、审查模型生成的测试代码、探索性测试 | 测试策略设计、边界条件分析 |
这个表格看起来简单,但实际落地的时候阻力很大。产品经理会觉得"我为什么要写代码",研发会觉得"我为什么要审查别人(模型)写的代码",测试会觉得"我为什么要学提示词"。这些心理障碍需要时间和实际收益来说服。
3.4 一个实际案例:我们团队是怎么调整的
去年Q3,我们接了一个中等规模的后台管理系统重构项目。按照传统方式,这个项目大概需要两个研发做六周。我们决定尝试新的协作方式。
第一周,产品经理用大模型生成了一个可运行的原型,包含核心的增删改查流程。评审的时候,大家发现有三个需求点在技术上比想象中复杂得多,当场调整了方案。如果按传统方式,这三个问题可能要等到开发中期才会暴露。
第二到第三周,两个研发基于原型进行修改和扩展。他们不是从零写代码,而是审查模型生成的代码,补充业务规则,调整数据结构。同时,测试同学开始编写验证用例,并且用大模型生成了一部分测试代码。
第四周,集成和测试。因为测试用例已经准备好了,验证过程很快。最终这个项目在三周半完成,比预期快了近一半。但更重要的是,过程中没有出现以前那种"开发完了发现需求理解错了"的返工。
4. 工具链重组:让大模型真正融入协作流程
4.1 提示词工程:不是「会聊天」就行
很多人以为用大模型写代码就是"把需求描述一遍,然后等代码出来"。实际远不是这么简单。高质量的代码生成依赖于高质量的提示词,而高质量的提示词需要你对业务逻辑、技术栈、代码规范都有清晰的理解。
我总结了一个实用的提示词模板,分为四层:
## 角色设定 你是一个资深的后端工程师,擅长编写高可维护性的业务代码。 ## 上下文 项目技术栈:Python + FastAPI + PostgreSQL 代码规范:遵循PEP8,使用类型注解,函数必须有docstring 现有模块:用户模块已完成,订单模块正在开发 ## 任务描述 实现一个订单创建接口,需要: 1. 校验用户是否存在且状态正常 2. 校验商品库存是否充足 3. 创建订单记录并扣减库存 4. 返回订单ID和预计送达时间 ## 约束条件 - 必须使用事务保证数据一致性 - 库存扣减需要加锁防止超卖 - 异常情况需要返回明确的错误码这个模板的关键在于:把模型当成一个需要明确指令的初级工程师,而不是一个能读心的高级工程师。你给的信息越具体,生成的代码质量越高。
4.2 代码审查:从「看逻辑」到「看边界」
审查模型生成的代码,和审查人类写的代码,侧重点完全不同。人类写代码容易犯的错误是逻辑错误、拼写错误、遗漏分支。模型生成的代码很少犯这些"低级错误",但它容易在边界条件、并发场景、异常路径上出问题。
我的审查清单是这样的:
- 边界条件:空值、零值、最大值、最小值、超长字符串、特殊字符
- 并发场景:多个请求同时操作同一资源时会发生什么
- 异常路径:网络超时、数据库连接失败、第三方接口返回异常时怎么处理
- 业务规则:模型是否理解了这个业务领域的特殊规则(比如退款不能超过原订单金额)
- 安全漏洞:SQL注入、XSS、权限绕过、敏感信息泄露
这个清单看起来很长,但实际审查的时候可以快速过一遍。关键是养成习惯,不要因为代码"看起来对"就跳过审查。
4.3 版本控制:模型生成的代码也需要「溯源」
一个容易被忽视的问题是:模型生成的代码也需要版本控制和溯源。你需要知道哪段代码是模型生成的、用的是哪个模型、当时的提示词是什么。这样当出现问题时,你可以回溯到生成环节,看看是提示词的问题还是模型本身的问题。
我们的做法是:在提交信息里标注[AI-generated],并附上使用的模型名称和提示词摘要。如果后续需要修改,可以基于原始提示词重新生成,而不是在生成代码上反复打补丁。
4.4 工具选型:不要追求「最强」,要追求「最合适」
市面上写代码的大模型工具很多,各有优劣。我的建议是:不要盲目追求排行榜上最强的模型,而是选择最适合你团队技术栈和工作流程的工具。
选型的时候考虑这几个维度:
- 技术栈匹配度:模型对你使用的语言和框架的熟悉程度
- 上下文长度:能否一次性处理你项目中的核心模块
- 响应速度:生成速度是否满足你的迭代节奏
- 成本:按量付费还是订阅制,是否在预算范围内
- 数据安全:是否支持私有化部署或数据隔离
我们团队最后选择了一个中等规模但支持私有化部署的模型,虽然它在公开排行榜上不是最强的,但它对我们使用的技术栈支持很好,而且数据不出内网,安全合规方面没有后顾之忧。
5. 实操中的坑与排查:那些文档不会告诉你的经验
5.1 模型「胡说八道」的时候怎么办
大模型有一个很讨厌的特点:它有时候会非常自信地给出错误的答案。比如你问它某个库的API怎么用,它会编造一个根本不存在的函数名,还附上看起来很合理的参数说明。如果你不熟悉这个库,很容易被带偏。
我的应对策略是:对于不熟悉的库或框架,先用官方文档验证模型给出的API是否存在。如果模型给出的代码引用了你不认识的函数,不要直接复制粘贴,先去查一下这个函数是否真的存在。这个习惯帮我避免了很多低级错误。
5.2 生成的代码「能跑但不对」怎么排查
前面提到过,模型生成的代码经常在边界条件上出错。排查这类问题,我的经验是:不要只看代码,要写测试。针对模型生成的每个核心函数,写一组边界测试用例,包括空值、极值、异常输入。如果测试通过,再人工审查一遍逻辑;如果测试不通过,根据失败信息定位问题。
这个方法看起来笨,但实际非常有效。因为模型生成的代码往往在"正常路径"上没问题,问题都藏在"异常路径"里。只有通过测试才能把这些隐藏问题逼出来。
5.3 团队协作中的「提示词冲突」怎么解决
当多个研发同时使用大模型生成代码时,会出现一个有趣的问题:不同的人用不同的提示词风格,生成的代码风格不一致。有的人喜欢让模型生成详细的注释,有的人喜欢简洁的风格;有的人要求模型使用某种设计模式,有的人不要求。结果就是代码库里的风格五花八门,维护成本很高。
我们的解决方案是:制定团队级的提示词规范。把常用的提示词模板固化下来,包括角色设定、代码规范、注释风格、异常处理方式等。每个人在使用的时候,基于模板进行微调,而不是完全自由发挥。这样既保证了一致性,又保留了一定的灵活性。
5.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 生成的代码无法运行 | 依赖库版本不匹配 | 检查import语句和requirements | 在提示词中明确指定依赖版本 |
| 代码逻辑正确但性能差 | 模型选择了低效的实现方式 | 用性能分析工具定位瓶颈 | 在提示词中增加性能约束条件 |
| 生成的测试用例覆盖不全 | 提示词中没有明确覆盖要求 | 检查测试用例的分支覆盖率 | 在提示词中列出必须覆盖的场景 |
| 多人协作时代码风格冲突 | 提示词风格不统一 | 对比不同人生成的代码 | 制定团队级提示词规范 |
| 模型不理解业务术语 | 提示词中缺少领域知识 | 检查提示词中的业务描述 | 在提示词中补充业务规则说明 |
5.5 一个真实的排查案例
有一次,模型生成的一个数据同步模块在测试环境运行正常,但上线后偶尔会出现数据不一致。排查了很久,最后发现是模型在处理并发写入时,没有正确使用事务隔离级别。在测试环境因为并发量低,问题没有暴露;上线后并发量上来,问题就出现了。
这个案例给我的教训是:模型生成的代码在并发场景下特别容易出问题。因为模型训练数据中的并发代码往往是比较简单的示例,缺乏真实生产环境中的复杂并发场景。所以对于涉及并发、事务、锁的代码,必须人工重点审查。
6. 面向未来的协作能力建设
6.1 团队需要培养的新技能
当写代码不再是核心技能后,团队需要培养哪些新能力?我的观察是三个方向:
第一,任务拆解能力。把一个复杂需求拆解成模型能够理解的、粒度合适的子任务,这本身就是一项核心技能。拆得太粗,模型生成的东西不能用;拆得太细,又失去了效率优势。这个度需要在实际项目中反复摸索。
第二,代码审查能力。审查模型生成的代码,需要一种"怀疑式阅读"的习惯——不要假设代码是对的,而是主动寻找可能的错误。这种能力和传统的代码审查有所不同,需要专门训练。
第三,系统设计能力。当代码生成变得廉价后,系统设计的价值反而更高了。因为你可以快速生成多个方案的原型,然后对比选择最优的架构。这时候,架构判断力就成了核心竞争力。
6.2 如何衡量团队的新协作效率
传统的效率指标(如代码行数、提交次数、Bug数量)在新的协作模式下已经不太适用了。我们团队尝试了几个新的衡量维度:
- 需求到原型的周期:从需求提出到可运行原型产出的时间
- 原型到上线的周期:从原型确认到功能上线的的时间
- 返工率:因为需求理解错误或代码质量问题导致的返工比例
- 审查发现率:代码审查中发现的实质性问题数量(而不是风格问题)
这些指标不一定适合所有团队,但思路是:衡量端到端的交付效率,而不是单个环节的产出。
6.3 给不同规模团队的建议
小团队(5人以下):重点是把大模型工具用起来,不要追求流程的完美。先让每个人都能熟练使用工具,然后再慢慢调整协作方式。小团队的优势是沟通成本低,可以快速试错。
中型团队(5-20人):需要制定一些基本的规范,比如提示词模板、代码审查清单、提交信息格式。但不要过度流程化,保持一定的灵活性。这个阶段最容易出现的问题是"工具用了但协作没跟上",需要管理者主动推动流程调整。
大型团队(20人以上):需要更系统的变革管理。建议先在一个小范围内试点,积累经验后再推广。同时要注意工具选型的数据安全和合规问题,以及不同团队之间的协作接口定义。
6.4 我个人的一些体会
说实话,这一年多下来,我最大的体会是:大模型替代的不是「写代码」这个动作,而是「把想法翻译成代码」这个过程中的机械部分。真正有价值的,是知道要写什么代码、为什么要这样写、写了之后怎么验证。这些能力不但没有被替代,反而变得更加重要了。
另一个体会是:不要试图用旧流程来适应新工具。我见过一些团队,买了最好的大模型工具,但协作流程还是老一套,结果效率提升非常有限。工具变了,流程必须跟着变,角色定位也必须跟着变。这个过程会有阵痛,但熬过去之后,团队的产出能力会有质的飞跃。
最后分享一个小技巧:我们团队现在每周会开一次"提示词复盘会",大家分享本周用到的好提示词、踩过的坑、发现的模型怪癖。这个会不长,半小时左右,但效果很好。因为大模型工具的使用经验很难通过文档传递,面对面的交流反而更高效。如果你也在带团队,不妨试试这个做法。