本文转自台湾的李智桦老师的博客,原文地址

Impact Mapping 真是令人惊艳的可视化工具。等你看完这篇文章,你会爱上它的。

典故

继2011年6月Example of specification《实例化需求》一书的伟大贡献之后(获得 2012年 Jolt Award 年度最佳图书大奖),Gojko Adzic 说我会更努力地在需求这个领域里做出成绩来的,请期待。他果然没有让大家等太久,2012年10月他发行了 Impact Mapping《影响地图》这本只有三个部份,共73页的小册子。小册子只说明了一件事:如何把概念可视化 – Impact Mapping影响地图。它展现了一种「让需求可视化的能力」,用简单的 Why-Who-How-What的分析法,搭配结构化的显示方式,让工程师能够看见辛辛苦苦开发出来的功能是对应到哪一个业务的目标上。哈哈!
其实是倒过来的,因为它十分适合运用在需求还是极度抽象(概念)的时期,他让业务目标能够清晰化,让大家都能以较抽象的方式看出需要那些功能才能达成这样的业务目标。它能够串联出来一条相关的影响路径,并借着关联的图示化,让需求被看得见,这一点对产品的早期,还在做雏型设计的作业上有着极大的贡献。

用Impact Mapping来分析电影 — 另类的诠释

这是我的最爱,运用电影来阐述演讲的情节内容(大概是2005年开始的,我记得当时讲的第一部电影是基诺.利瓦伊的驱魔神探 康斯坦丁,技术上要探讨的是微软 Message Queue 的理论)。手法是在演讲中拨放一段2到3分钟的电影精彩片段,让学员透过可视化的影像,试着联想着跟演讲主题的种种关联性,达到一种比单独听讲者演说更为有效的共鸣。这招用多了以后,就自然而然成为了自己演讲时的特色。一些熟识的学员,总会在上课前顺道问一下今天会放哪一部片子啊?!

但这回采用impact mapping, 则是真的用来分析电影用,与技术无关,假借着运用它可视化的能力,让没有看过这部电影的人也能像剧务一样的熟悉着每个场景(似乎讲得太夸张了,实质上只是画出它的路径而已,若是想要完全了解它,还是要配合着去看剧本吧,至于所有的功能描述,那是每个参与演出人的”脚本”),了解各个场景试图要带给观众的效果是什么,以及它所想达成的目标。以下便是电影白日梦冒险王(The Secret Life of Walter Mitty国内的翻译叫做《白日梦想家》)的影响地图(或许是它的主题曲太吸引人了,所以就选它的电影来当范例了。它叫:
Stay alive)。

由左往右;依序陈列的是电影要达成的目标,有哪些重要的角色,而这些角色要强调的是那些特色,这些特色所需要的构成因子,最后是用怎样的剧情演出才可以获得这样的效果。(有一条可以依循的路径,好像就可以勾勒出the whole picture,这是我们在思维模糊期所最最想要的,寻找条可以依循的思路,这需要练习,来动动手吧!)

试着用这些数据,开始说故事吧:

  • 主角的目标(Why): 找到第25张底片,来做杂志最后一期的封面故事。

    人物主角(Who): 华特.米堤 Walter Mitty(由班·史提勒饰演)
  • 主角的个性特色(How): (1)爱做白日梦。(2)是典型的宅男。
  • 影响这个个性的描述(What): (1)表现得经常发呆、幻想。(2) 非常容易触景生情。(3)少年时打工后遗留下来的创伤,等等。
  • 场景(Scenario): 这是我自己加上的。因为要做这样的个性描述,该有怎样的布景来做配合,预备动用多少演员,准备拍摄多长的底片(也就是预备花费的成本)及脚本。

只是一张简洁的图示,针对 一个目标,陈述着;第一层、谁Who:指出主角人物,第二层、怎样How:格性特色的描述,第三层、什么What:列出影响的因素,再针对这些个因素设计出能够展现达成让观众引起共鸣的场景片段。最后再检验这些个片段是否能达成我们所默认的目标。这样便OK了!一出戏的极度抽象轮廓便可以成形了。

看着这张图示;不论是导演、演员或是剧务,依靠这样的说明,似乎看见了剧本中赋予这个角色的全貌,大家开始有了个基本的轮廓,也就是我们所谓的对主角、人物的轮廓, get the whole picture看见全貌(请注意Impact Mapping 是用来描述部分路径的影响因素的,然后分析有它或无它的影响性,而不是用来分析所有相关路径的全貌的,那太复杂了,也就是说;因为故事的全貌通常都会太过于错综复杂,远远超过这种直列式分析方式的范畴,就是关连性太高、太复杂了很难画出来,或是根本就画不出来,因此我们几乎不会把所有的相关因素都画出来,只把重点放在想要探讨的路径上)。

老实说,我好喜欢用它来分析电影。而且每当分析完电影的那一刻,我总会觉得(自以为是的)自己可以去当导演了(或许应该把这种方法介绍给李安吧!)。

因此这一段我先用电影来跟大家分享自己的心得。但运用在软件开发上,要怎么转换呢?

※请看它的使用者故事(应该说的是用例):

身为白日梦冒险王的主角,我希望能够表现得常常发呆、幻想,从此以后当大家提到Walter Mitty时就会想到我是一个爱做白日梦的人。

电影说完了,开始讲正课吧!

「谁Who」 刚好对照到使用者,「什么What」则是对到愿望,「怎样How」对照到利益。我们能够很容易地由可视化的影响因素,引导出相关的使用者故事。这一点刚好可以提供我们在向他人陈述故事时的关联性说明。

※附带一提;在撰写使用者故事的时候,应该是写三张卡片而不是一张。

  • 第一个故事卡片上描述实际的故事;
  • 第二个是占位符。为我们看到第一个故事后必然要做的改变保留位置;
  • 第三个故事卡片就完成那些改变后所需要做的优化。

依循这种方式,很快的你就会有一大堆用户故事了,当信息过多的时候,反而会让你看不到真正工作的主轴,此时便该是使用者故事地图出现的时候了

下面这一段参考自中文译本,是标准教材,到处都可找得到。但请记得;看完后挑一部自己喜欢的电影,制作它的影响地图,会很有成就感的!

何谓影响地图?

  • 一个简单却极高效的协作性的策略规划方法
  • 影响地图Impact Mapping是一门属于战略性的规划技术,通过清晰的沟通假设,说明团队根据总体业务目标调整其活动,以及做出更好的里程碑决策,影响地图可以说明组织避免在构建产品和交付项目的过程中迷失方向。
  • 影响地图可以有效的评估交付,作为质量回馈的标准之一。

影响地图的结构

它是这样的一个思维逻辑和组织结构:

为什么(Why)–>谁(Who)–>怎样(How)–>什么(What)

也就是:我们的目标是什么(Why),为了达成目标需要哪些人(Who)去怎样(How)影响,为此我们需要做什么(What)。影响地图通过构建产品和交付项目来产生实质影响,从而达到业务目标。

影响地图的特点

结构性:从业务目标到交付的结构化梳理和挖掘的方法,目标–角色–影响–产出物。

整体性:连接目标和具体交付物之间的树状逻辑图谱。

协作性:利益相关人一起沟通讨论协作,把隐藏在个人头脑中的默认的思维逻辑挖掘出来共享。

动态性:动态调整、迭代演进、经验证的学习。

可视化:一个清晰的视图,关联性的结构一眼可以望穿、易读。

它将各种角色以不同的视角,不同的思维逻辑,不同的前提假设,通过可视化和协作的方式进行整理、说明,相关性在座连接,一下子就串起来了。通过连接交付内容、影响和目标,影响地图显示了之所以去做某一个功能的因果关系,同时也可视化了各利益相关人所做出的假设。这些假设包括了:业务交付的目标,涉及目标关系人,及视图画所达到的影响。同时,影响地图沟通了两个层面的因果关系假设:

1、交付会带来角色行为的变化,产生影响;

2、一旦影响达成,相关的角色会对整体目标产生贡献。

小结

影响地图可以作为使用者故事地图的有效输入,它刚好可以很有秩序的产出使用者故事减少我们运用头脑风暴时所大量产出凌乱无序的使用者故事— 好的整理工具。它让我们看到了用户故事与业务价值之间的联系关系,这一点可以避免我们做了一堆没有商业意义的功能。最后;它能让我们在调整业务目标时,明确的判断哪些功能该继续做完,而那些功能可以不用做了。

还是用电影来做结尾吧! 影响地图是极度抽象的可视化产出物,就好比剧本里的人物关系图示,想知道真正的工作细项,还是得去阅读剧本/脚本吧! 下一回;我们就来谈谈使用者故事地图,它就是我所谓的剧本!

附上学员在上课时的作品:


请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

看见的力量 – (II) 影响地图的更多相关文章

  1. OKR与影响地图,别再傻傻分不清

    摘要:OKR和影响地图虽然都是为了一个目标去进行规划的方法,但是两者侧重的内容却不一致. 本文分享自华为云社区<一分钟读懂OKR与影响地图>,作者: 敏捷的小智. 什么是OKR及影响地图 ...

  2. UDAD 用户故事驱动的敏捷开发 – 演讲实录

    敏捷发展到今天已经在软件行业得到了广泛认可,但大多数敏捷方法都是为了解决某一特定问题而总结出来的特定方法或实践,一直缺乏一个可以将整个开发过程串接起来的成体系的方法.用户故事驱动的敏捷开发(User ...

  3. 看见的力量 – (I) 解题的思维

    本文转自台湾李智桦老师的博客,原文地址 这篇文章:已经梗了我三个多星期了.这期间飞了二次大陆做演讲.往返几个大城市做教授敏捷开发运用在精实创业的课程.教材内容都是简体的,它们始终没有机会在国内用上,心 ...

  4. ios开发——实用技术OC篇&地图与定位

    地图与定位 11.1 iOS定位服务 11.2 iOS地图 11.3 Web地图 1 iOS定位服务 iOS中有三个定位服务组件: Wifi定位,通过查询一个Wifi路由器的地理位置的信息.比较省电, ...

  5. OpenLayers学习笔记(一)—在线加载谷歌影像地图&离线加载本地瓦片地图

    实现根据在线离线判断加载地图, 在线加载谷歌影响地图, 离线加载本地瓦片地图 作者: 狐狸家的鱼 Github: 八至 html代码 <div id="map" tabind ...

  6. 提高Mxd地图渲染出图效率的方法

    测试 在ArcGIS地图渲染非常耗时,特别是标注较多时,下面是做的一些性能测试   小结 1.地图渲染的数据量是显示出图速度的关键.主要注意: (1)与数据库存储的数据量关系不大.例如数据库有1万条数 ...

  7. OpenLayers 3 之 地图视图(View)

    OpenLayers 3 之 地图视图(View) 初始化一幅地图,必备的三要素之一视图(view),这个对象主要是控制地图与人的交互,如进行缩放,调节分辨率.地图的旋转等控制.也就是说每个 map对 ...

  8. D3学习之地图

    D3学习之地图 (2017.03.09-03.11) 地图的意义 在可视化领域中,将数据点投影和关联到地理区域上,是一个非常关键的内容(体现了可视化中利用读者自身知识常识从而加速吸收信息的原则). G ...

  9. iOS开发人员程序许可协议

    请细致阅读以下的许可协议条款和条件之前下载或使用苹果软件.   这些条款和条件构成你和苹果之间的法律协议.   iOS开发人员程序许可协议   目的 你想使用苹果软件(例如以下定义)来开发一个或多个应 ...

随机推荐

  1. ●BZOJ 1233 [Usaco2009Open] 干草堆 tower

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1233 留坑.以后再来看看. (绝望,无奈,丧心...) (这个题的证明真的很诡异啊,看得我稀 ...

  2. [bzoj4822][Cqoi2017]老C的任务&[bzoj1935][Shoi2007]Tree 园丁的烦恼

    来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员.     最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松地完成 ...

  3. C语言第二次作业 ,

    一:修改错题 1输出带框文字:在屏幕上输出以下3行信息. 将源代码输入编译器 运行程序发现错误 错误信息1: 错误原因:将stido.h拼写错误 改正方法:将stido.h改为stdio.h 错误信息 ...

  4. 用JavaScript按一定格式解析出URL 串中所有的参数

    1.先看看location对象 2.其中的search属性就获取当前URL的查询部分(问号?之后的部分) 3.改造location.search 比如当前URL为:https://www.hao123 ...

  5. vue mint-ui 实现省市区街道4级联动(仿淘宝京东收货地址4级联动)

    demo及源码地址 https://github.com/artiely/citypicker 先去下载一个“省份.城市.区县.乡镇” 四级联动数据,然后 引入 import { Picker } f ...

  6. python字典无限遍历

    #无限遍历dict,通过key获取value,嵌套字典存在多个相同的key,可获取多个key class getValues(object): def __init__(self): pass #无限 ...

  7. 从 python 中 axis 参数直觉解释 到 CNN 中 BatchNorm 的工作方式(Keras代码示意)

    1. python 中 axis 参数直觉解释 网络上的解释很多,有的还带图带箭头.但在高维下是画不出什么箭头的.这里阐述了 axis 参数最简洁的解释. 假设我们有矩阵a, 它的shape是(4, ...

  8. 阻止Enter键回发到服务端Asp.net

    //阻止enter键回发到服务端$(function () {    $("input[type=text]").each(function () {        $(this) ...

  9. 在OpenCV3.1.0中使用SIFT,SURF算法

    写在前边: 1.我使用的是python2.7 + OpenCV3.1.0 2.OpenCV3.0.0+的文档有很大问题,很多文档写的还是OpenCV2.0+, OpenCV3.0+根本用不了,其中有一 ...

  10. ES6(数据结构_2)

    数据结构—2 Map 与 Array 的对比 Set 与 Array的对比 Map 与 Object 的对比 Set 与 Object 的对比 (增.查.改.删) 一.Map 与 Array 的对比 ...