在Scrum中,是否应该将诸如开发环境设置和功能开发之类的任务作为子任务管理在实际用户故事中?


23

有时在项目中,我们需要花时间在以下任务上:

  1. 探索替代框架和工具
  2. 学习为项目选择的框架和工具
  3. 设置服务器和项目基础结构(版本控制,构建环境,数据库等)

如果我们正在使用用户故事,那么所有这些工作应该去哪儿?

一种选择是使它们全部成为第一个用户故事的一部分(例如,制作应用程序主页)。另一个选择是对这些任务执行加急操作。第三种选择是使任务成为问题 / 障碍(例如,尚未选择的开发环境)而不是用户故事的一部分。


我更改了一些问题以使其更加清楚。.现在问题已成为实际用户故事中的子任务,而不是故事
Asim Ghaffar 2012年

Answers:


12

在过去的一年中,我们对这个问题进行了很多思考。

虽然我同意在项目开始之前应该存在一个基本框架,但在实际使用中它可以成为项目本身的一部分。因此,您必须以某种方式进行管理。

尽管有时将项目设置与用户案例相结合可能是有道理的,但有时我们还是决定将一些简单的任务添加到产品待办事项列表中,并获得与用户案例相同的关注。我们知道这些技术任务有时是必要的,但是无论如何都必须证明它们是合理的。如果团队认为实现某个目标绝对必要,那么他们将成为冲刺的一部分。

很难说什么最适合您,所以尝试一下!目前,峰值可能已足够,但我认为您稍后将遇到相同的问题,因此请提前计划。执行作为此类活动占位符的任务。为了将任务与故事分开,我将根据自己的经验对它们进行快速比较。

任务:任务是技术上的必需品。可能是用于配置管理或常规项目设置的事情,例如为提交设置存储库,或者将您见过的最热门的代码审查工具添加到开发过程中。与用户故事相同,在计划中应考虑任务。如果团队可以说服产品所有者使用最新,最好的代码审查工具来消除长时间的结对编程会话或亲自进行代码审查,从而提高性能并提高团队沟通水平,那么它将引起产品所有者的关注。

故事:故事仅专注于业务角度,总是为客户带来可见的价值。内部质量与创造业务价值息息相关。

我们甚至将故事点分配给任务,有时甚至像处理故事一样使用它们。

最后,在您的情况下,我将寻求该解决方案(也可以普遍应用):

  1. 将“设置”和技术资料分开进行任务(不会直接为产品所有者带来业务价值的资料)。
  2. 也许在项目设置之前做一些准备工作,以使最重要的工具到位(SCM,开发工具,过程定义,编码标准等)。
  3. 接受这些任务在项目期间弹出,并通过进行除故事以外的单独的“类型”活动来为此计划。

?那么,您所呼叫的任务是基本上像用户故事或错误工作项目。它是不是任务,用户故事如代码,测试中的任务,部署等
阿西姆·加法尔

2
是的,是为了区分我们称为故事的子任务“活动”的那些任务。
malte,2012年

按照MSF for Agile 5.0,您所谓的任务基本上就是一个问题
Asim Ghaffar,2012年

如果您在此处参考此描述:msdn.microsoft.com/en-us/library/dd997897.aspx-您可以称其为此处描述的问题,我认为这很合适。因此,这将使它成为你的选择数量的3
马尔特

2
第3点“在项目进行期间接受这些任务会弹出”特别重要。敏捷统一过程具有一个很好的画面来说明这一点:i.stack.imgur.com/CUVFI.jpg。请注意,他们的“环境”纪律从未真正消失。另请注意,大部分环境工作都在前面。因此,如果您突然发现在以后的阶段中要进行许多环境工作,则可能出了点问题。
迈克尔(Michael)

4

在公司中做最有意义的事情。永远不要让其他人做事成为常识的障碍。

但是我要说的是,所有这些任务听起来都应该在开始开发之前就已经发生了。因此,我质疑Scrum是否与这些任务相关。有一些正在进行的维护,例如源代码管理和数据库,但不应安排这些维护,它们应该是会发生并影响您速度的事情。

有时候,您在项目期间必须选择框架或其他任何东西,但是当我说我的意思是像nHibernate这样的框架,而不是.NET这样的框架时。在这种情况下,应该增加研究的时间和限度,更不用说简短了。尝试管理它,就好像您有几天的病情困扰着开发人员一样。

知识转移是另一个正在进行的过程,应在总体发展速度之外进行管理。


当我说框架..就像我们应该去JSF或Spring ..或当我说工具时..就像我们应该去Jboss或Glassfish ..
Asim Ghaffar 2012年

1
我不知道你的意思是“开始开发很久之前” ..当项目开始时,不应该尽快冲刺1次开始,例如在项目开始日期的2周内...并且在sprint 1中有真实的编码。
阿西姆·哈法尔

1
@AsimGhaffar:我不认为应该,不。如果您在做出决定(例如使用哪个应用程序服务器)之前就开始编码,那么您将至少做出一项决定,要求您重写大部分代码。我无法想象现在没有设置源代码控制就开始一个项目。我的意思是,如果您有开发人员围坐在一起,请找到他们可以做的富有成效的工作,例如原型。但是,除非您做出了关键的决定,否则请不要全力以赴。
pdr 2012年

“例如,应在项目开始日期的2周内尽快冲刺1个开始”。正确。这意味着您的环境已准备就绪,可以使用了。您已经熟练使用工具,进行构建和部署。如果您还不具备这些方面的技能,并且尚未设置环境,那么您就不准备开始。
S.Lott

@美国洛特嗯,我认为,一个被需要的技能,在工作中即对项目工作的同时,也没有冲刺1.学习工具的先决条件
阿西姆·加法尔

2

有一个名字可以在项目“正式”开始之前就尽可能多地做出设计决定。叫做瀑布。用户故事没有什么错,例如“作为开发人员,我需要选择一个框架,因此我们为网站提供了起点”。如果太大而无法迭代,请尝试将其分解,例如“作为开发人员,我需要在Drupal中实现一个基本主页,以便我们知道它是否符合我们的需求。”


1

一种选择是使他们成为第一用户故事的一部分,例如,制作应用程序主页。

打破了“用户故事”的概念。哪些用户参与其中?没有。这是您应该已经完成​​的工作。

另一个选择是为此加急。

不错。

第三种选择是使任务成为问题的一部分(例如尚未选择开发环境),而不是用户故事。

就计划和间接费用而言,这几乎与峰值相同。

安装不是用户故事。

这是您甚至在开始此项目之前就应该具备的功能。

除非您已准备好框架/工具和服务器,然后才能开始工作,否则您实际上无法启动项目。

我很清楚,直到签订合同,许多组织才真正成立。我也很清楚,许多组织直到签订合同后才选择技术。这些都是所有用户故事之外的低效事物。


问题与Spike不同。.将问题视为正常冲刺中计划的工作项目,但没有故事点。.问题示例:未选择SVN。我从MSF
Asim Ghaffar,2012年

“问题不一样是一个峰值”。对于单词的定义,您是正确的。但是,当您考虑在sprint 1之前计划额外的工作时,将其称为问题或高峰并不重要。选一个。抛硬币。头
S.Lott 2012年

再一次,我的意思是在Sprint 1中的故事旁边安排问题-不在Sprint 1之前。因此对于Sprint 1,我们可以选择2个用户故事和1个问题。虽然没有故事点的问题。斯派克确实将冲刺1日前..
阿西姆·加法尔

峰值或问题无关紧要。所有这些都不是用户故事的一部分。这是所有第一个冲刺之前必须完成的工作。您可以称它为尖峰或问题,无论什么使您高兴。但这不是用户的故事。
S.Lott

1

在工作中,我们使用一项任务来准备环境。对于某些人来说可能会造成混淆,但是我们使用的任务与用户故事中的任务几乎相同。该任务不属于用户故事,而是以小时为单位进行估算,必须由产品所有者同意才能完成特定的冲刺。

我们还将任务用于没有“明显”业务价值但会增加产品质量的体系结构工作,特别是对于具有大量代码库的现有产品。

这些可能不适用于您的工作环境,但对我们来说效果很好。


0

我认为您正在混合两种独立的事物。用户故事不应包含任何技术细节。

框架的选择,设置存储库和服务器以及其他任务应进入初始迭代。


您是对的,我不建议在故事说明中使用它们。.我的意思是将诸如“安装MySQL”,“评估框架”之类的任务作为第一个实际用户故事的一部分。即作为用户我想要主页,这样我就可以快速访问基本功能。
阿西姆·哈法尔

@AsimGhaffar可以在初始迭代中完成。并不是用户故事,因为用户不需要知道(也不必关心)您用来满足其需求的技术。
BЈовић

0

我最近参加了一个Scrum课程,教师建议使用一个名为Sprint 0的特殊sprint 来解决这类问题。在课程中有些人对Scrum有不同程度的经验,几乎所有有经验的人都同意,他们说他们做了同样的事情。在某些情况下,这些公司使用Sprint 0来评估该项目,并确定该项目是否可行。

对于像我这样的Scrum方法新手来说,这似乎是一个绝佳的解决方案,因为它使您摆脱了用户故事和正常冲刺的所有其他方面的困扰,例如用户反馈。

由于Sprint 0与其他Sprint的时间长度相同,因此它可以确保您不必花费太多时间进行设置,因为以后可以随时对其进行调整。要点是使您进入可以真正开始开发产品的状态。


3
引用Alistair Cockburn的话, 我有一个偷偷摸摸的感觉,当有人在一开始做没有明显商业价值的事情时,有人对他对Scrum的使用感到压力,他发明了“哦,那是Sprint Zero!” 让带有镐的农民从他家门口走开。
阿西姆·加法尔

0

探索2-3个备用框架/工具

如果您有特殊要求,有时可能会发生这种情况,您必须做一些POC来选择最佳工具来解决该要求。这就是峰值的原因,因为在不知道您将使用哪种框架的情况下,您很可能无法估计故事,而无法估计的存储则无法计划并划分为任务。

然后在学习我们为项目选择的框架时

好。这很危险。当客户为您支付软件费用时,他期望您是专业人士,他们已经知道如何使用他的工具。客户无需为您的学习或试用/失败开发方法付费。开发人员有责任在业余时间由员工而非客户支付的特殊分配时间内学习新工具。在没有通知客户的情况下将客户的钱花在学习上是不专业的。

如果您确实必须使用从未使用过的特殊功能(例如,某些客户的API或客户选择的工具),则必须告知客户价格将随着学习API的使用时间而增加。如果价格上涨幅度太大,客户可能会改变主意。

当然,我的意思不是您必须在已经使用了很多次的框架中寻找某些特定的新问题的情况。我的意思是您开始使用新的API或框架而没有花费大量时间(在项目外部)进行学习的情况。

如果您违反了此规定,那么无论如何您都可以看到它,因为您每次迭代都会带来非常少量的业务价值。如果客户不知道原因,他很可能会取消该项目。

对于内部项目,这仍然有效-您必须告知经理/企业有关学习新API或工具所需的时间。如果经理按您的正常生产力来工作,而您的生产力仅是零头,这是由于您尝试在任务期间尝试学习的新API,通常会带来非常糟糕的后果。如果某些销售人员在与客户签订合同时以正常的生产率进行计算,那显然更糟。

关于设置服务器(SVN,数据库等)

那就是您的基础架构和内部成本。启动项目时,预计已准备好基础架构。设置开发环境对客户没有任何价值,也不应该成为任何与项目相关的指标的一部分-例如Scrum的速度。我看到这是作为特殊的项目前迭代实现的,仅用于设置环境,创建基本基础结构等。


我们专注于产品开发,而不是客户项目:)。
Asim Ghaffar '02

好。在这种情况下,您仍然应该分别跟踪在学习和基础架构上花费的时间,以了解您的开销。这段时间隐藏在任务中会破坏开发过程的可见性。
Ladislav Mrnka '02
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.