今天和某君谈论到研发流程,因此想写点什么,关于我对流程的理解。 当我们提及流程时,尤其在纯粹的聊“流程”这一名词时,很容易变得形而上。有很多内容可以讲,但似乎又很空洞,如同嚼蜡。

流程,和所有体制化的组织一样,是个流水线式的组织方法,是一种规则。在软件研发领域,最简单直接的流程相信都能想到,每一位都能张口就来,“分析-设计-编码-测试-发布”大体类似的答案。
那么……在看起来近乎相似或统一的答案中,“流程”到底是什么,它有什么用或者说优劣?
这一次,我想尝试以“形而下”的方式来叙述。

为什么有流程

组织各角色分工干活,使组织内运转衔接

是的,每个角色都知道自己的职责,但组织的流程,往往能指导各角色

  • 介入的时机在哪里
  • 工作的边界在哪里
  • 输入输出是什么

    是研发质量与效能三大重要影响因素之一

    这里顺带提一下,质量与效能组成的三要素:组织(人)、工具和流程/过程。因此贴合当前阶段和组织的流程/过程是必不可少的。好的过程往往会有好的结果,坏的结果必定是过程管理出了问题。

    是为解决当前组织/事务问题而存在方案

    什么是流程

    我认为流程就是为了解决当前时期内特定普遍问题而形成的规则或条约。通俗的来说包含了

  • 什么时候

  • 什么角色
  • 做什么
  • 怎么做
  • 做出的效果/指标

以我们常遇到的实际例子来说,我想会是最为贴合的。

案例一:研发团队经常抱怨产品团队的需求内容缺失,于是流程管理的团队去调查分析根因,这里假设根本原因是:产品团队没有将业务需求写清楚而草草了事……那么在流程上是否可以在此节点增加输入输出的管控,制定出适合当下的可行标准?

案例二:测试团队抱怨开发提测的需求一堆问题,甚至是低级问题……那么流程上是否可以增加对开发团队提测要求的限制,同时增加测试团队给予开发团队其他协助的要求?

案例三:其他团队抱怨测试团队的执行周期长……同样的,先调查分析根因,得出有效结论后插入必要的条件或约束即可。

流程涉及哪些内容(什么可以成为流程点)

对于软件研发的技术团队来说,个人认为主要涉及两个大的方向:

  1. 如何组织人(角色)和事
  2. 使用哪些技术/工具,如何管理技术/工具

    人(角色)

    指的是需要有哪些角色,各角色怎样衔接等。比如完成某事项,需要
  • 谁介入,什么阶段介入
  • 产出什么
  • 可达下游的标准是什么

    技术/工具

    指的一切和技术/工具相关的确实造成普遍问题的内容。比如

  • 文档管理

  • 代码管理
  • 引入外部组件的审查分析机制
  • SQL审计

    流程影响什么

    我仍然相信事物具备多面性,凡是有利有弊,不存在绝对的单面。如果在某种流程/规则下,正向价值远大之,就是一个好的流程/规则;反之,可以看如何去改进优化。简单一言蔽之,即ROI:

  • 质量

  • 效率(资源时间比)
  • 组织的局点稳定性/可靠性

文中我提到了“过程”一词,是因为“过程”隐式的强调出了“管理、管控”,即在制定之后应对流程的各环节进行确认,意思有

  • 是不是按流程规范执行了
  • 是不是执行达标了