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

简介:

问题

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

请看下面这段对话,它发生在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

相关文章
SRE方法论之减少琐事
SRE中的E是Engineering。中文可以翻译为“工程工作”,SRE就是通过工程工作来减少琐事。
SRE方法论之减少琐事
|
存储 运维 架构师
经验教训:微服务设计时的五条宝贵经验
在著名软件著作《人月神话》中提到,软件世界没有“银弹”,这句话当然适用于架构领域,随着从单体架构过渡到微服务架构,因为将原有系统打散,给系统增加了许多不稳定因素。
104 0
|
敏捷开发 测试技术 BI
为什么要学习敏捷?敏捷有哪些好处以及敏捷工具
Leangoo领歌一款永久免费的专业敏捷研发管理工具,它覆盖了敏捷项目研发全流程,包括小型团队敏捷开发,规模化敏捷SAFe,Scrum of Scrums大规模敏捷。能够支持多种场景,如:敏捷研发管理、敏捷项目管理、工作流管理、轻量级项目群管理、任务管理等。2)管理产品路线图、产品backlog、迭代规划和执行、缺陷、测试、项目文件及企业组织架构等等。3)可查看多项目进度,项目视角的统计等,提供了不同视角的统计,例如:进度统计、燃尽图、团队速率、任务分布、缺陷分布、测试用例分布等等,实时掌握项目状态及进展。
|
敏捷开发 安全 项目管理
「敏捷」也许敏捷就是问题所在
「敏捷」也许敏捷就是问题所在
|
敏捷开发 JavaScript 前端开发
接私活福音,validation组件敏捷开发,效率提升5倍!
接私活福音,validation组件敏捷开发,效率提升5倍!
630 0
接私活福音,validation组件敏捷开发,效率提升5倍!
|
运维 Kubernetes 监控
基于 K8s 的交付难题退退退!| 独家交付秘籍(第三回)
经过仔细研究,我们发现秘籍中提到许多帮助解决交付问题的招式,而其中一个让我们印象很深,是关于在原有社区版容器底座 Kubernetes(以下简称 K8s)的基础上,对容器底座进行改进,可更好的服务于应用交付的招式。下面,请随我一起来看看您是否是那天选之人吧!
基于 K8s 的交付难题退退退!| 独家交付秘籍(第三回)
|
敏捷开发 前端开发 BI
好的每日站会,应该这么开 | 敏捷开发落地指南
高效落地敏捷开发,先从这3个关键活动着手。在敏捷迭代中,虽然迭代周期比较短,但依然需要对迭代过程进行有效跟进。如果在输入、过程、输出环节,没有要求,每日站会(迭代跟进)将会非常低效。好的每日站会,应该这么开!
1233 0
好的每日站会,应该这么开 | 敏捷开发落地指南
在一个执行力极差的团队工作是一种怎样的体验?
一个执行力极差的团队能把一个公司活活的拖死,在这种团队中工作是一种怎么的体验呢?相信很多小伙伴会对这种团队的工作氛围感兴趣。正好冰河在假期与一位经历过这种团队的朋友聊天,聊到了这个话题,今天就给小伙伴们总结下在一个执行力差的团队工作是一种怎样的体验!
293 0
|
敏捷开发
“大团队”和“敏捷开发”,谁说不可兼得?
当小团队的产出跟不上业务需要,团队就面临规模化的问题。从1个团队到3个团队,仍可以通过简单的团队沟通保持高效协作。
2384 0