打破项目的第一个用户故事的任务

我从头开始一个新的项目,并写了用户存储来描述给定的用户将如何与系统进行交互。 但是,我很难理解如何将第一个用户故事分解成任务,而没有第一个故事成为史诗。

例如,如果我正在build造一辆汽车,并且第一个用户故事会说“像一个司机一样,我希望能够改变运动的方向,这样我就不会碰到什么东西”,这意味着用户接口(方向盘),还有运动(车轮)以及将它们连接在一起的所有东西(车轴,车架,联动装置等)。 最终,第一个用户故事似乎总是代表了大约40%的项目,因为它隐含了太多的底层架构。

你如何分解一个新的项目的用户故事,使第一个不成为代表你的整个基础架构的史诗?

你可能想把你的故事看作是系统的一个垂直切片。 一个故事可能(并经常会)触及系统所有架构层的组件。 因此,您可能希望将自己的任务看作是您的故事涉及的每个组件都需要完成的工作

例如,假设你有一个类似的故事为了能够轻松地跟踪我的朋友的鸣叫,作为一个注册用户,我想要自动关注所有有Twitter帐户的Gmail联系人。

为了做到这一点,你将不得不通过UI层,服务层,持久化数据层中的一些数据,并对twitter和gmail进行API调用。

你的任务可能是:

  • 添加一个选项到菜单
  • 添加一个新的gmailauthentication屏幕
  • 添加一个twitter身份validation屏幕
  • 添加联系人select屏幕
  • 添加一个调用你的服务层的控制器
  • 写一个新的服务来完成这项工作
  • 将联系人保存到数据库
  • 修改您现有的gmail API调用服务来获取联系人
  • 添加一个twitter API调用服务来跟踪选定的联系人

那里:那里有9个可能的任务。 现在,一般来说,你希望你的任务每天大概需要2天到2天,而且有一天会有偏差(最佳实践,大小调整)。 根据难度的不同,你可能会进一步分解这些任务,或者如果它们是两个简单的(也许这两个API调用服务非常简单,你只需要修改外部API服务 )就可以组合起来。

无论如何,这是如何打破故事的原始草图。

编辑:

为了回答更多的问题,我把问题分解成任务,我写了一篇关于它的博客文章,并希望在这里分享。 我详细阐述了打破这个故事所需的步骤。 链接在这里 。

当我们开始使用Scrumpipe理风格的项目时,第一组任务总是很宽泛,或者如你所描述的那样:史诗。 这是不可避免的,任何项目的框架通常是最重要,最大和最耗时的部分,但它支持项目的其余部分。 为了减less压倒性多less的规模,看看你是否可以列出最基本的部分。 然后着手将这些任务定义为出发点。 因此,作为一个广泛的开端,你有几项任务。 希望是有道理的!

开始实施的故事可以随着时间的推移而改进。 你不需要认为每个故事都必须是用户将要使用的最终版本。

例如,在最近的一个项目中,我们不得不开发一个应用程序,它涉及索引各种网站,并将它们与用户创build的filter进行匹配,并最终提醒用户匹配(事件类似于谷歌的类固醇警报)。

如果你从一个angular度来看,只有一个故事 – “作为一个用户,我想从匹配的页面获取警报”。 但是从另一个angular度来看,“我们想要减轻的风险是什么”。 第一个风险是用户不会得到相关或更好的命中相比,谷歌警报。 第二个风险是学习技术来build立这个。

所以我们的第一个用户故事就是“作为一个用户,我想要相关的点击”,然后我们在一组硬编码页面和硬编码filter上为一些早期用户构build了匹配匹配algorithm,并得到了他们的反馈。

实际上,在这里可能会有一些来自多个小故事来捕捉像“作为一个用户,我更想优先考虑URL中的匹配”的学习等等。这些故事来自反馈,因为我们迭代什么早期用户认为“相关点击”。

接下来,我们将其扩展为“作为用户我要从特定网站点击”,并且build立了索引架构来抓取用户指定的网站并进行匹配。

第三个故事是“作为一个用户,我想定义我自己的filter”,并且我们构build了这个系统的一部分。

通过这种方式,我们能够逐个build立起build筑。 通过最初的部分,只有早期的用户可以使用该系统,并且许多数据被硬编码等等。

一点之后,早期的用户可以完全使用该系统。 然后,我们添加了允许新用户注册并向公众开放的故事。

长话短说,你首先执行的故事只能实现最后一个故事的一小部分,硬编码和脚手架的一切。 然后,你可以随着时间的推移迭代,直到你得到你可能真正向公众发布的故事。

用户故事描述的what一个任务更多的是关于how

  • 没有完美的公式,只需添加任何描述用户故事将how实施,logging或testing的任务即可。
  • 请记住,任务应该在几个小时内估计,所以请尝试按比例缩放和细化任务。

如果你觉得你的故事任务太多(即使你有1-8个小时的任务),那么也许你应该考虑重写你的用户故事,因为它可能太复杂了。

祝你好运

过去我已经到了这个问题的十字路口。 用户故事应该是孤立的,所以你可以做任何事情,没有任何其他的故事,以任何顺序,等等。但我发现做这一切只是使一切更复杂。 对我来说,这属于敏捷宣言的“个人与交互而不是过程与工具” – 或者至less是我对它的解释。

最终目标是船舶。 而要发货,你必须build立,并build立你必须停止scrum,只是把东西做完,并确保你跟踪它。

所以我们所做的就是打破一个基本的故事规则,并且制作了一些技术故事,比如“创build一个初步的模式”。 我们还宣布有些故事是依赖于别人的,并且注意到在故事卡的背面。

最后,我觉得这种types的故事很less,而且其他方面的困难也是有道理的。