流程方法
识别稳态、敏态
2014 年,Gartner 提出了双模 IT 的理念,可预见性的业务使用的是传统瀑布式开发,也就是稳态;探索性的业务使用的是敏捷开发,也就是敏态。
稳态的项目,周期长、大开发、高风险,清晰具体的。
敏态的项目,需求不确定、快速响应,模糊方向性的。
目前,互联网项目大多更适合敏态项目。
互联网的项目迭代快,发版频繁,需求不断变化,
分支模型
- 特征开发
每个小的功能,都新建一个特征分支进行开发。基于特征开发,能够保障各个特征的独立性,允许并行开发特征。同时,未完成的特征,也不会影响主干分支。
- 主干集成
尽可能早地将代码合并到主分支上,在主分支上进行持续集成。 假设每个迭代有 N 个功能,如果这些功能在同一天被合并到主干分支,交叉验证这些功能是否符合预期,需要的工作量是 N ^ 2 级别。但是,如果这些功能,开发自测完毕后,立即发起 MR/PR 流程,合并到主干分支。N 个功能,合并成本会下降到 N 级别。
尽可能早地发起合并请求,能将自己的修改,尽快地告知其他开发者。在开发过程中,其他开发者,就能解决大部分的冲突。
- 分支发布
每次发布都新建一个分支,而不是发布主干分支。 假设现在需要发行 2.1 版本。首先,基于主干分支,创建发布分支 2.1,在 2.1 分支上进行测试,并将缺陷回归到主干分支。验收通过之后,在 2.1 分支上打上 Tag 2.1.0,对外进行发布。
发布之后,如果 Tag 2.1.0 版本有缺陷,需要在 2.1 分支上进行修复,然后回归缺陷到主干分支,打上 Tag 2.1.1,继续发行版本。
分支发布的好处,就是让发布的版本可以追溯,允许开发者对发行版本进行修复,持续发布。另一方面,发布分支不会影响新特性的开发,也不会被主干集成干扰。
测试决定了敏捷开发的速度
Scrum 迭代
Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的、迭代的开发过程。整个开发被划分为若干个 Sprint,每个 Sprint 是 一到两周。
每个 Sprint 应该至少进行一次完整的发布,完成预期的功能。
具体到细节,会有以下具体步骤:
- 每次迭代开展会议,明确范围、目标
- 通过看板实时,展示进度
- 每天站立会议,反馈困难,寻求帮助