敏捷开发如今已经不是新鲜事物了,咱们都从各类渠道听到过不一样的团队实施敏捷的胜果,听的时候以为很美,回到家就发现那都是别人家的团队,结合本身的状况一看就发现问题一大堆。就算是最终打算一试,也常常会不知如何开始。这就是我但愿编写这份文档的缘由,可以找到一个遵循的敏捷项目管理模型,虽然咱们都知道没有一个放之四海而皆准的方法,但在更高的层面上我以为这仍然是可行的。也就是说,管理模型是一致的,可是其中采用的方法可能各有不一样,最终目标是惟一的:打造一支能够快速适应变化的高质量团队,并输出高质量的产品!微信
今天想跟你们分享的是用户故事的规划过程,对于如何使用用户故事驱动团队的开发过程,后续会有更新。架构
用户故事能够帮助开发团队从用户的角度来理解需求,同时在交付的过程当中按照用户可用的场景进行交付,确保了开发团队能够持续的交付用户关心的功能。可是在实际开发中,团队每每不知道如何入手。app
如何用好用户故事须要解决几个关键问题:运维
用户故事的需求整理方式与传统需求的整理方式有很大的不一样,传统软件开发中咱们依赖用户需求,技术需求,规格说明书等工具试图使用规范的文档来解决需求收集和传递的问题。在这个过程当中,咱们将用户的需求转换成技术能够理解并可实施的规格。对于已经习惯了这种方式的人来讲,要转换成使用用户故事的方式须要比较大的思惟方式转变,你们每每遇到的疑问也是,难道使用用户故事就不须要规格了吗?其实否则,首先咱们要了解用户故事究竟是什么。工具
你们可能以为既然咱们使用用户故事来替代传统需求,那么用户故事就是记录需求的方式了。其实,用户故事不是用来编写的,而是用来讨论和跟踪的。性能
经过以上分析,咱们能够看到用户故事如何编写并不重要,重要的是它所驱动的过程,经过这个过程,咱们能够把用户和技术团队紧密结合,并让你们产生对交付内容的统一认识。因此,用户故事是一种沟通工具,而不是编写工具或者需求模板!开发工具
在真正开始将故事以前,咱们首先要确保正确人都参与进来。对于规划一款产品来讲,你至少须要:最终用户表明,产品经理(或相似Scrum中的PO),项目经理(或相似Scrum中的ScrumMaster),团队中的技术骨干(那些对实现的业务很熟悉,对所要使用的技术或者系统很熟悉的技术人员),技术骨干又能够分红架构,开发和测试三个不一样技能的人。这样看来,你至少须要6我的参与这个讲故事的过程(除非有些人能够互相替代)。测试
你的故事是讲给这里面每一个人听的,同时也但愿每一个人都可以在讲故事的时候有所输入,不只仅是在听。优化
讲故事的过程咱们经过3个步骤进行:找线索 -> 画主线 -> 规格化设计
用户不知道从哪里开始讲故事,这是咱们会遇到的第一个问题。其实这时候用户的心里感受就如同看完一部电影之后走出电影院,试图给没有看过这个电影的朋友讲述。想想在这个场景下你会如何开始?好比,大话西游你们都看过吧;那么讲故事的方式是,孙悟空在500年前如何如何….,而后紫霞仙子如何如何… 你会发现,你永远都会从某个角色开始讲述。其实让用户讲故事的方式也同样,咱们首先要引导用户说出这个故事里都有谁。一部电影是多个角色的故事线交织的结果,一个产品也是同样。有了这些角色,咱们就有了能够抽取故事的线索。
这里咱们能够借助2个工具来协助找线索:影响地图和用户画像
关于影响地图:【Impact Mapping 影响地图 读书与演练心得】
TODO: 完善使用影响地图找出故事主角的过程
关于用户画像
http://www.zhihu.com/topic/19647591
http://cdc.tencent.com/?p=4898
你会发现,当团队开始整理不一样的类型的用户的时候,他们已经开始天然的讲述故事,由于要把一个角色说清楚,你就必须考虑他要作的事情,故事天然就出来了。可是在这个阶段,咱们切记不要过于发散,明确咱们的目的是整理用户画像,只要不一样用户类型间的边界清晰了,就能够结束,不要为细节纠缠。另外,在后续的过程当中咱们也会发现可能有些角色还须要添加进去,那么就到时候说。
最终将咱们整理出的每一个用户类型用一张即时贴粘在白板的最左侧,以下图:
通常我会按照距离最终用户的远近来摆放这些即时贴,同时对每一个角色进行编号,以便后续能够很容易的进行引用。
有了故事的主角,讲故事就相对容易了。在这个阶段,咱们但愿可以帮助团队尽可能将故事的每个步骤的都想清楚,经过在看板上进行可视化,咱们就能够达到这个目的。这里, 咱们可使用简化版的影响地图,以下图:
标准的影响地图上有4个列,分别是WHY WHO HOW和WHAT,这种结构在进行比较大和模糊的目标讨论的时候,如:战略规划,会很好用,由于HOW和WHAT比较容易区分;可是用在讨论用户故事的步骤时候,其实HOW和WHAT区别不大,若是坚持使用规范的影响地图会让团队感到迷惑。因此,我建议将HOW/WHAT合并。具体来讲:
请参考:【影响地图中HOW的理解与对比】
如上图:是一个标准的“新用户注册”的用户故事,你们必定都很是熟悉。基本上这个故事就是浏览者经过 登陆->注册->填写信息->验证邮件提交注册,管理员审核,成为已注册用户后首次登陆->完善资料。但经过卡片的方式将每一个步骤放入白板后你会发现,整个团队能够很好的聚焦到很细节的问题上,同时又对整个故事具有全局观。若是不借助这种可视化方式,那么团队可能很容易丢失当前讨论的主线,从一个细节延展开到其余的部分去了。
注意这里对每一个用户故事进行了ID标注,一样也是为了后续能够容易进行引用。
你可能会问,那我用个思惟导图一类的工具不是更好么?电子化工具的好处是对信息的保存和分享方便,可是在团队讨论中,咱们更加剧视团队讨论的氛围,聚焦和总体效率,若是使用电子化工具,就没法让每一个人均可以同时对这张图进行操做,而必须由一我的操做,其余人很容易走神,若是工具不熟练还会耽误时间。因此看上白板是个很Low的工具,其实对于团队讨论来讲,它的效率高于任何的电子化工具。
如上图:这是我做为敏捷教练参与的一次用户故事讨论,你能够看到你们都汇集在白板周围,整个讨论都是站立进行,任何人均可以随时发表意见,用手指着某个即时贴就能够开始说:“这个”步骤怎样怎样。若是没有可视化工具,或者使用电子化工具,但愿每一个人均可以用“这个”来聚焦全部人的注意力是很困难的,你可能须要解释“这个”究竟是什么,又或者须要在电子工具中鼠标来点,若是操做者不是讲解者,那会更加麻烦。细节决定效率!
有了故事主线,咱们就能够进行下一步的功能细化。这一步所产出的其实就是传统软件开发过程当中的软件规格说明书。软件规格说明书对于开发人员实现产品功能很是重要,是软件开发中不可缺乏的部分。不少人认为敏捷开发不须要文档,其实这是个巨大的误解。可是敏捷开发中的文档确实和传统的需求文档有不少区别:
规格化的过程当中咱们可使用用户故事地图的方式来进行,团队一块儿根据故事主线中的每一个步骤进行讨论,分析出在产品的特定区域(模块)中的功能点,并使用技术人员容易理解的方式来描述这部分的功能。这整个过程就是从将需求从用户角度的描述转换到技术实现角度描述的过程。在这个过程当中你会发现一些在故事主线中看不到的技术细节。
这个过程当中,咱们但愿综合考虑架构和测试的输入,这两个角色须要从本身的角度确保每一个故事的分解都知足架构的要求,而且是能够进行测试的。因为每一个用户故事都会穿越多个功能区域,架构师必须协助团队确保架构的扩展性,复用性以及性能等要求。对于测试来讲,要确保每一个用户故事都是可测试的才能确保后续的测试计划和用例能够配合团队的开发过程,并按照故事逐个交付给用户。
如上图,将以上用户登陆这个故事分解为功能点,展现在用户故事地图上,这是标准的用户故事地图格式:
关于用户故事地图:【用户故事地图(User Story Mapping)之初体验】
注:这篇文章对于地图顶层的解释稍有不一样,这是我当时对用户故事地图的理解还不深刻形成的。
讲故事的过程咱们通常经过需求讨论会的形式来进行,确保以上应该参与的人员都到场。既然是个会议,咱们就必须确保会议的高效,这里能够参考三星高效会议的8点原则:
(1)凡是会议,必有主题;
(2)凡是主题,必有议程;
(3)凡是议程,必有决议;
(4)凡是决议,必有跟踪;
(5)凡是追踪,必有结果;
(6)凡是结果,必有责任;
(7)凡是责任,必有奖罚;
(8)凡是奖罚,必须透明。
针对需求讨论会,咱们至少须要有如下安排
需求讨论会的过程就是按照以上3个步骤讨论故事和分析故事的过程,咱们能够按照如下流程进行
以上是如何使用用户故事来驱动产品规划和设计的过程,后续我会对如何再借助kanban和Scrum来驱动开发和交付过程。
请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息