最近一个其他行业的朋友想要了解一下互联网的研发流程,本文以程序员的视角来简单介绍一下。

互联网公司的产品形态一般都是 app/网页/小程序,因此涉及的工作角色也比较多。

  1. 产品经理最开始会想出一个 idea 并将其细化为产品需求文档
  2. 产品经理就产品需求文档与设计师、程序员、DS(数据分析)、QA(测试) 讨论相关细节、时间排期
  3. 设计师设计相关的 UI、UX;程序员写技术架构文档
  4. 程序员开发、测试、联调
  5. 提交 QA 进行测试,与产品经理、设计师一同测试,没问题之后上线
  6. DS 查询相关数据,并与产品经理讨论是否达到预期

下面详细介绍一下

产品需求

产品经理会通过多种方式来确定一个新的需求,比如竞品调研、市场调研、头脑风暴。
之后会写产品需求文档,涵盖一下内容

  • 需求的目标,如何评估是否达到预期
  • 对产品的改动,比如 UI 上的改动,功能的改动
  • 时间排期(需要与多方角色协商)

产品经理部门内部会对需求文档进行评审,来确定是否真的实施

产品需求细化

接下来产品经理会与相关角色(设计师、程序员、DS、QA)进行评审,确定排期

  • 设计师会就 UX、UI 方面进行讨论,比如新功能的入口,需要多少个页面,页面的基本布局,用户交互是否简单
  • 程序员会关心实现是否可行,哪些功能优先级较高,一些小的但却难实现的功能是否可以之后迭代再做
  • DS 会确定如何评估是否达到预期,是否做实验(bing 的例子)并于程序员讨论技术上如何实现
  • QA 会讨论如何测试该需求,并写测试文档

工具:asana(任务管理)

1. 设计

设计师会画出新功能的入口,以及每一个页面的设计图,标注样式,尺寸,以及相关的交互

工具:figma(设计)

2. 技术设计

程序员会撰写技术设计文档,比如前后端之间的 API,数据库的改动,是否需要其他中间件比如数据队列、缓存

3. DS

DS 与程序员讨论如何添加监控、埋点方便评估效果

4. QA

QA 会写一份测试用例,用以测试需求实现是否达到预期

需求开发

这部分主要是程序员的工作,按照技术设计文档与设计图,完成相关的代码开发工作。
一个简单的开发流程是这样

  1. 本地新建开发分支,开发,测试
  2. 部署到测试服务器测试
  3. 找相关同事 code review
  4. merge 代码到主分支

所有功能开发完成之后,前后端联调,修复相关问题

工具:github(code review)CI/CD(持续集成、持续部署)

测试

通过配置,将新功能向相关角色开放。向 QA 提测。QA 核查每一个测试用例是否正常,如果有问题的话告知程序员进行修复。
没问题之后与产品经理,设计师再一同过一遍测试用例。之后上线

上线

上线之后程序员监控是否正常运行,运行一段时间之后,产品经理与 DS 查看相关数据,看看该需求是否与最开始的预期一致。(不一致的话应该如何改进、迭代)