我试图在我的团队中练习Scrum。但我的同事问我:
我们的软件有明确的要求。那么为什么我们应该使用scrum
我怎样才能说服他这个案子。
答案 0 :(得分:3)
没有 Scrum只是团队合作的一种方式。如果你的团队已经在一起工作,那么就没有充分的理由转向scrum。
scrum的好处在于它可以帮助团队将大问题转化为一系列较小的问题,并按照优先顺序及时地为这些问题提供解决方案。它还可以让您更快地查看是否要尽快构建错误的内容,以便您仍有时间进行更正。
如果软件行业在过去几十年中学到了什么,那就是需求一直在变化。 Scrum旨在接受这一事实,而不是希望它不会发生。
从管理的角度来看,scrum允许项目经理更准确地预测项目整体何时完成。历史表明,人们的任务越小,估计就越容易。如果您已经了解并理解了您的要求,但是您正在构建一些估计需要两个月的东西,那么可能需要两个月,但可能需要三个月。或者四个。或八。通过制作故事和调整大小的过程可能会产生更准确的估计。
所有这一切,如果你的团队不想,你肯定应该不使用scrum。 Scrum在团队使用时工作,而不是个人集合。如果整个团队不在一起想要遵循scrum,那么scrum就会无效。
答案 1 :(得分:1)
敏捷可能是一件好事有很多原因,假设虽然它100%明确了要求是什么,但不清楚最有价值的执行顺序是什么,交付早期的部分产品可能已经提前返回价值。
某些功能的早期发送可能已经解锁了价值。可以通过首先释放管理模块,然后是打印模块,然后是报告模块,最后是基础业务逻辑来构建应用程序。在该顺序中,将存在0值,直到实际实现业务逻辑。其他模块一直在收集灰尘,它们的价值会被推迟。通过首先发布业务逻辑和部分报告和管理模块,您可以更早地将应用程序投入生产并更快地释放价值。您可以通过这种方式获得更高的投资回报率。
早期交付允许您证明您的架构,部署和基础架构。通过以较小的比特递送您的产品(可能允许您的一小部分用户尽早使用它),您可以尽早证明您的架构(从而降低风险),并且您有多个机会来测试您的部署脚本,确保一旦您的应用程序使用频繁,您可以在更短的时间内部署修复程序,并且对最终用户的影响要小得多。
早期发送提供反馈。您认为(假设)要求是100%明确的。在许多情况下,他们很少,或者通过看到实际的应用程序可能意识到它实际上并没有完全做它需要做的事情。通过定期显示工作软件,您有机会不断证明您100%了解要求。如果你做更传统的瀑布,你赌博你知道要求。以敏捷的方式,错误的风险要低得多,因为你很早就知道自己错了,仍然有机会改变方向。
许多应用程序的60%功能从未使用。以微软为例。有多少人实际使用了可扩展性模型?嵌入式XML?还有一些随着时间的推移潜入产品的功能。确实,每个功能都有一个市场,但很多人可以使用更高级的写字板版本。除非你拥有微软的市场范围,否则构建一个具有瀑布方式的所有单词功能然后发布它的应用程序将会变得非常非常昂贵。敏捷地做到这一点可以让你提前停止,从不构建不需要的功能。对于许多瀑布式开发项目,要求通常不仅仅是实际需要的。很多"商业"要求他们知道他们最终会得到更多,比许多人想象的更安全,并且他们将所有他们认为可能需要的东西添加到需求规范中。
< / LI>您能否证明100%已知要求的假设是正确的?我假设一个人不能。特别是因为要求往往会随着时间而变化。但是对于小型项目,或者非常明确的工作(可能需要法律或某种认证),人们可以准确地知道需要什么,然后建立它。
您只提到要求已知。这是否意味着您的开发人员已经确切知道如何构建它?你有没有弄清楚如何以及如果你可以测试它?你知道最有用的交付顺序是什么吗?您的基础架构是否能够处理该应用程序?所有这些问题都可以通过构建实际产品的小部分并持续集成来轻松解决。
当然,您可以在纸上确切地确定所有部件是如何组合在一起的,在非常罕见的情况下,当您了解域,使用经过验证的技术(通常是稍微较旧的技术)并且已经构建了一些东西时至少3次非常相似。在那些情况下,如果您允许自己通过使用旧东西来创造一些技术债务,那么您可能没有任何形式的敏捷。
现在你是否需要在整个过程中进行大量的Backlog改进?也许不是,如果已经知道很多要求。由于所有其他充分的理由,我说通过灵活的方式工作会有很多好处,特别是如果假设所有要求都已知。
如果你的团队购买了这些原因,那么一定要敏捷。无论是scrum还是别的什么。至少定期交付并确保您的工作得到持续测试和部署。如果您的团队没有购买它,请尝试以试图接受上述要点的方式构建您的瀑布项目。定期交付,确保您的工作得到持续测试和部署......等等......听起来很敏捷,如果不是至少迭代和增量交付;)。