动态人工智能项目估算
Dynamically estimating AI projects
掌握敏捷成功的基础
估算
现在,几乎每个人都在使用估算。客户需要它们来规划和控制何时开始使用项目的结果。估算还有助于项目经理确定范围、工作总量以及每个任务或整个项目的大致成本。
估算在许多情况下都很有帮助,例如:
- 了解工作的设置:将任务拆分为几个较小的任务,以了解您需要采取的主要步骤。
- 理解复杂性:单独为复杂任务提供估算是困难的,但为工作结构的每个部分提供估算更容易。它有助于确定工作的难度和完成所需的时间。
- 确定成本:在大多数企业中,除非您已经解释并捍卫了项目的成本和所需资源,否则您将无法开始项目的工作。
现实是什么?
让我们面对一个具体的真相…… 估算通常不起作用,这是它们的最大问题。我们的计划是错误的、不完整的,而且通常与实际工作无关。即使团队已经多次面对类似的任务,即使是最有经验的软件开发人员也很难猜测完成任务需要多少小时。您需要相关样本和良好的估算过程来在AI项目中使用相对估算。相关估算可以是一些简单的统计估算,它们考虑了过去完成的所有相关任务的平均长度。为了制作这种估算器,我们必须首先收集一组数据。
如上所述,诀窍在于将每个任务分解为其自身级别。因此,Scrum建议您使用相对故事点而不是确切的小时数。首先,在任务级别上,您的估算变得更准确,然后在Sprint级别上,最后在项目级别上。如果您没有任何可以帮助您进行相对估算的过去经验,您只应该为项目的第一个Sprint进行绝对估算。从这里开始,您应该使用已经完成的任务来进行新的估算。
业务和实施估算
估算可以从两个不同的角度进行识别。第一个角度是实施部分,这对于希望完成项目的项目经理和团队领导者来说通常是可理解的。在这一点上,估算的主要目标是更好地理解构建最终解决方案所需的时间和金钱。
第二个角度与项目的业务目标有很大关系。这个角度对于实施团队通常是不可见的。大多数项目通常有一个业务模型,为增加收入、使客户满意、降低成本等设定目标。当有人进行实施估算时,应考虑到这个业务模型,因为它在某种程度上设定了可能的限制。在AI项目中,可以通过首先考虑业务模型的预算限制,然后制定一组可以用于计算项目表现的业务指标来进行业务估算。
您应该从总体步骤开始,然后进一步细化。如果您以前做过类似的项目,可以查看它们的计划,以确定从哪里开始。收集并使用来自其他项目的数据可以是获取估算的好方法,因此不要忽视您以前的工作。
当大纲中有足够的信息时,就可以为软件架构提出建议。这是非常重要的一步,因为将大纲与客户或最终用户的需求相匹配并不总是可能的,甚至不经济。您至少应该对将使用的技术有一个大体的想法,它们将如何与客户的其他系统配合工作,以及您的解决方案应该如何部署。如果有重要的非功能性要求,例如每天24小时、每周7天可用,软件架构师还应考虑如何在技术和系统设计方面实现这些要求。编写一个高层次的架构愿景将有助于使这个大纲有意义。如果您认为需要更改大纲,不要害怕这样做。软件设计是一项需要经验丰富的工程师完成的艰巨任务。如果您在设计软件解决方案方面经验不足,可以向团队中的某人寻求帮助,或者更好的是,将软件设计变成一个团队努力。
一旦大纲完成并且你有软件架构的计划,你可以开始评估项目。简单的统计方法,如程序评估和审查技术(PERT),可以完成这项工作。
什么是PERT?
PERT,即项目评估和审查技术,用于估计完成任务所需的预期持续时间。当处理包含大量陌生变量的情景时,这种方法尤其有价值。PERT最初是在美国海军中创建的,现在已经在许多项目监管者中得到广泛应用。
在PERT框架中,可以为每个任务分配一个评级,使用从1到3的范围。具体来说,这涉及考虑在最佳条件下任务所需的时间投入。此外,还必须考虑到可能出现的技术故障或由先决条件引起的复杂问题对开发轨迹的影响。
因此,需要计算的主要因素包括以下内容:
- 最有可能的估计:这意味着为给定任务提供最精确的评估。
- 悲观估计:这表示在不利情况下完成任务所需的持续时间。这个类别包括更高的风险,如实验失败和复杂的调试会话。
- 乐观估计:这指的是在条件顺利进行的情况下完成任务的预期时间跨度。
PERT估计 = (乐观估计 + 4 x 最有可能的估计 + 悲观估计) / 6
PERT标准差 = (悲观估计 – 乐观估计)/6
为了有一个约99.7%的置信区间(确保概率范围),你可以计算:Pert估计 ± 3 x PERT标准差(3可以设置为2以限制范围)。
不要忘记使用已经完成的项目的数据作为相对估计的起点。在估计时,使用的外部来源越多,估计就越准确且风险较小。
估计的目标
在制定预测时,专注于最终目标至关重要。制定和维持准确的估计需要大量的时间和精力投入。特别是在人工智能项目领域,由于其复杂性,预测结果变得复杂,因此在这些预测中获得团队和客户的信任变得更加重要。这种信任与成功执行的可能性呈正相关。
值得注意的是,当面临未知领域时,如为新业务领域制定解决方案或集成先进算法和技术时,与估计相关的确定性水平会降低。在这些情况下,拥有一个明确的达到目标的路线图成为一个指导灯塔。
然而,明智的做法是避免过度依赖精确计算时间方面或详细的蓝图。相反,建议谨慎应用估计。它们不仅是确保实施策略与客户期望一致的工具,还可以根据这些期望来引导项目。
风险
在人工智能项目领域,划定项目目标是初始和关键的脆弱点。理解所需结果是成功的关键点。项目实施开始得很快非常有趣,但如果缺乏精确性,这可能会与实际业务需求显著偏离。因此,拥有确立和明确定义的目标非常重要。这些目标可以像指南针一样为团队提供帮助,使他们能够区分准确和错误的解决方案。
如何处理研究项目?
研究项目包括任何旨在解决以前未遇到的问题的项目。值得注意的是,研究项目的动机超越了增进科学知识的范畴。它们包括团队深入探索未开发领域的情况,如新的业务领域或新兴的人工智能库,并努力在业务环境中发现创新应用人工智能的方法。这对几乎每个人工智能计划都是正确的,其中一个子研究项目负责建模过程。
然而,研究项目的一个基本问题是它们往往缺乏全面的广度。每个研究项目都需要一个明确定义的目标;没有这样的明确性,成功的完成将是困难的。此外,在研究项目的领域中,解决外部挑战也同样重要。研究的财务拨款自然会随着项目范围的扩大而增加。如果存在预算限制,也会对研究的深度和持续时间施加限制。
一旦确定了可行的研究量,合作努力可以集中在解决未决实验上。待办事项中的每一项都应该体现出能够丰富模型质量或促进实现所需功能的想法。SMART标准(具体的、可衡量的、可实现的、相关的和有时限的)作为表达每个实验具体内容的相关框架。
对当前研究周期内的所有正在进行的实验进行快速而全面的质量评估。这种实践有助于评估每个实验预期的时间投资。为了保护研究项目的轨迹并防止潜在的失误,遵循以下准则是至关重要的:
- 设定一个确切的目标
- 设定成功的标准
- 定义限制,如时间和金钱限制
- 填充实验队列
- 根据您的需求设置优先级
- 跟踪所有测试及其结果
- 使代码易于复制
- 记下您发现的内容
还需要考虑一些附加部分:
- 确定哪些是“不可或缺的”,哪些是主要部分
- 在开始阶段减少对不重要部分的努力
- 尽量精简(根据您的预算)
项目的相当一部分依赖于自上而下的估计方法,其中该过程始于项目的总体预算分配,然后将其拆分为较小的组成部分。当项目的财务框架和定价已经确定时,特别是采用此方法。然而,这种方法遇到了一个显著的困境:项目初步估计在项目开始时往往不太可靠。挑战来自于在制定全面了解项目需求和详细计划之前,确定所需预算是很复杂的。
尤其在无法根据最终项目结果评估初始报价的准确性时,这个挑战可能会进一步恶化。自上而下估计的有效性在于对项目范围内每个任务如何对初始固定价格做出贡献有深刻理解。然而,这种理解水平需要大量时间和精力,通常无法手动确认。
一些额外有用的部分
- 没有人能一直工作在项目上,因为每个人都需要休息,参加会议,遇到交通堵塞等等。因此,您应该假设资源有20%的时间不可用,但可以使用80%的时间。如果一个项目资源只有一半的时间可用,将最大可用单位设置为40%。在设置项目的计划表时,不要忘记考虑每个资源的假期、工厂停产、培训和休假。没有一个计划能完全按计划进行。您需要一些灵活的空间,因为有些任务会延迟。
- 包含一个缓冲区:没有一个计划能完全按计划进行。您需要有一些错误的余地,因为一些任务可能会延迟。一个好主意是在某些阶段的最后添加一个缓冲任务(例如那些使用团队几乎没有经验的新技术的阶段),或将该阶段的项目概述截止日期从原始长度延长20%。例如,如果一个阶段的原始长度是100天,您可以将其延长到120天。
- 尝试在项目开始时确定一些可能的风险,并将其作为持续的过程。
结论
- 估计用于计划和控制项目、理解复杂性和确定成本。
- 估计是困难且不准确的,因此需要相关样本和良好的估计过程。
- 使用相对故事点而不是确切小时数来提高准确性。
- 区分业务估计和实施估计,并考虑业务模型的预算限制。
- 概述步骤,提出软件架构建议,并使用PERT等统计方法估计项目。
- PERT涉及对每个任务进行1-3的评分(最佳情况、最可能情况和悲观估计)。
参考资料
Dubovikov K. (2019). Managing Data Science. Packt Publishing
创建项目预算-完全指南
在一个简单的指南中,发现创建一个现实的项目预算所需的一切,无论是否有系统帮助您。
www.forecast.app