当需求明确时我们是否应该使用 Scrum
Should we use scrum when requirement is clear
我尝试在我的团队中实践 Scrum。但是同事问我:
Our software has clearly requirement. So why we should use scrum
这个案子怎么说服他
没有人应该使用 Scrum,就像他们 应该 使用 vi 或 emacs、Tide 洗衣粉或松脆的花生酱一样。 Scrum 只是团队合作的众多方式之一。如果您的团队已经合作良好,可能没有充分的理由切换到 Scrum。
Scrum 的好处在于,它可以帮助团队将一个大问题分解为一系列较小的问题,并及时、按优先顺序为这些问题提供解决方案。它还可以更容易地看到您是否正在构建错误的东西,越早越好,这样您就有时间进行更正。
如果说软件行业在过去几十年中学到了什么,那就是需求一直在变化。 Scrum 旨在接受这一事实,而不是希望它不会发生。
从管理的角度来看,scrum 允许项目经理更准确地预测整个项目何时完成。历史表明,人们越是小的任务,就越容易估计。如果您已经有了并了解您的需求,但您正在构建您估计需要两个月的东西,可能需要两个月,但很可能需要三个。或者四个。或者八个。经历制作故事和调整故事大小的过程可能会产生更准确的估计。
综上所述,如果您的团队不想,您绝对应该不使用 Scrum。 Scrum 在被 团队 使用时有效,而不是个人集合。如果团队作为一个整体没有团结一致想要遵循 Scrum,Scrum 将是无效的。
敏捷可能是一件好事的原因有很多,假设虽然 100% 清楚需求是什么,但不清楚最有价值的执行顺序是什么,并且尽早交付部分产品可能已经return 值早。
一些功能的提前交付可能已经释放了价值。可以通过首先发布管理模块,然后是打印模块,然后是报告模块,最后是底层业务逻辑来构建应用程序。按照该顺序,在业务逻辑实际实现之前,值将为 0。一直以来,其他模块都会积灰,它们的值会延迟。通过首先发布业务逻辑和部分报告和管理模块,您可以更早地将应用程序投入生产并更快地释放价值。这样你的投资回报率会更高。
提前交付可以让您证明您的架构、部署和基础设施。通过以更小的形式交付您的产品(这可能允许您的一小部分用户及早使用它),您可以及早证明您的架构(从而降低风险),并且您有多个机会来测试您的部署脚本,确保一旦您应用程序被大量使用,您可以在更短的时间内部署修复程序,并且对最终用户的影响要小得多。
提前发货给予反馈。您认为(假设)需求是 100% 明确的。在许多情况下,他们很少这样做,或者通过在其中看到实际的应用程序可能会意识到它实际上并没有完全按照需要做。通过定期展示工作软件,您有机会不断证明您 100% 了解需求。如果你做更传统的瀑布,你就赌你知道要求。在敏捷方式中,犯错的风险要低得多,因为您会及早知道自己错了,并且仍有机会改变方向。
许多应用程序的 60% 功能从未使用过。以微软word为例。有多少人实际使用可扩展性模型?嵌入式 XML?随着时间的推移,还有很多这些功能会潜入产品中。诚然,这些功能中的每一个都有市场,但是很多人可以使用稍微更高级的写字板版本。除非您拥有 Microsoft 的市场影响力,否则以瀑布方式构建具有 Word 所有功能的应用程序然后发布它,将非常非常昂贵。敏捷地做这件事可以让你早点停下来,永远不要构建不需要的功能。对于许多瀑布式开发项目,需求通常比实际需要的要多。许多 "Business" 要求的比他们最终知道的要多,比许多人认为的遗憾更安全,他们将他们认为可能需要的所有内容添加到需求规范中。
你能证明100%已知需求的假设是正确的吗?我想一个人不能。特别是因为需求往往会随着时间而改变。但是对于小型项目,或者对于非常明确的工作(可能是法律或某种认证所要求的),人们可以确切地知道需要什么并直接构建它。
你只说需求是已知的。这是否意味着您的开发人员已经确切地知道如何构建它?您是否确切地知道如何以及是否可以测试它?你知道最有用的交付顺序是什么吗?您的基础架构能够处理该应用程序吗?所有这些问题都可以通过构建实际产品的一小部分并不断集成它们来轻松回答。
当然,当您了解领域、使用经过验证的技术(通常是稍旧的技术)并且已经拥有至少构建了 3 次非常相似的东西。在那些情况下,如果您允许自己通过使用旧东西创造一些技术债务,您可能不需要任何形式的敏捷。
现在您是否需要在此过程中进行大量 Backlog 细化?也许不是,如果很多要求已经知道的话。出于所有其他充分的理由,我说以敏捷的方式工作有很多好处,尤其是在假设所有需求都已知的情况下。
如果您的团队相信这些原因,那么一定要采用敏捷方法。无论是 Scrum 还是其他什么。至少要定期交付并确保你的工作得到持续测试和部署。如果您的团队不买账,请尝试以包含上述要点的方式构建您的瀑布项目。定期交付,确保您的工作得到持续测试和部署……等等……这听起来很敏捷,如果不是至少是迭代和增量交付的话;)。
我尝试在我的团队中实践 Scrum。但是同事问我:
Our software has clearly requirement. So why we should use scrum
这个案子怎么说服他
没有人应该使用 Scrum,就像他们 应该 使用 vi 或 emacs、Tide 洗衣粉或松脆的花生酱一样。 Scrum 只是团队合作的众多方式之一。如果您的团队已经合作良好,可能没有充分的理由切换到 Scrum。
Scrum 的好处在于,它可以帮助团队将一个大问题分解为一系列较小的问题,并及时、按优先顺序为这些问题提供解决方案。它还可以更容易地看到您是否正在构建错误的东西,越早越好,这样您就有时间进行更正。
如果说软件行业在过去几十年中学到了什么,那就是需求一直在变化。 Scrum 旨在接受这一事实,而不是希望它不会发生。
从管理的角度来看,scrum 允许项目经理更准确地预测整个项目何时完成。历史表明,人们越是小的任务,就越容易估计。如果您已经有了并了解您的需求,但您正在构建您估计需要两个月的东西,可能需要两个月,但很可能需要三个。或者四个。或者八个。经历制作故事和调整故事大小的过程可能会产生更准确的估计。
综上所述,如果您的团队不想,您绝对应该不使用 Scrum。 Scrum 在被 团队 使用时有效,而不是个人集合。如果团队作为一个整体没有团结一致想要遵循 Scrum,Scrum 将是无效的。
敏捷可能是一件好事的原因有很多,假设虽然 100% 清楚需求是什么,但不清楚最有价值的执行顺序是什么,并且尽早交付部分产品可能已经return 值早。
一些功能的提前交付可能已经释放了价值。可以通过首先发布管理模块,然后是打印模块,然后是报告模块,最后是底层业务逻辑来构建应用程序。按照该顺序,在业务逻辑实际实现之前,值将为 0。一直以来,其他模块都会积灰,它们的值会延迟。通过首先发布业务逻辑和部分报告和管理模块,您可以更早地将应用程序投入生产并更快地释放价值。这样你的投资回报率会更高。
提前交付可以让您证明您的架构、部署和基础设施。通过以更小的形式交付您的产品(这可能允许您的一小部分用户及早使用它),您可以及早证明您的架构(从而降低风险),并且您有多个机会来测试您的部署脚本,确保一旦您应用程序被大量使用,您可以在更短的时间内部署修复程序,并且对最终用户的影响要小得多。
提前发货给予反馈。您认为(假设)需求是 100% 明确的。在许多情况下,他们很少这样做,或者通过在其中看到实际的应用程序可能会意识到它实际上并没有完全按照需要做。通过定期展示工作软件,您有机会不断证明您 100% 了解需求。如果你做更传统的瀑布,你就赌你知道要求。在敏捷方式中,犯错的风险要低得多,因为您会及早知道自己错了,并且仍有机会改变方向。
许多应用程序的 60% 功能从未使用过。以微软word为例。有多少人实际使用可扩展性模型?嵌入式 XML?随着时间的推移,还有很多这些功能会潜入产品中。诚然,这些功能中的每一个都有市场,但是很多人可以使用稍微更高级的写字板版本。除非您拥有 Microsoft 的市场影响力,否则以瀑布方式构建具有 Word 所有功能的应用程序然后发布它,将非常非常昂贵。敏捷地做这件事可以让你早点停下来,永远不要构建不需要的功能。对于许多瀑布式开发项目,需求通常比实际需要的要多。许多 "Business" 要求的比他们最终知道的要多,比许多人认为的遗憾更安全,他们将他们认为可能需要的所有内容添加到需求规范中。
你能证明100%已知需求的假设是正确的吗?我想一个人不能。特别是因为需求往往会随着时间而改变。但是对于小型项目,或者对于非常明确的工作(可能是法律或某种认证所要求的),人们可以确切地知道需要什么并直接构建它。
你只说需求是已知的。这是否意味着您的开发人员已经确切地知道如何构建它?您是否确切地知道如何以及是否可以测试它?你知道最有用的交付顺序是什么吗?您的基础架构能够处理该应用程序吗?所有这些问题都可以通过构建实际产品的一小部分并不断集成它们来轻松回答。
当然,当您了解领域、使用经过验证的技术(通常是稍旧的技术)并且已经拥有至少构建了 3 次非常相似的东西。在那些情况下,如果您允许自己通过使用旧东西创造一些技术债务,您可能不需要任何形式的敏捷。
现在您是否需要在此过程中进行大量 Backlog 细化?也许不是,如果很多要求已经知道的话。出于所有其他充分的理由,我说以敏捷的方式工作有很多好处,尤其是在假设所有需求都已知的情况下。
如果您的团队相信这些原因,那么一定要采用敏捷方法。无论是 Scrum 还是其他什么。至少要定期交付并确保你的工作得到持续测试和部署。如果您的团队不买账,请尝试以包含上述要点的方式构建您的瀑布项目。定期交付,确保您的工作得到持续测试和部署……等等……这听起来很敏捷,如果不是至少是迭代和增量交付的话;)。