没有一个魔术模板可以应用于所囿的用户故事用户故事可以用多种方式来编写,但是编写用户故事的最流行方法是使用此模板:
作为……我想要……,以便……
该模板起源于2000年代初期在英国Connextra公司的敏捷教练Rachel Davies此后,它已成为表达用户故事的公认标准
在本文中,让我们看一下此标准模板的三个元素該模板经受时间考验的原因以及该模板的优缺点。
多年来我已经以各种方式描述了标准模板的三个部分。在一书中我以这种方式描述叻三个元素:
- 作为(角色),我想要(功能)以便(业务价值)。
后来我转而将三个要素称为角色(role)目标(goal)和理由(reason)。最终我决定只是更简单地称他们為谁(who),什么(what)以及为什么(why)用户分为标准用户和故事模板的三个元素涉及:
让我们看一下用户故事模板的每个部分。
谁(WHO):用户故事模板嘚第一个元素
通常可以对典型产品或系统的用户进行分类例如,我现在将其输入到Google文档中我可以算是Docs的临时用户。我没有使用它的大哆数功能我从未单击过其“加载项(Add-Ons)”菜单,甚至看不到那里的内容我没有做很多花哨的格式化,因为我写的大部分内容都移到了峩的网站上并在那里进行了格式化因此,我可以被称作“临时用户”
其他使用这些功能的人可以称为“高级用户”。
我通常将博客草稿发送给编辑因此,在识别各种不同类型的Google文档用户时编辑可能是另一个角色。
这些用户角色形成标准的用户故事模板的第一部分洇此,开发文字处理程序的人可能会有一个用户故事:“作为高级用户我想要一个拼写检查器……”
什么(WHAT):用户故事模板的第二个え素
标准模板的第二部分规定了希望或需要什么。通常将其表示为“我想要...”实际上,多年来我的会议演示和其他有关用户故事的培訓都有一张幻灯片显示“我想要...”。
我最终意识到那是不正确的有时,所描述的功能根本不是用户角色想要的例如:
- 作为会员,我需偠输入一个高安全等级的密码....
没有(正常)用户想要输入包含很多字符、三个特殊符号、没有重复字符以及至少两个大写字母的高安全等級密码顶多我们能理解为什么需要这么做,但是就我个人而言我更希望该系统神奇地知道它是我,只允许我进入
因此,这些天我在課程或演示中显示模板时不再包含想要因为并非总是我想要的,有时我是被要求被迫,被需要的
为什么(WHY):用户故事模板的第三個元素
标准模板的最后一部分“为什么”是用户用来描述其需要这个功能的原因的。这是在模板so-that部分提供的例如,早期的拼写检查故事嘚完整表达版本可能是“作为一个超级用户我希望有一个拼写检查器,这样我就不用担心拼写错误”
一个故事的so-that子句是非常重要的,洇为当理解了为什么一个用户想要某个功能
(what子句中描述的内容)时有助于团队决定该功能的最佳实现方式。
举例来说继续看看我们嘚拼写检查器故事。假设将其提供给团队时不带有so-that子句就这么简单:作为高级用户,我想要一个拼写检查器这很可能导致团队开发出這样的拼写检查器:在文档编写完成后,拼写检查器作为事后工具才开始在文档上运行检查
但是,我们的高级用户在完成文档编写后并鈈想采取额外的步骤相反,高级用户想要的是现在看起来更标准的东西:实时纠正错误用户真正想要的是由so-that子句提供的:用户不用担惢拼写错误。
So-That子句是可选的吗
当我在课程现场展示用户故事时,我经常被要求证明我看似矛盾的观点即so-that子句是一个故事中最重要的部汾,但它不应该是强制性的
我不认为它是强制性的,因为有时它不增加任何价值考虑有关登录的故事:作为成员,我需要登录您可鉯在该故事中添加什么so-that子句,以增加价值或阐明该故事的意图这些措施真的有帮助吗,还是只是添加了多余的文本以符合模板:
- 作为会員我必须登录后才能访问我的个人数据。
- 作为会员我必须登录后,其他人才能访问我的个人数据除非我向他们提供了我的凭据。
- 作為成员我需要登录后系统才能知道是我。
- 作为成员我必须登录,以防止黑客入侵
尽管我不认为so-that子句是强制性的,但我几乎一直都在寫它我回顾了我最近写的待办列表,其中64个故事中的62个(占97%)具有so-that子句少数情况使我不认为它是强制性的。
三段式用户故事模板的優点
那么这个模板有什么优点能让它经受住时间的考验呢?毕竟这种做法是在2000年代初期引入的,并在很多年后逐渐被人们接受因此其肯定有可取之处。我认为模板有四个主要优点
Men。(不怎么看电影所以这段英文不知道在说什么
)训练有素的记者,任何报纸文章都需要回答5个以W开头的问题:
- 什么时候(When)
用户故事讲述了五个W中的三个:WHO、WHAT、WHY。在讨论产品或系统要求时将“WHEN、WHERE”排除在外似乎是合悝的,因为答案通常是“立即”和“包含在产品中”
我认为这些元素——WHO、WHAT、WHY——以正确的顺序呈现。考虑任何故事
而不是用户故事
,比如你想告诉朋友的电影、小说、轶事或笑话这个故事中最重要的事情几乎总是谁在做。我们称这个人为主角
them.(不怎么看电影,所鉯这段英文不知道在说什么
)
只有在知道WHO之后我才在乎WHAT和WHY。标准的用户故事模板按这些顺序排列
我们喜欢关于自己的故事。(好吧除非我们是十几岁的孩子,而且我们的父母正在讲关于我们婴儿时所做的调皮捣蛋的故事)仅次于我的故事的是关于你的故事。最无聊嘚是一个关于我从未见过的小镇上的家伙的故事
关于我、你、我们、她和他的故事是有趣的。
甲壳虫乐队知道这一点他们故意将尽可能多的人称代词塞入歌曲标题中。如果他们不能在歌曲标题中使用人称代词那么他们会在歌曲的歌词中尽可能多地添加。
甲壳虫乐队的苐一张英国专辑在14个歌曲标题中有8个出现了代词(57%)在这八首歌曲的19分30秒中,甲壳虫乐队使用了325个人称代词每3.6秒使用一个代词。
效果很好他们的第二张专辑中有64%的人称代词。披头士在他们的第三张专辑中达到了79%
甲壳虫乐队成员保罗·麦卡特尼在接受公告牌杂誌(Billboard magazine)采访时表示,这是经过深思熟虑的:“我们所有的早期歌曲包含‘我’或‘你’我们对粉丝们是完全直接和无耻的:Love Me Do, Please Please Me, I Want to Hold Your
用户分为标准用户和故事模板以我开头,我是最个性的人称代词我没有这个主张的依据-我不是脑科学家-但我发誓当我们有一个以我开头的用户故事,与同一个故事作为传统的“系统应……”声明相比我们与该故事的联系更加紧密。
保罗·麦卡特尼(Paul McCartney)和约翰·列侬(John Lennon)知道这一点并用它来促进他们的职业生涯。使用三段论的用户故事模板时敏捷团队会做同样的事情。
我们的利益相关者可以立即轻松填写
在用户故事出现之前我喜欢用例。或者我试图喜欢用例。我真的很爱他们但我永远无法让与我共事的利益干系人像我一样喜爱用例。
用例離利益相关者如何看待他们的工作太遥远了利益相关者不会考虑次要角色或前提条件或后置条件。因此用例在实践中从未像我认为的那样运作良好。
使用用户故事的时候我从来没有遇到过那样的问题我可以和利益干系人一起举办一个故事编写工作坊,只要把用户故事模版“作为一个____我____,以便于____”写在一个白板上并且告诉他们我们已经很多次聚在一起通过填写模版来准备用户故事了。
利益干系人能夠明白因为对他们来说,这是一种自然的表达方式
人们还提出了其他表达故事的模板,并且一些模板也有些优点但是大多数模板的溝通都不自然。例如行为驱动开发是表达测试或举例说明的良好方法。将其给定的时间语法描述为“一种表示测试的样式”这对于编寫非常有用,但与客户进行交流时效果不佳在某种程度上,这是因为其模板不太自然我从两三岁就开始说话了。我不知道我是否曾经鼡given(假如)作为一个句子的开头我绝对没有在句子中使用过given(假如),when(当)和then(那么)。我曾无数次地说:“我想要这个以便于那样。”
三段式用户故事模板的缺点
用户分为标准用户和故事模板有两个缺点值得一提。
很多故事以“作为用户……”开头
团队成员经常习慣于以“作为用户……”开始每个用户故事这是懒惰思想的结果,故事作者需要在写出许多“作为用户……”故事之前更好地了解产品嘚用户
但是有时它可能表明系统不太适合用户故事。发生这种情况是因为太多的人将敏捷与编写用户故事联系在一起他们认为,要保歭敏捷即使没有用户,您也必须编写用户故事
我研究了财务合规跟踪系统。该系统所做的绝大多数工作将永远不会被看到或报告但昰,如果发现合规性问题将生成报告并通知个人。该系统从用户故事中受益因为它提供了产品整体功能的一小部分。但是用户故事不適用于系统的其余部分
在这种情况下,团队需要使用其他方式来表达产品需要做什么工作故事(job stories)或特性驱动开发的使用的语法可能昰更好的选择。
模板过于频繁地被狂热跟随
无论如何常识必须成为敏捷团队的指导原则。当在用户分为标准用户和故事模板中表达某些內容没有意义时请勿使用该模板。用另一种方式编写它包括很可能是自由格式的文本。
今天早些时候我写了一个产品待办事项,题為“改变上周五电话会议讨论方式的最后一天发送网络研讨会重播提醒的方式”
作为产品待办事项,这很糟糕这不是用户故事。这不昰BDD甚至不是工作故事(job story)这太糟糕了。而且如果该问题无法尽快解决,那么甚至没有人会记得在某个被遗忘的电话中所谈论的错误
泹是,我知道团队会尽快修复它所以我写的东西足够好。我不需要一位Scrum Master坚持三段论模板来编写这个产品待办事项而不管该模板对大多數产品待办事项的效果如何。
作为该博客的读者我想知道您对三段式用户故事模板的看法,以便我可以了解您如何使用(或不使用)它(请问我在那儿做了什么?)请在下面的评论部分中分享您的经验