在你撰写用户故事或列出待办事项清单时,有两个问题很重要:用户故事够完整吗?你如何才能知道自己已经完成了任务?
比如,我们看一看斯托尔写的用户故事:“作为特种部队的医生,我必须为学生们传授基本的生理学知识,这样他们才能了解人体。”
关于一则用户故事是否完整,我经常用一套标准来衡量。这套标准是比尔·韦克(Bill Wake)发明的。他认为,一个好的用户故事应该满足INVEST标准:
独立性(Independent)——尽可能让一个用户故事独立于其他的用户故事。用户故事之间的依赖使得制订计划、确定优先级和工作量评估都变得很困难。通常我们可以通过组合用户故事和分解用户故事来减少依赖性。
可协商性(Negotiable)——用户故事的内容要是可以协商的,用户故事不是合同。一张用户故事卡片上只是一个简短的描述,不包括太多的细节。具体的细节在沟通阶段提出。如果一张用户故事卡片带有太多的细节,实际上会限制和用户的沟通。
有价值(Valuable)——每个用户故事必须对客户具有价值。一个让用户故事有价值的好方法是让客户来写下它们。一旦一个客户意识到这是一个用户故事,并不是一个契约,而且可以进行协商的时候,他们将非常乐意写下故事。
可评估(Estimable)——开发团队需要衡量用户故事,以便确定优先级和工作量,并便于安排工作计划。
规模小(Small)——一个好的故事要尽量维持小规模,至少要确保在一个冲刺周期中能够完成。用户故事越大,在安排计划、工作量评估等方面的风险就会越大。
可测试(Testable)——一个用户故事要可以测试,以便确定它是可以完成的。如果一个用户故事不能够测试,那么你就无法知道它什么时候可以完成。
斯托尔的故事是独立的,因为他的学生们就在老挝,他不必考虑学生们前往老挝所需的直升机燃油费之类的事情,他能够独立完成任务。他的故事是可修改的,因为虽然他一开始打算为学生们传授基本的生理学知识,但如果他到了那里之后发现学生们已经具备这样的知识,或是已经有了一定的了解,那么他有其他的教学方法可以用。他的故事有价值:学生们学到人体知识之后,可以派得上用场。他的故事规模小:他只给学生们传授基本的解剖学知识,而不是教他们运用这些知识去开展外科手术。他的故事可测试:他很清楚自己想要传递的信息,也可以对学生开展一些小的测试,以便确认他们是否真的吸收了这些信息。
每个有待落实的用户故事都应该要有“完整”的定义(比如是否符合INVEST标准),同样,最后的结果也要符合“完成的定义”(比如必须符合什么条件、通过什么测试才能结束等)。在现实中,我们发现,如果用户故事足够完整,那么团队在落实项目的过程中速度就会加快一倍。此外,如果一个阶段的冲刺完成了相应的用户故事,那么,这个团队的速度会再次加快一倍。这就是我们能够达到事半功倍之效的一个原因。