Project management 破坏一个项目';s任务中的第一个用户故事

Project management 破坏一个项目';s任务中的第一个用户故事,project-management,agile,scrum,user-stories,Project Management,Agile,Scrum,User Stories,我正在从头开始一个新项目,并编写了用户存储来描述给定用户将如何与系统交互。但是,我很难理解如何将第一个用户故事分解为任务,而不让第一个故事成为史诗 例如,如果我在造一辆车,第一个用户故事说“作为一名驾驶员,我希望能够改变运动方向,这样我就不会撞到东西。”这就意味着一个用户界面(方向盘),但也意味着运动(车轮)和将它们连接在一起所需的一切(车轴、车架、连杆等)。最后,第一个用户故事似乎总是占项目的40%左右,因为它包含了太多关于底层架构的信息 如何为一个新项目分解用户故事,使第一个故事不会成为代表

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

例如,如果我在造一辆车,第一个用户故事说“作为一名驾驶员,我希望能够改变运动方向,这样我就不会撞到东西。”这就意味着一个用户界面(方向盘),但也意味着运动(车轮)和将它们连接在一起所需的一切(车轴、车架、连杆等)。最后,第一个用户故事似乎总是占项目的40%左右,因为它包含了太多关于底层架构的信息


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

当我们以Scrum管理风格启动项目时,第一组任务总是很广泛,或者如您所描述的:史诗。这是不可避免的,任何项目的框架通常是最重要、最大和最耗时的部分,但它支持项目的其余部分。为了减少工作量,看看你是否能列出最重要的部分。然后将这些任务定义为起点。因此,您有几个任务作为广阔开端的起点。希望这有意义

我过去遇到过这个问题的十字路口。用户故事应该是孤立的,这样你就可以在没有任何其他故事的情况下,以任何顺序进行,等等。但我发现,这样做只会让一切变得更加复杂。对我来说,这属于敏捷宣言的“过程和工具上的个人和交互”部分——或者至少是我对它的解释

最终的目标是船。要发布,您必须构建,而要构建,您必须停止使用scrum,只需完成工作并确保跟踪它

所以我们所做的就是打破了故事的基本规则,我们制作了一些科技故事,比如“创建一个初步的模式”。我们还声明了一些故事依赖于其他故事,并在故事卡的背面指出了这一点


最后,我觉得这种类型的故事很少,而另一种选择的困难证明了例外的合理性

一个用户故事描述了
什么
,而一个任务更多的是关于
如何

  • 没有完美的公式,只需添加任何描述用户故事如何实现、记录或测试的任务即可
  • 请记住,一项任务应以小时为单位进行估算,因此请尝试相应地扩展和细化任务
如果你觉得你的故事有太多的任务(即使你有1到8个小时的任务),那么也许你应该首先考虑改写你的用户故事,因为它可能太复杂了。
祝你好运

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

例如,在最近的一个项目中,我们必须开发一个应用程序,该应用程序涉及对各种网站进行索引,并将它们与用户创建的过滤器进行匹配,最后向用户发出匹配警报(这就是谷歌类固醇警报)

如果你从一个角度来看,只有一个故事——“作为一个用户,我希望从匹配的页面中获取警报”。但从另一个角度来看,“我们想要减轻哪些风险”。第一个风险是,与谷歌提醒相比,用户无法获得相关或更好的点击率。第二个风险是学习建造这个系统的技术

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

实际上,这里可能会有一些来回的小故事来捕捉学习,比如“作为一个用户,我希望URL中的匹配项具有更高的优先级”等等。。这些故事来自于我们反复讨论早期用户认为“相关点击”的反馈。p> 接下来,我们将其扩展到“作为一个用户,我想要特定网站的点击率”,我们构建了索引体系结构来抓取用户指定的网站,并在此基础上进行点击匹配

第三个故事是“作为一个用户,我想定义我自己的过滤器”,我们构建了系统的这一部分

通过这种方式,我们能够一块一块地构建架构。在最初的大部分时间里,只有早期用户才能使用该系统,许多数据都是硬编码的

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


长话短说,您首先实现的故事只能实现最终故事的一小部分,硬编码和搭建其他一切。然后你可以不断地重复它,直到你得到你可能真正向公众发布的故事。

你可能想把你的故事看作是系统的一个垂直部分。一个故事可能(并且经常会)触及系统所有架构层中的组件。因此,您可能希望将您的任务视为在您的故事涉及的每个组件上需要完成的工作

例如,假设你有这样一个故事,为了能够轻松地关注我朋友的推文,作为注册用户,我想自动关注我所有拥有推文帐户的gmail联系人

为了实现这一点,您必须通过UI层、服务层,在数据层中保存一些数据,并对twitter和gm进行API调用