敏捷开发一千零一问系列之二十九:敏捷如何估算(上)?

简介:

问题

估算和度量几乎是敏捷开发及其他开发方法永恒的话题。不过,在进行估算之前,必须理解估算的价值,并觉得为估算所付出的工作量值得。

请看下面这段对话,它发生在2003年为一家企业做CMMI咨询的时候,涉及到代码行估算(有改动和扩展):

甲:假设一段代码是1000行。不估算,写完了一数是1000行;估算,写完一数还是1000行。为什么要进行估算呢?

乙:因为如果知道是1000行,就可以按生产率来估计开发时间了。比如如果一天开发100行,那么10天就能开发完成。

甲:知道是10天,要花10天;不知道是10天,开发完还是10天,为什么要估呢?

乙:如果知道每个任务的具体天数,就可以均衡每个人的工作量。

甲:如果我们这里都是主动领取任务和跨职能,那么每个人干完都会自己领取,不存在工作量平衡问题,是否还需要估算?

乙:……

这段对话表明,在做估算之前,以及在确认用什么方法估算之前,都是应该思考一下:我为什么要估算?其他实践也是这样。

尤其是敏捷开发的估算会(就是Scrum的计划会),需要整个团队开接近一天的时间,如果不能找到合适的理由,浪费时间的可能性还是很大的。

分析

从1999~2001年左右开始做估算,而2002年之后又开始教别人估算。迄今为止,最经得住质疑、雷打不动的两个估算目的不是做计划、度量、平衡工作量、之类,而是:

1. 报价或早期制定项目计划

若报价是错的,老板极有可能已经承诺了不切实际的价格和目标。一旦这个已经确定了,那么相应的总体计划其实也已经敲定了。

比如,若一个“本来(可惜无人知道)”需要100万和10个月的项目被签订为50万和5个月,其实无论团队如何努力,团队的绩效都会化为泡影。即使团队以超人的能力在80万(按工作量计算的成本)和8个月完成了项目,都不会拿到奖金。因为老板整个项目净亏损50万,无论责任在谁,反正钱是没有的。

尽管造成这个结果,责任似乎在老板据多一些,但要知道老板签订合同之前可是问了两个人:一个是客户,客户回答:“50万,5个月。”;另一个是团队,团队说:“不知道,因为需求太粗略了”。你是老板你该怎么办?http://

2. 用估算降低工作量

这个说法听起来很奇怪:我们一般认为有个东西叫任务,我们只需要拿尺子去测量一下,看看结果就可以了;现在居然测量过程会改变实际结果

本人在2001年左右得到高人真传,编程水平飙升而代码行数陡降,所以后来常常干一些杀代码的工作。比如:4000行代码、4000个常数、2个人月的工作=》700行代码、76个常数、0.5人月;4000行代码、65个函数,1个人月=》55行代码,1个函数,2小时。后来到一家企业,他们自己刚杀完一个代码,19万行代码,13人×9年=》1.3万行代码,1人×1.5年;估计好好杀杀能进万行以内……

当然下一个问题:当问题发生了,再去看它,会很容易发现有众多浪费的代码和工作量,如果一切还没有发生前,有没有方法发现?

对高手而言,他们总能及时预见到代码和工作量的浪费,并在第一次编写代码的时候就能做到最少代码和最少工作量。可是团队里边还是有很多新手的,他们没有能力做到这一点,甚至都不知道自己将会浪费90%的代码和工作量,怎么办?

没想到后来是估算帮助解决了这个问题,所以很值得一试。


本文转自火星人陈勇 51CTO博客,原文链接:http://blog.51cto.com/cheny/1101486

相关文章
|
6月前
|
开发者
|
7月前
|
敏捷开发 测试技术 持续交付
Scrum敏捷开发培训内训:提升团队能力和效率的重要途径
​ 在当今软件开发领域,Scrum敏捷开发方法越来越受到重视。Scrum是一种以团队协作为基础,注重灵活性和快速响应变化的方法。 为了帮助团队更好地掌握Scrum敏捷开发,培训变得越来越重要。Scrum敏捷开发方法注重高效协作、快速迭代和持续改进。通过培训,团队成员可以更好地了解Scrum敏捷开发的流程、实践和方法,提高团队协作和项目管理能力。这有助于在开发过程中快速响应需求变化,提高软件质量和客户满意度。
|
9月前
|
敏捷开发 测试技术 程序员
浅谈软件开发模型之瀑布开发和敏捷开发
浅谈软件开发模型之瀑布开发和敏捷开发
|
敏捷开发 JavaScript 前端开发
接私活福音,validation组件敏捷开发,效率提升5倍!
接私活福音,validation组件敏捷开发,效率提升5倍!
606 0
接私活福音,validation组件敏捷开发,效率提升5倍!
|
敏捷开发 前端开发 BI
好的每日站会,应该这么开 | 敏捷开发落地指南
高效落地敏捷开发,先从这3个关键活动着手。在敏捷迭代中,虽然迭代周期比较短,但依然需要对迭代过程进行有效跟进。如果在输入、过程、输出环节,没有要求,每日站会(迭代跟进)将会非常低效。好的每日站会,应该这么开!
1083 0
好的每日站会,应该这么开 | 敏捷开发落地指南
|
设计模式 监控 架构师
UI 自动化测试应不应该投入?有没有前途?怎样做最明智?
![](https://ceshiren.com/uploads/default/original/3X/4/a/4a59ac8dba217173b9abe7f8e8dd4d661b3a367e.jpeg) 昨天发布了《实战| UI 调度自动化测试平台(基于 Python)》文章之后,看到不少测试同学吐槽自己公司的 UI 自动化测试效果差而维护成本高,就是一件劳民伤财的集体活动。经常也会有同学问
|
Devops 持续交付
《精益产品开发》读书笔记之六--结
何老师的这本书是一本非常“好”读的书,深涩的概念也是讲得深入浅出,触类旁通,而且故事感十足。
170 0
《精益产品开发》读书笔记之六--结
|
敏捷开发 监控 项目管理
三分钟让你理解什么是敏捷开发,这才是敏捷开发......
做为无所不能的产品经理,虽不是上知天文下知地理,但是也要对产品相关的知识领域有所涉猎。项目管理就是与产品密切相关的一个知识领域,同时也是产品经理日常工作中经常要负责的一部分内容。别问我为什么不是项目经理负责,因为很多公司没有…… 本文结合实际工作实践以及亲身使用CORNERSTONE项目管理工具经验,深入浅出介绍在敏捷开发的互联网公司中一个项目从无到有所经历的各个环节,当然项目管理这门学问还有很多需要深入探索的领域,以下仅仅与各位产品/项目经理们,学习交流一下。
1223 0