
大厂一个功能的完整旅程:从需求到上线要过多少关

一个像样的功能,从想法到上线,在大厂里要走多少步?
很多人以为软件开发就是「写代码」。产品经理提需求,程序员写代码,写完上线,完事。
如果你在大厂待过,你会知道这个认知和现实之间的距离,大概有从北京到纽约那么远。
一个像样的功能走完全流程,少则两周,多则两三个月。中间经过的角色、会议、文档、评审,多到足以让一个新人怀疑人生。
今天就把这条完整的链路拆开来看。不管你是正在大厂的、想去大厂的、还是想理解大厂在做什么的,这篇文章会给你一张完整的地图。
第一阶段:需求阶段
产出:PRD(产品需求文档)+ 需求评审
一切从一个问题开始:「我们要做这个功能。」
但「做这个功能」不是一句话的事。产品需要把它变成一份 PRD——Product Requirements Document。
一份正经的 PRD 至少要回答:
- 为什么做? 这个功能解决什么问题?和哪个业务目标挂钩?
- 给谁用? 目标用户是谁?使用场景是什么?
- 做成什么样? 功能边界在哪里?哪些做,哪些不做?
- 怎么算成功? 上线后看什么数据?达标线是多少?
写完 PRD,不是直接丢给开发。要先过需求评审。
需求评审是一个小型战场。产品站在台上演示 PRD,开发、设计、测试、业务方坐下面提问:
- 「这个逻辑有没有考虑异常情况?」
- 「这个需求和技术方案冲突了怎么办?」
- 「这个优先级够高吗?其他项目怎么办?」
一场评审下来,PRD 可能面目全非。
耗时:3-5 天

第二阶段:设计阶段
产出:UI/UX 设计稿 + 设计评审 + 技术方案 + 技术评审
需求评审通过后,进入并行的两条线。
线索 A:UI/UX 设计
设计师根据 PRD 出交互稿和视觉稿。从低保真线框图到高保真设计稿,中间可能有 2-3 轮迭代。
设计完成后,要过设计评审。产品确认交互逻辑,开发确认技术可行性,测试确认可测试性。
线索 B:技术方案
与此同时,技术负责人(通常是架构师或 Tech Lead)开始写技术方案。
一份技术方案要回答:
- 怎么拆? 这个功能涉及哪些模块?需要改哪些服务?
- 怎么连? 前后端怎么交互?数据怎么流转?
- 怎么保? 性能瓶颈在哪?需要哪些缓存、降级、限流策略?
- 怎么回? 出了问题怎么回滚?有没有灰度方案?
技术方案写完,要过技术评审(也叫 Tech Review)。
技术评审是开发团队内部的「灵魂拷问」:
- 「这个方案有没有考虑高并发场景?」
- 「数据库这块有没有分库分表的隐患?」
- 「这个接口的幂等性怎么保证?」
- 「如果下游服务挂了怎么办?」
一场技术评审下来,方案可能要推翻重来。
耗时:5-10 天

第三阶段:开发阶段
产出:任务拆分 + 前后端代码 + 联调 + 代码评审
终于到了写代码的环节。但在写代码之前,还有一件事要做——任务拆分。
Tech Lead 把技术方案拆成一个个具体的开发任务,分配给不同的工程师。每个任务有明确的:
- 预估工时
- 负责人
- 前置依赖
- 验收标准
然后才是真正的编码。
前后端开发
前端和后端通常并行开发。前端写页面和交互逻辑,后端写接口和业务逻辑。两边各自用 Mock 数据(模拟数据)先跑通自己的部分。
联调
前后端都写完了,要联调——把真实的接口接上真实的前端,一起跑一遍。
联调是大厂程序员最痛苦的环节之一。因为你永远不知道对方的接口返回格式和你预期的差了多少。
- 「这个字段怎么是 null?」
- 「这个接口怎么返回 500 了?」
- 「你说好的时间戳格式怎么变了?」
联调顺利的话一两天,不顺利的话一周都搞不定。
代码评审(Code Review)
代码写完,不是直接提交。要过代码评审。
Code Review 是大厂工程质量的核心保障。一个资深工程师会逐行审查你的代码,看:
- 逻辑是否正确
- 是否有安全隐患
- 代码风格是否规范
- 是否有性能问题
- 测试用例是否充分
代码评审不只是找 Bug。它更是一种知识传递——新人的代码被老人 review,能学到更好的写法和设计思路。
耗时:5-15 天

第四阶段:测试阶段
产出:自测 + QA 测试 + Bug 循环 + UAT
代码合并后,进入测试阶段。
自测
开发人员先自己跑一遍。确认主要流程没问题后,交给 QA。
QA 测试
QA(质量保证)团队是大厂的「守门员」。他们会:
- 根据 PRD 编写测试用例
- 执行功能测试(正常流程 + 异常流程)
- 执行回归测试(确保新功能没搞坏旧功能)
- 执行兼容性测试(不同浏览器、不同设备、不同系统版本)
Bug 循环
QA 发现 Bug → 提 Bug → 开发修 Bug → QA 验证 Bug → 发现新 Bug → 循环。
这个循环可能跑 2-5 轮。每个 Bug 都有优先级(P0 到 P3),P0 是阻塞性问题,必须修完才能继续。
大厂里经常出现的场景:
QA:「这个 Bug 已经提了三天了,还没修?」 开发:「我在修联调的问题……」 QA:「测试环境又挂了,谁改了配置?」 开发:「不是我……」
UAT(用户验收测试)
QA 测试通过后,还要过 UAT——让业务方或产品在测试环境中实际使用一遍,确认符合预期。
UAT 经常暴露一个问题:「这不是我想要的。」需求理解的偏差在这个阶段才浮出水面。
耗时:5-10 天

第五阶段:上线阶段
产出:灰度发布 + 全量上线 + 监控应急
测试通过后,进入最紧张的环节——上线。
灰度发布
大厂不会把新功能一次性推给所有用户。而是先灰度——只开放给一小部分用户(比如 1% 或内部员工)。
灰度期间重点观察:
- 系统指标:CPU、内存、接口响应时间、错误率
- 业务指标:相关功能的使用率、转化率、客诉率
- 异常情况:有没有报错?有没有崩溃?
灰度一般持续 1-3 天。如果没有问题,逐步扩大灰度比例(1% → 10% → 50% → 100%)。
全量上线
灰度验证通过后,全量发布。所有用户都能看到新功能。
监控应急
全量上线不意味着结束。接下来 24-72 小时是高度戒备期。
值班工程师盯着监控大盘,随时准备响应:
- 如果流量突增 → 扩容
- 如果报错率飙升 → 回滚
- 如果某项指标异常 → 定位问题
大厂的事故应急流程是标准化的:
- 监控告警 → 自动通知值班人
- 值班人判断严重等级
- 等级高 → 拉群、拉人、启动应急
- 定位问题 → 修复或回滚
- 事后写事故报告(Postmortem)
耗时:2-5 天

第六阶段:验证回收
产出:数据验证 + 复盘 + 归档
上线不是终点。真正的终点是验证这个功能到底有没有用。
数据验证
回到最开始 PRD 里定义的「成功标准」:
- 目标是提升转化率?看看上线后转化率有没有涨
- 目标是降低客诉率?看看相关投诉有没有减少
- 目标是提升 DAU?看看有没有新的用户行为出现
数据验证通常在上线后 1-4 周进行。因为新功能需要一定时间才能反映在数据上。
复盘
不管结果好坏,项目结束后要做一次复盘(Retrospective)。
复盘不是追责,而是提炼经验:
- 这个项目哪里做得好?可以复制到其他项目吗?
- 哪里做得不好?根因是什么?下次怎么避免?
- 流程上有什么可以改进的地方?
归档
PRD、设计稿、技术方案、测试用例、上线记录、复盘文档——全部归档。
这不是走形式。三个月后有人问「当初为什么这样设计」,归档文档就是你的救命稻草。
耗时:1-2 周(部分并行于上线阶段)

全流程总览
把六个阶段放在一起看:
| 阶段 | 核心产出 | 耗时 |
|---|---|---|
| 需求阶段 | PRD + 需求评审 | 3-5 天 |
| 设计阶段 | UI/UX + 技术方案 + 评审 | 5-10 天 |
| 开发阶段 | 代码 + 联调 + Code Review | 5-15 天 |
| 测试阶段 | QA + Bug 循环 + UAT | 5-10 天 |
| 上线阶段 | 灰度 + 全量 + 监控 | 2-5 天 |
| 验证回收 | 数据验证 + 复盘 + 归档 | 5-10 天 |
总计:25-55 天(约 5-11 周)
这还只是一个「像样的功能」。如果是涉及多团队协作、需要数据迁移、有合规要求的大项目,三个月起步是常态。
为什么流程这么长?
看到这里,你可能会问:这么多流程,是不是在浪费时间?
答案是:在大厂的规模下,这些流程不是成本,是保险。
大厂面对的环境和小团队完全不同:
- 用户量级大: 一个小 Bug 影响的是百万级用户
- 系统复杂度高: 一个功能可能涉及十几个服务、多个团队
- 历史债务多: 任何改动都可能触发意想不到的副作用
- 容错空间小: 一次事故的损失可能是几百万甚至几千万
在这样的环境下,每一步评审、每一轮测试、每一次灰度,都是在用时间换取确定性。
小团队可以赌,大厂不能。

写在最后
下一次当你抱怨「大厂流程太慢」的时候,试着想一想:
每一步流程的背后,都是前人踩过的坑。每一份文档的模板里,都藏着一次事故的教训。
流程不是为了官僚,而是为了让一千个人在同一个系统里工作时,不至于失控。
当然,流程也需要进化。如果你觉得某一步流程没有价值,那就用数据证明它没有价值,然后推动改变它。
这本身也是一个像样的功能——需要走完同样的流程。
理解流程,尊重流程,然后才有资格改进流程。
"
