如果客户要求我使用Scrum给出整个项目的完成时间估计,我能做到吗?
例如,使用(可怕的)瀑布方法,我会有一个技术规范来给出一个相当不错的估计。
如果客户要求我使用Scrum给出整个项目的完成时间估计,我能做到吗?
例如,使用(可怕的)瀑布方法,我会有一个技术规范来给出一个相当不错的估计。
是的,你可以(并且确实)估算Scrum项目。[注意,“Scrum”是一个英语单词,不是缩写或首字母缩略词。它不应该全部大写。]
以下是估算Scrum项目的方法。
写下待办事项清单。
将待办事项清单分解成Sprint。
按价值从高到低对Sprint进行排序。
向客户提供这个已经排序的Sprint列表。
他们可以随时停止工作,因为每个Sprint都是有用的,而第一个Sprint是系统中最有用和最重要的部分。
这就是估算结果。这是他们自己管理的。
是和不是。我认为Scrum是一个很好的方法,可以让业主参与到Sprint计划中。
因此,在估算的情况下,很难说“我们将在30天内完成项目”。相反,业主会对第一和第二周完成的工作有期望,并且在30天内有一个“完成情况的感知”。
在我看来,这比给出30天的估计然后幸运地或者完全偏离标记更有价值。
此外,您将更好地估计即将完成的工作。Scrum的另一个好处是,您可以根据需要调整部署,以便在30天后获得更可用的产品,而不是使用瀑布流可能完全无法使用的东西。
这取决于你想要预测什么。
你可以保证n周的冲刺需要正好n周的时间,而m个冲刺需要n*m周的时间。因此,进度估算很容易。成本/工作量估算也很容易,只要确定了团队规模和项目持续时间。但是你无法可靠地承诺最终提供哪些功能以及不提供哪些功能。
对于一个项目,有四个主要的控制变量:范围、成本/工作量、进度、质量。你可以选择哪些变量是项目的驱动因素(即固定的),哪些不是。你不能将它们全部作为驱动因素,至少需要保留一个变量来允许平衡项目。
在传统的瀑布模型中,你有固定的范围(规格)和通常固定的进度(目标日期)。你可以通过增加成本/工作量(例如增加人员、加班工作)或在质量方面采取捷径来平衡项目。这些平衡因素并不呈线性关系,如果你推得太远,就会在其他领域遇到问题。
使用敏捷开发包括Scrum,您有固定的时间表(迭代或冲刺)和固定的质量水平(完成定义)。成本/工作量与团队中的人数成正比。范围是主要的平衡因素。它具有相当线性的良好特性:范围的增加或减少不会导致其他驱动程序出现非常非线性的变化。成功的关键在于功能优先级排序,以从您可以交付的范围中获得最大价值。
正如Steve McConnell在软件估算中所说,每当您需要提供一个估计时:
“专家判断”或估算是最后的资源。尝试计算实际事物和/或参考历史数据以计算有意义的数字。
无论您使用的方法是Scrum还是其他任何方法,都适用此原则。