持续交付2.0:业务引领的DevOps精要(增订本)
上QQ阅读APP看书,第一时间看更新

探索环(Discovery Loop)是指团队通过一系列工作环节,能够识别和定义业务问题,制订相应的衡量指标,并找出低成本且可快速验证的最小可行解决方案(Minimum Viable Solution)。这是一个理解真实需求、判断优先级、再评估需求的过程,具体包括以下4个环节。

(1)提问:通过有针对性的提问与讨论,找出团队期望达成的业务目标或者希望解决的业务本质问题。

(2)锚定:针对该问题进行信息收集,经过分析,去除干扰信息,得到适当的指标项,并用其描述现在的状况,以及我们希望的结果或状态。

(3)共创:通过深入讨论,找到所有可能的解决方案。它是一个深入理解和验证问题的环节。

(4)精炼:结合实际情况,进行评估,筛选出最小可行性解决方案或方案的集合,以作为验证环的输入。等待它的真实反馈,再做价值判断。

以下详述实施这4个关键步骤的具体方法。

该环节是持续交付“8”字环的起点。其目的在于通过不断地提问,澄清客户需求背后要实现的真正目标,以便找寻更多解决问题的方法,同时也有助于团队成员从业务问题出发,充分理解业务问题。

敏捷软件开发方法已经非常流行,“用户故事”作为一种描述需求的方式也被广泛采用,然而,软件研发团队更关注“需求是什么”的问题。例如,我们经常遇到下面这种团队需求讨论的场景。

业务人员:你按照这个文档中的业务流程和界面样例开发就行了。

开发人员:这个流程走到这里时,遇到(……)这种情况时,这个字段里应该包含哪些选项?

业务人员:你可以这么做(……)

开发人员:那这样处理以后,接下来怎么办?

上述的提问目标是澄清用户的直接需求(即业务人员提出的解决方案)。从“满足客户需求”的服务心态来看,这样的工作方式也没有什么问题。然而,按照业务人员编写的文档开发,就能满足他们真实的需求吗?

探索环中的提问环节要求不仅仅是找到“实现什么”以及“如何实现”,更是要了解客户需求背后要解决的真正问题“为什么要实现”,以便规划更加方便快捷的验证方案或解决方案。

由于角色惯性,从开始讨论的那一刻起,我们就很容易跳过最重要的问题,也就是说,如何更好地为客户解决真正的问题,而这恰恰是我们应该做的。因此,要通过持续提问,对问题进行深入探究。

设想一下,我们正举办一个为期一天且付费的小型线下聚会,主题是“DevOps和持续交付2.0”。午休期间,有位听众希望下午能够喝上一杯星巴克咖啡。为了更好地为客户服务,作为主办方,我们耐心地询问他“需要哪种口味的咖啡?”“热的,还是冰的?”“大杯,还是中杯?”“希望什么时间拿到?”。

然而,所有这些问题都只是在问“做什么”和“怎么做”,并没有任何一句问及原因。如果客户想要解决的真正问题是“在下午听讲时不会因为困意而错过了听讲”,我们也许有很多方法解决他的诉求?也许我们可以录制视频,这样即使参与者在过程中开小差,在沙龙结束后,他们也能够回顾一下沙龙的所有内容。我们还有更多的方法来满足用户不错过精彩内容的需求,例如:

(1)沙龙的组织者可以将演讲模式改成互动参与模式,增加互动环节;

(2)安排站立区,允许参与者走动;

(3)发言者的发言更有吸引力;

(4)在会场角落提供其他冷热饮品。

这个假想的案例可能并不准确,但你一定已经领会了其中的含义。的确,为了解决客户的问题,我们可能会找到很多种解决方案,但前提是我们必须发现“正确的需求”。所谓“正确的需求”,是那些能够解决客户真正想要解决的问题,而不一定是由客户提出的解决方案。

因此,当我们接到一个工作任务时,我们应该更多地深入理解所要解决的问题,了解其背后的真正原因,不要过早地进入解决方案环节的讨论,而忽视了对问题的讨论。这样才能更好地解决问题,而不仅仅是完成软件功能的开发工作。

在“提问”这一环节中,组织者需要注意以下4点。

(1)问题域的提出方及解决方案的提供方代表尽量到场,参与讨论。

(2) 多问几个“为什么”。尽量避免因为感觉自己熟悉这个问题域,而过早地放弃探索。

(3)在条件允许的情况下,尽可能收集数据信息,以便作为问题理解和分析的佐证。

(4)移情,使用同理心。设身处地站在客户或问题提出方的角度思考问题,还原客户问题的场景。

当我们已经选定要解决的问题领域时,接下来就要确定我们要达成的具体目标与结果。“锚定”是设定目标以及目标分解的讨论过程,其目的是确定要达成的目标以及可以衡量它的指标,并能够指导后续的共创与精炼活动。

我们应该尽量避免模糊不清的目标,它会影响团队成员之间的交流。清晰地描述目标让我们自己知道当前所在的位置,离目标还有多远。只有这样,我们才能以终为始,结合现实环境,选择和制订相对合理的解决方案。清晰的目标通常是具体且可衡量的,并有时间限定。如果没有时间限定,它很可能会成为一个企业愿景,就无法直接指导企业日常生产管理的具体活动,如图2-2所示。

2-2

图2-2 愿景与目标

最好的方式是让目标可客观衡量。有时,我们很难立即拿出一个可衡量的标准。但是,我们可以通过描述目标状态,并根据这一目标状态可能产生的结果来寻找可客观衡量的目标结果。如何发现可衡量的指标呢?我们可以这样来思考:如果某个产品满足了用户的需求,那么用户会非常满意,而用户的满意会带来复购,同时会有更好的品牌知名度,从而带来更多的用户。那么,我们是否可以设定用户数量和营业收入作为产品的指标维度,如图2-3所示。这两个指标的特点是:容易收集和容易量化,这有利于降低收集衡量指标的成本。

2-3

图2-3 易收集、易量化的目标

例如,对某个提供新闻信息流服务(Feed流)的移动应用产品来说,企业希望“让用户喜欢它所提供的信息服务”。然而,“喜欢”是一个很难量化和佐证的目标,这就需要进一步锚定。如图2-4所示,我们可以推断,假如用户喜欢这个产品,那么:

(1)用户会阅读更多的内容,而且会花费更长的时间。

(2)用户会将产品推荐给朋友,朋友们也会喜欢并成为产品的用户。

2-4

图2-4 Feed流产品的指标选择示意图

从上面的假设中,我们提及3个易收集和易衡量的指标,它们分别是推荐朋友数、单位时间内的用户数和单个用户平均使用时长。这3个指标都能作为企业目标的指标维度。到底选择哪些指标作为目标,需要根据企业现状、产品处在的生命周期阶段以及外部市场环境进行综合判断来决定。

另外,目标需要针对不同的组织层级而设定。一个企业的总目标应该是整个企业范围内的目标,而不应该只是企业中某个团队的目标。一旦制订了企业总目标,企业中的每个团队都要以它为方向,根据自身团队的职责与性质,制订各自相应的目标,并为实现它而集思广益,群策群力。例如,提高用户操作流畅度,提高API请求响应速度,推荐给用户更多他们喜欢的内容,提高服务的稳定性,等等(如图2-5所示)。

2-5

图2-5 总目标与子目标

对于目标的选择,应该遵循两点:一是识别价值指标,而非虚荣指标;二是指标应该可衡量且可获取,易于客观对比。虚荣指标这一概念是《精益创业》一书中提及的。它是指让你的产品效果看起来很好的那些指标,如注册用户数、网站最高访问量等。虽然这些指标在一定程度上反映了产品的状态,但并不是最有价值的衡量指标。相比较而言,日活跃用户、月活跃用户、日留存率、月留存率、有效购买率等可能是更好的价值衡量指标。

当然,对于更加具体的问题域或者产品阶段,我们还会发现比活跃用户、留存率等更恰当的价值衡量指标。这需要团队根据业务特点及阶段侧重点自行发掘和定义。

共创就是指:当我们制订了想要达到的目标后,团队为设法验证或达成目标而找出多种可行性解决方案的过程。共创要在理解问题和制订目标之后进行,否则会因为缺少目标约束,使得解决方案容易过于发散。这一环节的产出应该是很多带有量化指示器的解决方案。事实上,每一个解决方案都是基于一定的假设条件或猜想得出的,而每一个假设都等同于一个风险项。因此,每个解决方案都只是“试验方案”,试图解决问题域中的某个具体问题。

这一环节的分析方法有很多,在这里介绍其中的两个,一是“量化式影响地图”;二是“用户旅行地图”。

1.量化式影响地图

Gojko Adzic在《影响地图:让你的软件产生真正的影响力》中解释了什么是影响地图,它是用Why-Who-How-What的分析法,通过结构化的显示方式(如图2-6a所示),让团队寻找达成业务目标的方法。对科学验证来说,这还显得不够完整。我们不但应该知道“做XXX可以影响YYY”,还应该了解当前的影响程度,以及对实施后达到效果的预期。也就是,从业务问题域出发,按“角色—影响—方案—量化”的顺序进行讨论,如图2-6b所示,从而尽可能多地发掘出可行性解决方案。我们可以称它为“量化式影响地图”。

2-6

图2-6 量化式影响地图

量化式影响地图的具体制作步骤如下所示。

(1)角色:列出该问题域所涉及的人或角色。

(2)影响:针对每类人或角色,思考他们有哪些途径可以影响该问题的解决(既可能是积极的影响,也可能是消极的影响)。

(3)方案:针对每一种途径,讨论并列出所有可能影响该问题的解决方案。

(4)量化:如果可能,尽量为每个解决方案定义一个可衡量的指标项。

下面,我们以某移动App应用的用户增长目标(两个月后达到20万用户)为例,可能涉及的内外部人员包括:(1)App的使用者;(2)推广渠道;(3)客服团队;(4)产品研发运营团队;(5)内容提供商以及更多角色。按照上面给出的4个步骤,列出多种可实施方案,如图2-7所示。

2-7

图2-7 量化式影响地图示例

我们有时无法马上对所有指标进行量化。例如还没有收集和统计过与指标相关的数据。此时可临时性地收集一部分数据,并进行相应的推断,通过一段时间的运行,进行指标量化的校准即可。例如,某公司希望提升研发效率10%(目标),其中一个方案是提升运维人员的部署操作效率。但是,之前并没有收集过部署操作所需时间。因此,我们利用一周时间,对当周进行的两次部署任务进行了数据采集,并据此进行推断,共同定义了团队认可的部署操作时间周期。另一种可能是希望衡量的指标较难直接量化。此时可通过一些过程指标或相近指标来替代。需要注意的是,这两种情况都存在一定的偏差,因此在数据的应用过程中,应该格外注意。

2.用户旅行地图

用户旅行地图(user journey map)是指以可视化方式,将用户与产品或服务之间的互动,按业务流分阶段呈现出来。用户旅行地图通常包括以下4部分。

(1)用户接触点:旅程中的重要关键时刻(如短信消息、软件操作界面等)。

(2)接触阶段:将整个旅程按顺序划分成不同的阶段(例如商品查询、下单、付款等)。

(3)用户痛点:在用户与系统服务的互动过程中,对什么感到不足。

(4)用户情绪:在旅程中的每一个阶段,有哪些情绪变化。

用户旅行地图的制作步骤如下。

(1)定义用户:明确指定为某一类用户定义用户旅行地图。

(2)定义任务或阶段:在这些任务或阶段中,会有哪些不同事件发生。

(3)用户与服务接触点的互动行为:在不同事件发生时,用户如何操作,操作顺序如何。

(4)用户的动机:用户在每个操作背后会产生什么样的想法,有什么痛点。

(5)用户的心理:在每个操作中,用户心理会有哪些变化,情绪会如何起伏。

当将其操作流可视化以后,捕获每个阶段的相关信息(如操作时间、等待时间、操作次数等数据信息),通过用户痛点发现其中可能存在的问题,从而提出相应的解决方案,以改善最初的业务目标。这些解决方案既可能是对原有流程的全面改造,也可能是对某个环节的局部优化。

例如,对线上电商服务来说,一个重要的问题领域是如何缩短从“用户开始查找商品”到“最终收取货物”之间的周期。针对这个问题,我们可以通过对整个流程建模(如图2-8所示),对流程的各环节进行分析(该环节参与的角色、所花费时间及成本)。当获得问题症结的假设后,通过创建新的流程或者选择一些环节进行方案优化,并确定量化指示器。

2-8

图2-8 电商平台的业务流程示意图

对电商平台上的商家服务来说,假如电商平台的目标是“提升商家满意度”,那么,很可能缩短账期,商家就会对平台更加满意,而这可能需要对原有的财务结算系统和商家管理系统进行改造升级。

在“共创”这一环节中,需要注意两个陷阱,分别是分析瘫痪(paralysis by analysis)和直觉决策(extinct by instinct)。分析瘫痪是指因为过度分析(或过度思考)而无法决策或采取行动,最终影响结果产出的一种状态。通常是由于有太多的细节选项,或者过于寻求最佳或“完美”的解决方案,并担心做出任何可能导致错误结果的决定。而直觉决策是指不做分析,基于匆忙的判断或直觉反应而做出致命的决定。它是与分析瘫痪相反的另一个极端。

同时,值得注意的是,很多解决方案产生的结果是相互影响和关联的。一个解决方案可能会影响多个结果指示器。

精炼环节就是对共创环节中得出的众多方案进行评估,从中筛选出团队认为最小可行性解决方案的过程。评估因素包括备选方案的实施成本、时间与人力、效果反馈周期,以及该方案对业务目标的影响程度。

在VUCA环境中,时间是最大的隐形成本。如果实现方案所需时间太多,我们就可能错失了机会。而且,某些方案实施以后,需要经过一定的执行周期,才能看到它带来的真实效果,这也会增加时间成本。我们希望尽可能多地选择试验方案,因为每个方案都有可能有助于解决我们的问题,达成我们的目标。

作为一个电商网站,Etsy的搜索导航条在2007年如图2-9所示。尽管当时并没有认为这个设计是永久性的,但直到2012年,它也没有发生很大的变化。事实上,大多数买家并不知道怎么用它。例如,几乎根本没有人使用其中的搜索项“商店”(Shops)。

2-9

图2-9 Etsy的搜索导航条

在这5年中,搜索下拉框上已经增加了很多内容,承担了过多的职责,而且并不是所有项目之间都具有直接关联性。因此,团队决定对其进行大改造,于是专门成立了一个改造项目。团队成员提出了很多改造的想法和解决方案。最终他们精炼出一份任务清单,如下所列:

(1)重新设计页面上的搜索区;

(2)默认为“所有项目”;

(3)更丰富的自动化推荐提示;

(4)在搜索结果列表中给出推荐的商店;

(5)可以将常用过滤器加入搜索收藏夹;

(6)将搜索栏分别放到商品和商店页面上;

(7)删除原有的搜索下拉列表。

其中,每一项任务的开发时间都很短,而且每项改造任务的前后效果都可衡量,并且任务之间相对独立。在改造过程中,每当完成一项,都可以进行评估,并且有机会根据每一次的评估结果修订原有的项目执行计划,以更好地达到业务目标。

在上述精炼任务清单中,有一些任务是成功的,有一些任务则并不成功。如图2-10所示,在第一项改造(在页面上增加一个商品搜索区)后,用户数据显示,几乎没有用户注意到它;而在第三项改造(增加自动化推荐)后,数据效果则比较明显。

2-10

图2-10 Etsy网站搜索导航的两个优化项

因此,我们不难看出,即使是一项巨大的改造工程,其解决方案也可以是一组迷你方案的集合。精炼的目标并不是为了删除在共创阶段得出的解决方案,而是将它们按优先级排列,并让团队将解决方案进一步分解,顺序选出共同认可的最重要改进项,并确保它能够尽早被验证。

通过精炼之后,被选择的方案就可以进入验证环了。那么,如何判断我们已经准备好,可以进入验证环了呢?一个简单的方式就是你能够将探索的成果以下述形式表述出来,并且达成团队共识:

我们相信,通过实现(xxxxx这样的最小功能组合),我们的指标可以达到(yyyyy程度),说明我们关于(zzzzz)的假设是成立的。