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