作为一名软件开发人员(抑或架构师?),我发现我总是在不断地与客户和项目经理讨论预算的不准,以及需要改预算。我已经数不清有多少次在我给出预算 之后,又不得不因为一些看似细微的变化却最终导致出现了bug而修改预算。有许多变量都会增加预算的风险,下面我将简要谈谈一些主要因素。
https://yqfile.alicdn.com/006191022844e15772199436a2bd3c30d0ea3e69.png" >
主要因素是:
- 不断变化的需求/前提条件——告诉你一个基本事实是,任何改变都会导致成本的增加。哪怕是删除需求的行为也是需要改设计的……记住,即使是简化设计也是工作。
- 改变团队结构——经验丰富的开发人员总是比新手的效率更高。而深谙某种特定解决方案的人又比经验丰富却并不熟悉现有代码的人要来得高效。对于一支并不清楚的团队,想要精确预算是很难的,而且往往会导致更高的预算膨胀的风险。
- 合理安排时间——如果你给开发人员40个小时去完成任务,那么他们至少用的时间就是40个小时。因为哪怕看上去似乎是一个非常简单的任务,他们也会额外花费时间用于分析、测试,以及干点别的方面的事情来耗用这些时间,即使他们原本有能力完全可以在4小时之内搞定任务。
- 预算仅仅只是个开始——告诉你一个残酷的事实就是,对于那些不平凡的软件,预算只是个开始,后期会随着可用信息的增加而变化。在没有获得更多的信息之时你分析得越多,基于错误信息而得出的预算结果与事实的差距也就越大(尤其是当它还涉及上面几个因素的时候)。
简单地说就是,“所有的软件开发都是设计”。任何变化的发生都会改变设计,衍生更多的工作量。敏捷理论的支持者意识到这一点(也可能是潜意识的)之后,通过锁定设计时间来帮助推动事情的发展(至实际交付)来解决这一问题。漫长的设计周期,往往会导致不为人知的额外工作量。
文章转载自 开源中国社区 [http://www.oschina.net]
时间: 2024-09-28 21:38:10