敏捷开发的费用计算成本的步骤是:1、准备和估算项目需求;2、确定团队速度;3、使用团队的资金消耗率和速度计算迭代的预算;4、加上资本成本;5、使用“已完成”的定义添加迭代前和迭代后的预算等。
一、敏捷开发的费用计算成本的步骤
1、准备和估算项目需求
项目需求必须按一定顺序列出,然后再进行估算。如果你使用的是Scrum敏捷方法,你需要创建产品待办事项。使用极限编程,你需要创建用户故事。使用看板,你需要在制品积压列表。
不管你使用的是什么敏捷方法,在项目环境下,都可以使用8MSaaS看板项目管理软件进行工作估算。一旦获得工作列表,你就需要负责完成这个列表的团队来进行估算。敏捷方法的估算不能由团队以外的人负责。8MSaaS看板支持为每个需求分配功能点,功能点数量与时间无关,只是代表每个事项的工作量。
2、确定团队速度
团队需要选择周期(迭代)长度。软件项目通常是1-2周,很少情况下是3-4周。在其他行业,情况可能大不相同,有的周期短至12小时(一天24小时一周7天不间断的采矿环境),有的长达3个月(志愿者社区环境)。一旦确定了周期长度,团队就能使用简单的方法来估算他们在一个周期中需要完成多少工作量。查看待办事项列表,团队可以从名列前茅个事项开始,逐渐往下看,决定哪些适合名列前茅个周期。
选择的事项代表一定数量的功能点数。团队认为在一个周期中可以完成的功能点数量代表速度。有了速度,我们就可以用来做预算的计算。
3、使用团队的资金消耗率和速度计算迭代的预算
团队的速度代表团队在一个周期中可以完成多少工作。然而,为了弄清楚整个项目的预算,我们需要对团队的输出进行估算,把它分解成工作量的总数。我们的列表包含所有事项的功能点,将这些功能点相加,除以速度,你就会得到团队完成列表所需要的工作周期数。
要做预算,你还需要知道团队的资金消耗率:运行团队一个周期需要多少钱。这通常是根据全职员工的全部成本计算出来的,通常可以从财务人员或经理那里得到这个数字(有时你可以从公开的财务数据中得出这个数字)。将其转换为每个周期的人均成本,然后乘以团队的人数。最后,将每个周期的成本乘以周期的数量。
这是敏捷团队在周期中完成的部分项目的预算,还要考虑其他费用。
4、加上资本成本
没有多少项目只需要人工成本。你的项目可能需要设备采购、供应品、工具或更大的项目,如基础设施、土地或车辆。大多数敏捷方法不提供如何考虑这些因素的具体指导,因为敏捷方法起源于软件开发,相对于人工成本而言,软件开发的成本往往是最小的。然而,作为进行预算估算的项目经理,你需要向团队确认,他们是否知道完成项目所需的任何大型采购。在敏捷环境中,大型采购的成本类似于或超过一个周期的人工成本(记住:敏捷项目应该至少持续几个周期,这是相对较小的人工成本百分比)。将这些成本添加到项目预算中。
5、使用“已完成”的定义添加迭代前和迭代后的预算
每个敏捷团队都应该是“跨职能”团队,但实际上存在限制。例如,在大多数软件项目环境中,团队不包括全职律师。这种有限的跨职能决定了团队在每个周期中能够交付什么——任何超出团队专长的事情通常都是作为前期工作或在迭代(周期)完成之后完成的。有时候,这项工作的完成可以与团队同步。
为了理解这项工作,为项目交付绘制一个组织范围的价值流图通常是有价值的。这张图将显示项目中每种类型的工作所花费的时间比例。减去所有将在敏捷团队内部完成的工作(他们对“已完成”的定义),剩下一部分工作必须在敏捷团队之外完成。根据价值流图中的比例,以及项目的周期人工成本,添加适当的预算。
6、在总体估算中应用阻力因素、附加因素或风险因素
要根据风险或不确定性因素增加一些金额(永远不要减去!),进而得出最终估算。一般来说,在这一步之前,你的项目预算是+/- 20%~50%,这取决于你过去使用这种方法的次数。如果你熟悉它,并在一些项目中使用过它,那么你的团队将更好地理解他们的初始速度,这是剩余预算估计的基础。如果你是名列前茅次使用这种方法,在估算过程中会有高度的焦虑和不确定性。请在你认为合适的地方添加缓冲区,但千万不要在最后一步从预算中减少时间或金钱。
延伸阅读:
二、团队管理
Scrum框架下有三种常见角色:产品负责人「Product Owner」、Scrum主管「Scrum Master」、团队成员「Scrum Team」。
根据我们开发中的实际情况将角色分为以下四种:
- 项目经理:相当于Scrum主管,负责协调团队内部合作,召集站立会议,把控项目整体进度;
- 产品经理:相当于产品负责人,负责决定应该做什么工作,明确工作项、评定优先级,拟定待办事项Backlog清单的内容,确定各个事项的优先顺序;
- 开发人员:开发人员是项目开发任务具体的实施者。他们负责完成开发任务,及时反馈开发进度;
- 测试人员:测试人员是项目测试任务具体的实施者。他们负责制定测试计划,编写测试用例,创建以及回归缺陷。
如有有需要,Scrum团队还可以根据项目需求添加其他岗位人员。