无论是按时完成软件项目还是成本,都有很多情况需要进行估算。我认为你不应该根据估计在软件项目中做出决策。我将向您解释有哪些替代方案。
我们会按时交货吗?
这是开发团队在项目开始和整个项目过程中不断被问到的关键问题之一。这个问题是许多人认为必须进行估算的主要原因。值得怀疑的是,您希望通过基于猜测进行估计来获得可靠的预测。我们都知道,或者至少我们怀疑,这些数字通常是编造的。充其量,它们是基于类似但绝不相同的项目的经验。事实通常是您还不知道或理解当前的解决方案。人们试图通过称这些估计为“有根据的猜测”或“快速而肮脏的”来让自己平静下来。整件事只是为了能够证明基于假设做出重要决策的合理性。
开发软件本质上是不可预测和非重复的。当开发软件时,开发人员不能简单地将他们的工作分解为相同的重复单元,就像组装椅子时的情况一样。与椅子不同,软件的确切最终产品是未知的。一个“软件生产部分”与下一个“软件生产部分”并不相同。软件开发是一个创造性且多变的过程,解决方案通常只有在开发过程中才会显现出来。这就是为什么精确定义开发项 邮件营销给医生 目的范围非常困难。如果人们接受范围必须是可变的以适应紧急设计和不断变化的需求,那么也必须接受“交付日期”也是一个变量。我们试图在“按时”和“按预算”交付众所周知的范围的同时实现这一目标。
如果“按时”和“按预算”是基于估计,那么开发软件所需的时间可能比最初估计的时间要长。然而,完成也可以更快或保持在估计范围内。
然而,最终我们必须问,估计的正确性是否真正相关。我们的估计对开发质量或其投资回报率有积极或消极的影响吗?
愿景至关重要
要开发软件,您需要有清晰的愿景和对成功应该是什么样子的共同理解。当软件项目开始时,首先需要深思熟虑的高层目标。如何实现这些目标的细节最初是次要的。在经典的迭代方法中,可以就如何在下一次迭代中改进产品(待办事项整理)做出“及时”决策。
我现在建议如下:尝试使用估计来预测开发软件以实现高级目标所需的时间是一种值得怀疑的方法。您希望解决方案和架构在开发过程中出现。您希望随着产品的开发而改变需求,以便为客户提供优势。根据定义,这种灵活性无法提前确定。这些是敏捷宣言中的关键要素,我相信它们是真正敏捷的软件开发方法的基础。
去除未知数
人们还可以尝试通过明确地消除未知的成本和到期日期,而不是依赖估计的准确性来进行预测。例如,产品负责人可以根据特定的预算或时间限制设置截止日期。例如:圣诞节前三天是圣诞节应用程序的特定时间限制。同样,这样的声明:“我们有 X 数量,让我们用它实现最好的结果。”
在这些限制内,团队可以定义交付时间 - 例如在冲刺结束时。这实现了对迭代产品开发的必要关注。同时,有可能更早和/或更便宜地交付。当没有具体的预算或时间限制时,这种方法也很有用。随着团队在使用持续交付方法方面的成熟,对明确命名的临时版本的需求会减少。