将错误修复整合到Scrum过程中的最佳方法?
在过去的几天里,我一直在学习和阅读有关Scrum的信息,并阅读了Sprint计划和任务。 我想到的一个问题是如何处理Scrum中的错误。 Henrik Kniberg列举了一些处理这个问题的方法,在他的非常漂亮的Scrum和XP中的Trenches :
- 产品所有者打印出最高优先级的Jira项目,将它们带到冲刺计划会议,并与其他报道一起放在墙上(从而隐含指定这些项目与其他报道相比的优先级)。
- 产品负责人创build引用Jira项目的故事。 例如“修复最关键的后台报告错误,Jira-124,Jira-126和Jira-180”。
- 错误修复被认为是冲刺之外的,即团队保持足够低的焦点因子(例如50%),以确保他们有时间修复错误。 那么简单地假设,每个sprint修复Jira报告的bug都会花费一定的时间
- 将产品积压在Jira(即沟渠Excel)。 像其他故事一样对待错误。
这是否真的需要根据项目来决定还是有更好的解决scheme? 我可以想到每个方法都有问题。 有没有一种混合来自那些最好的方法? 你如何处理你的项目?
这是一个非常好的问题,当涉及到解决这个问题的不同方法时,我有一些意见。
- 用积压的东西平等地处理所有的错误在理论上可能听起来是一个好主意(在单一的地方进行工作),但在实践中效果不好。 错误通常是低级和更多的,所以如果你为每个错误创build一个单独的用户故事,那么“真实”的故事很快就会变得模糊。
- 如果以对产品所有者可见的方式完成,则每个sprint中为显示修补而保留的显式时间都可以。 应该在日常Scrum中提到错误,并讨论在Sprint评估过程中修复的错误。 否则,产品所有者将不会意识到项目正在进行。
- 将整个积压工作放在缺陷跟踪工具中会导致与1相同的问题。而且,大多数缺陷追踪器都没有考虑到Scrum的devise,因此使用它们可能会很痛苦。
我们发现最令人满意的解决scheme是在每个Sprint上放置一个名为“Tickets”或“Bugs”的用户故事。 然后,这样一个故事可以分为描述特定错误的低级任务(如果在计划中是已知的),也可以分为保留给定数量小时的元任务来修复一般错误。 通过这种方式,产品所有者可以看到stream程,而耗尽图表反映了进度。
只要记住要无情地closures所有实际上是新function的“bug”,并为它们创build新的积压项目。 另外,请确保在sprint结束之前修复所有针对当前sprint报告的bug,以便将sprint视为已完成。
其实我认为最好的答案是从这个问题jpeacock 您是否指望错误修复的时间花在Scrum上?
让我引用它:
- 如果错误很容易/快速修复(一个class轮等),然后就修复它。
- 如果这个错误不是微不足道的,而是一个阻止者,那么把它添加到backlog中。
- 如果这个bug是一个拦截器,那么添加一个任务(到当前的冲刺)来捕获修复它所需的工作,并开始处理它。 这就要求把其他东西(从当前的冲刺)移动到待办事项,以考虑新的时间,因为你可用的总时间没有变化。
第一步是定义一个错误。 我教导说,一个bug只是一个错误,如果它是function性的,而不是在生产中工作的,因为它是有意devise的。 这些成为错误types的PBIs将被优先对付新的发展。 在生产中缺lessfunction是一个function,并成为一个正常的产品积压项目。 在冲刺期间发现的任何有缺陷的代码都被认为是不完整的,因为直到当前的代码完成,你才会继续下一个故事。 因为团队一直在处理有问题的代码,所以没有必要跟踪这些短跑中的缺陷。 Post-its可以在这里用于快速提醒队友之间的超级方便。 修复破碎的代码总是先写过新的代码。 如果这些缺陷是由于误解故事造成的,那么在开始故事之前,你需要在你的接受条件上工作。
库存是浪费。 错误跟踪是库存。 错误跟踪是浪费。
用积压的东西平等地处理所有的错误在理论上可能听起来是一个好主意(在单一的地方进行工作),但在实践中效果不好。 错误通常是低级和更多的,所以如果你为每个错误创build一个单独的用户故事,那么“真实”的故事很快就会变得模糊。
如果你有更多的bug比function,那么你需要工作的工程实践。 这是一种其他的错误,跟踪不是答案。 深入挖掘 其实虫总是臭。 他们不是很酷,如果你有很多人,你需要find根本原因,消除这些原因,并停止重点跟踪错误。
不要追踪列表中的缺陷,find并修复它们 – Mary Poppendieck
事实上,如果库存是浪费,那么缺陷库存呢?
这就是为什么我总是试图通过testing驱动开发和持续集成来实现“ 停止”思路,以便我们find并修复大多数缺陷,而不是将它们放在返工列表中。
而且当缺陷通过时,我们在编写新代码之前修复它们(无论如何都不会有bug的故事)。 然后,我们尝试修复我们的stream程,使其更加防止错误,并在发生缺陷时进行检测。
没有一个适合所有的解决scheme,每个项目都是不同的。 错误也可以从关键任务分类到几乎不值得修复。
除非系统运行的关键,否则我更喜欢bug成为故事卡片。 这使得function开发与错误修复的优先级真正明确。 在错误修复被认为是“冲刺之外”的情况下,错误修复可能会朝着解决真正微不足道的错误的方向发展,而真正重要的业务function尚未开发。
我们已经通过一些排列之前,作为故事的方法设置错误。 尝试一些不同的东西,并在团队复古会议上重播。
在我们的例子(绿地开发,2-3个开发者)中发现的错误被写下来,明确地标记为一个错误,根据它们的严重程度,他们被分配到下一个迭代或留在积压。 如果出现严重和紧急的错误,则将其添加到正在进行的迭代中。
我不知道为什么像修复错误一样简单,规则复杂。Scrum有很less的规则,记得吗? 每个function,支持,build议或缺陷是Scrum中的积压问题,没有区别。 所以,正如Scrum指南所说:Sprint中的任务不会局限于计划会议期间所做的决定,每日Scrum可以帮助人们在他们的方式中讨论“障碍”。
为什么?
因此,如果您想将缺陷(即积压问题)带入PBI或保留在此Sprint中并交付给您,那么您可以作为一个团队理性地进行讨论和思考。
更好的问题是如何在开发阶段停止创build错误? 看到 – > http://bit.ly/UoTa4n
如果您正在识别和logging错误,则必须在未来的某个时间进行分类和修复。 这导致“稳定冲刺”,即一个整体冲刺只是为了修复错误。 或者你可以将它们添加回积压,并将它们作为未来冲刺的一部分。 这也意味着你将提供和期望得到签署和发布已知错误的软件(P3和P4又名化妆品和次要)。
这不是很敏捷吗?
我已经在我们的项目中提出了这个想法,以便每三秒就推出一个短的bug修复冲刺。 我们目前的冲刺是三个星期。
这个想法是,它将允许所有的开发人员集中在一起修复bug,让他们专注于定期冲刺的新故事,并定期关注减less技术债务。
错误修复将被分组到相关的故事中,并按优先顺序排列。 由于开发人员努力确定错误修复的大小,而没有陷入困境,无法理解缺陷的本质,所以重点不在于在冲刺之前进行调整。
有没有人尝试过,或者有什么反馈意见呢?
干杯,凯文。