创业团队想更快推出功能,关键是缩短从想法到用户反馈的距离。这篇文章整理了 Paralect 的 Andrew Orsich 提出的一套交付流程:从代码分支、持续集成,到任务拆分、演示、发布与测试,逐步建立可重复的节奏。
作者的建议有明确的场景背景,尤其是面向早期团队。比如“每周发布一次”和“少写测试”是作者对特定阶段的取舍,不应机械套用到所有产品。作者还在另一篇文章中讨论过团队动力;本文聚焦具体流程。下面按原文顺序展开。

先判断是否真的需要自己开发
作者在进入流程之前先提出一个原则:如果现成的第三方工具或服务能解决问题,就优先使用。只有确实需要自行构建时,才投入研发。对创业公司来说,省掉不必要的开发,本身就是提速。
避免长期存在的功能分支
功能分支(Feature Branches)是为某个功能单独开分支,完成后才合回主线。一个功能若持续数周甚至数月,合并会变得耗时,容易引入新的错误和不稳定,也不利于持续做小范围重构。
作者认为,这种方式在小团队中或许还能运转,但团队增长到五名以上工程师时,问题会更加明显。他建议让改动尽早进入共同的开发主线,再用后文的功能开关控制未完成功能的可见性。
自动化 CI/CD
作者回顾了工具演进:早期有 Jenkins 和 TeamCity,随后是 Drone CI 与 CircleCI,再到与代码托管平台紧密结合的 GitHub Actions,以及内置较简化部署流程的 Vercel 和 Render。这些是文章写于 2023 年时的叙述,工具选择应以团队当前环境为准。
简单的流程可以是:开发者把变更推到约定分支,自动构建和检查通过后,再自动部署到相应环境。平台还可能处理环境变量、SSL 证书和基础扩缩容。作者强调,具体工具不是重点,首要目标是消除手工部署环节,让团队具备一天多次发布变更的能力。
使用单仓库管理代码
作者倾向于把产品代码放在一个 monorepo 中,以便让团队看到完整项目、共享代码、查找实现并统一组织 CI/CD。多个仓库在团队扩大后,容易形成不同的构建和部署方式。Turborepo 是原文举出的单仓库辅助工具。
把功能拆成可增量交付的小改动
小改动能更快得到反馈,方向不对时也容易调整;与别人的改动合并时冲突更少,破坏系统大范围功能的概率也较低。小改动同样需要检查新旧功能是否正常。
原文给出两条团队节奏建议:
- 产品团队把任务控制在 不超过 3 天,平均以 1—2 天为宜。
- 工程师至少 每两天提交一次 Pull Request,平均以 每天一次为宜。
要做到这一点,产品侧需要把功能规划为更小的迭代;工程侧则要频繁合并,即使整个功能还没完成,也先合并其中可控的一部分。功能开关是支持这种做法的关键。
用功能开关承载未完成的功能
功能开关(feature flags / feature toggles)允许团队不重新改动代码,就切换某项功能对不同对象的可见性。工程师可以持续发布部分完成的实现,及时评审和合并;产品团队也能在功能尚未正式上线时提前体验并提出反馈。
原文总结还补充了用途:先面向一小组测试用户开放、尽早收集内部和外部反馈,以及开展 A/B 测试和其他实验。作者另写过一篇关于功能开关作用的文章。
为每项功能明确负责人
每个功能指定负责交付的小团队,通常包括一位产品负责人和一位工程负责人。他们共同确定发布日期、处理阻碍,并对功能进入生产环境负责。这样能减少“大家都在负责,最后无人负责”的情况。
最简单的做法是在表格中记录 功能名称、工程负责人、产品负责人、发布日期;也可以在 Notion 或 Jira 中增设对应字段。作者团队通常做月度产品规划:回顾上月进度,确定本月目标、负责人和大致期限;在迭代规划中,重点是把大功能拆成尽可能小的可交付项。
每周至少提供一次功能演示
演示促使团队从用户视角检查功能,并在上线或进入测试环境前发现问题。分布在不同时区的团队可以录制异步演示,便于随时反馈;这些早期演示也能成为 QA、支持和其他产品成员的参考材料。
作者建议为一个功能保留四个阶段的演示:
- 原型演示:通常先展示界面,尽早收集可能改变方向的反馈。
- 预览演示:功能已有部分可用,但尚未准备好测试。
- Beta 演示:QA 正在测试,相关成员可以在测试环境体验。
- 生产演示:功能完成测试,准备交给首批用户。
经验节奏是每个功能团队每周录制 1—2 次演示。原型、预览、Beta 和生产阶段不一定都落在同一周。
按固定节奏每周发布,并在发布后观察
自动化部署仍有风险:数据库迁移可能失败或耗时过长,新功能可能在生产环境表现异常,也可能拖慢应用。发布负责人应该在上线后多次检查运行情况,而不是把自动化部署等同于无须值守。
作者认为,规模更大的公司可以追求每周多次发布;对其讨论的创业团队,每周固定时间发布一次更容易控制风险,也能留出人工 QA 时间,并让营销、客服等工作与发布节奏对齐。
原文举出的分支和环境对应关系是:开发分支的变更持续部署到测试环境,主分支的变更部署到生产环境;平时把改动合并到开发分支,每周再将开发分支合并到主分支完成生产发布。这里的“每周发布”指生产发布节奏,并不影响平时频繁合并和测试环境部署。
发布前冻结高风险变更
作者团队会在生产发布至少前一天,停止合并可能影响该次发布的大改动。人工 QA 因而有时间验证最新功能和旧功能。通常只需暂缓合并一天,不代表所有开发活动都必须停止。
测试要与公司阶段匹配
自动化测试有助于长期提高质量和发布信心,让 QA 更专注边界情况与复杂场景,而不必反复检查登录、注册等基本流程。系统发生大改动时,测试也能降低旧功能被破坏的风险。
作者同时认为,写测试会延长开发时间。他给出的经验判断是:仍在寻找产品与市场匹配、成立 0—2 年的早期公司,可以减少测试数量,把更多时间放在用户可见的功能和实验上;对不太会改变的关键区域保留测试。原文提到“写测试可能让功能交付用时增加两倍”,这是作者观点,不是适用于每个团队的测量结论。
把流程串起来
作者最后将做法归纳为九点:自动化 CI/CD;使用单仓库;拆分为一两天能推进的小任务并频繁提交;用功能开关提前合并和试验;为每项功能设产品和工程负责人;每周至少做一次演示;按固定周期部署生产;发布前冻结高风险变更;早期阶段为关键区域保留必要测试,避免让测试工作压缩实验速度。
这套流程最值得借鉴的是把交付拆小、让反馈提前出现,并让负责人对发布结果持续跟进。具体分支策略、测试投入和生产发布频率,仍要结合系统风险、团队规模和实际业务约束来决定。
我是分辨率网络的主理人,一个爱折腾的程序员,也在做独立开发。这里会分享 AI 工具、实用教程和应用思路:怎么上手,适合什么场景,能帮你解决什么问题。想让 AI 帮你省点时间、少做点重复活,或者用在自己的业务里,欢迎关注我。咱们从一个具体问题开始。