三大「价值流」搞定技术型管理
技术型管理被俗称为「打杂的」,一点都不夸张。
业务、产品、架构、流程、人员、会议、汇报、外交、项目管理、沟通、培训、激励、代码评审、招聘、解决冲突、持续学习…不一而足。
如何确定每天工作的优先级?如何确保所有的忙碌能产生动量和结果,而不是像驴一样原地打转?
一个简单的方式是:围绕三大「价值流」组织你所有的活动。
三大「价值流」
「价值流」是 Lean 里面最重要的概念之一,表示创造某种价值的一系列长期步骤。包括价值、活动、人员与系统、前置时间等等因素。
SAFe 里定义了两个价值流,我加了一个。如下图所示,应该是我的首创吧。

一、运营价值流
「运营价值流」指的是为了向客户交付产品或者服务、以实现其价值的一系列活动。
比如,作为一个物流公司,客人从「有运货需求」到「货物被运到目的地」这个价值被实现的整个过程,就是我们的运营价值流。
这个过程会涉及到很多步骤,比如询价、下单、确认货物,等等。用「价值流」的视点来看待它,会有几个主要的观测点。
「价值流」,顾名思义,有两个重点,一个是「价值」,一个是「流动」。
一切对客户价值不直接产生价值的步骤都是一种浪费,比如「内部审批」,假设客户来询价时,我们的销售人员需要主管的审批,才能把某种折扣的价格报给用户,这就是一种浪费。
当然,不是所有的浪费都是可以或者需要被消除的。但是,浪费一定是一种信号,它可能代表了一种改进的机会。
另外,步骤之间的等待时间,往往也是不产生价值的,并且形成不好的用户体验。比如,从客户下单到确认货物之间的等待时间,有些公司需要 10 分钟,有些公司需要 1 天。哪个公司的竞争力更强,一目了然。
二、开发价值流
在理解和定义「运营价值流」之后,我们才知道要开发什么样的系统或者功能,去加速和优化「运营价值流」的运转。
而一个研发团队的开发活动本身,也一样可以用「价值流」的方式来审视。这称之为「开发价值流」。
「开发价值流」是为了「运营价值流」中的一个或几个步骤服务的,所以,「开发价值流」的第一步,应该是识别和定义未来的「运营价值流」。
比如买飞机票这件事,十几年前我就亲身经历过这样的「运营价值流」:在报纸上找到旅行社的电话,电话告知想购买的机票,并告知对方姓名和身份证,旅行社买好后,约定好双方碰头的时间地点,然后一手交钱一手交票。
软件显然已经颠覆了这个十几年前的价值流步骤。如果我们开发软件或 App 去支持这样的价值流,那就太傻了。
也就是说,我们开发软件,首先要了解现有的「运营价值流」,但是不能受限于它,要开创性地思考未来的「运营价值流」,为未来设计系统和软件。这就是对「设计思维」的需求。
除了这第一个步骤,再举几个我们团队「开发价值流」包含的重要活动。
Lean Value Tree
所有的团队都容易陷入到「构建陷阱」:构建一堆没人使用的功能。
关于「精益价值树」,可参考。它用于捕捉组织的愿景,以及产品的战略性目标和北极星指标,确保在后续漫长的开发过程中,团队有一个长远的方向指引。
这在涉及多个研发团队的大型产品开发中,往往非常重要,这些愿景和战略性目标,就是「上下同欲」的「欲」。
Event Storming
软件开发是一个共创知识和共同学习的旅行,而不应是知识传递的过程。
「事件风暴」是 DDD 里的一个实践,它确保团队里所有成员对业务有一个基本认知,并且基于共识开始建模,是一个可以避免程序员和产品经理之间的鸿沟的很好的工具。
团队拆解 User Story
很多团队只是把 User Story 变成了另一个需求文档,由产品经理写好后,交给团队去实现。
而另一种心智模式是:开发团队是解决问题的人,拆解 User Story 实质是在分解问题。一个不会分解问题的人或团队,绝不是解决问题的高手。
因此,让团队(而不是产品经理)一起拆解 User Story,就成为我们团队「开发价值流」里的另一个关键活动。
每天代码评审
随着 Github/ Gitlab 的流行,PR 或者 MR 的实践已经非常常见。
可是,有些团队一个 PR 需要 5 天 或者 8 天,评审的时候,面对一堆代码,经常就走过场了。就算看到代码有些问题,可是去挑战甚至推翻对方 5 到 8 天的工作量,谁能下那个决心?影响进度怎么办?所以,睁一只眼闭一只眼吧。
我们的应对之策是「每天代码评审」,当天写的代码当天评审完毕,若有修改,也可以比较快地改完,把问题代码扼杀在摇篮里。
当然,结对编程是理论上更好的实践。在团队并不适应结对编程的时候,守住「每天代码评审」的底线,不失为一种有效的办法。
设计「开发价值流」的原则
每个团队的情况不一,同一个团队在不同的时期,面临的挑战也不一样。所以 Leader 带领团队审时度势地定义并演化团队重要的活动,是非常关键的。
比如,我司因为 Stakeholder 太多且分布在全球,不确定性过多,研发周期过长,「Lean Value Tree」就显得至关重要。
又比如,因为公司的业务非常繁杂,产品经理常常无法凭一己之力定义有效的产品方案,为了团队少走弯路,团队共识显得尤为珍贵,这是 我们团队引入「Event Storming」的背景。
这是设计「开发价值流」的原则之一:识别开发过程中的瓶颈,针对瓶颈问题设计重要的活动,植入到「开发价值流」中去。
另一些活动,比如上面的「团队拆解 User Story」,则是我们心智模式和价值观的体现。它可能不是瓶颈触发的,却也至关重要。
因为这些团队行为,背后是价值观,团队对于这些价值观的践行,就是所谓的「公司文化」。
文化绝不是贴在墙上的口号,它是关于领导和团队如何做事的。团队在不同的情况下如何做事,就是文化。
这是设计「开发价值流」的原则之二:它必须符合领导想要植入到团队的心智模式和价值观。
因此,定义并持续演进团队的「开发价值流」,就是在设计团队的「操作系统」,在践行团队的价值观和文化。
我不认同 SAFe 里说的「开发价值流」可以标准化的说法。确实,一些东西是可以标准化的,比如 Scrum 的会议,Devops 的 持续发布 pipeline。但这些东西,要么不是「开发价值流」的一部分,要么,它不足与让一个团队出类拔萃。
「开发价值流」促进持续改进
如上所说,价值流的重要作用在于提供了一个端到端的角度,去审视开发团队:
举个例子,我曾经一个团队的价值流图如下,(括号里是我的反思)
如上,用精益的眼光去看这个价值流图,它可被改进的空间是巨大的。它让我们有了端到端的全局思维,不再头痛医头脚痛医脚。
三、赋能价值流
最后,管理的职责是确保团队能够理解并且自行优化「开发价值流」。
我们需要解释价值流的概念,需要把精益思想不断地传递给团队。我们还需要提供培训、塑造环境、传授经验、构建知识、移除障碍……才能让上面的「开发价值流」流动起来,
以上面的例子来说,并不是每个人都能那样反思,并且看到问题。这本身是需要知识和经验作为基础的,这就是管理者可以向团队「赋能」的地方。
我们还需要让团队能够自行微调和优化「开发价值流」,而不是守着设计好的「价值流」一成不变地墨守成规。
我最喜欢的一个关于「看板」的说法是
看板不是关于流程的,而是关于流程的流程。
看板不是把流程固化在板上,而是一种团队可以发现问题、调整流程的机制。
在「赋能价值流」上,我们使用的工具可以是 Training,Mentor,Teach,Coach。这个对 Leader 的要求可以扩展地非常广,就不展开了。
在这个领域,我们的工作对象不是软件,而是员工。
「生产你的产品之前,生产你的员工。」
综述
「运营价值流」生产的是客户的价值。它影响的是公司的收入和成本。
「开发价值流」生产的是数字化解决方案,这些解决方案是为了服务「运营价值流」上某些或者全部活动的。
「赋能价值流」生产的是你的员工,而人是「开发价值流」上最重要的元素,没有之一。
这个简单的框架,可以让技术管理者确保自己所有的活动,最终都落在价值上(要么是业务价值/客户价值,要么是产品价值,要么是员工价值)。
再配合上「系统思考」这个工具,根据团队的实际情况,来有所侧重地组织自己的活动。
比如,开发的功能没人用或者不好用,则应多关注「运营价值流」;产品的内部质量出现问题,则多关注「开发价值流」;开发流程一成不变,陷入僵尸敏捷的境地,则可多关注「赋能价值流」。
框架带来的好处还有:个人可以在这个框架下,不断修炼自己的技能(赋能就是一个很深的技能)。我在路上,您呢?
