项目管理者联盟 | 中国工程管理网 | 中国研发管理网   会员中心 资料库 论坛 博客

PMI-ACP®认证

适合敏捷开发项目
敏捷项目管理最佳实践

网络课程

PMI-PBA®认证

重视项目商业分析
商业价值与需求分析能力

网络课程

NPDP®认证

产品管理国际认证
全球产品管理最佳实践

网络课

PMP®认证

单项目管理经典指南
年轻项目经理首选

北京 | 直播 | 录播

PgMP®认证

大型复杂项目全球标准
定位高级项目管理层

网络班

PfMP®认证

链接战略与项目
实现组织资源投资回报

全球直播

软考项目管理

信息系统项目管理师
系统集成项目管理工程师

计划 | 报名 | 经验

圈子
志同道合,朋友再聚首
项目管理者联盟PMP培训
会员· 圈友
登录ID
密   码
 
圈子信息
圈名:IT项目管理圈
加入方式: 允许任何人加入

IT项目管理圈

追求高效的软件项目管理方法

圈主:lepu2934112    管理员:暂无管理员   
成员数:271
主题数:1384
排名12
通讯录
圈友列表
加入本圈
管理本圈
 
话题区 投票区 资料区 精华区
标题:软件项目估算是一件很难的事情
楼主

铁托
PMB:19794
省份:安徽省
行业:综合应用
注册:2006/4/30
  
  
最近Uncle Bob发表了新的博客《为什么估算这么难?》。
  Bob大叔首先抛出一个问题,如何将著名的葛底斯堡演说的237个单词以固定字体和固定行宽写在一张书签上。如果人工执行这个任务,假设每秒钟处理一个单词来寻找合适的断句点,估计5分钟内就可以完成,而且实际花费时间也和估计的差不多。然而,如果要编写程序来做,要花多久?而且是在知晓算法、没有意外情况、没有绊脚石、无需备份和恢复功能的情况下,编写程序要花多久时间?
  Bob大叔提醒说:程序只不过是遵循某个过程的具体指令,而这个过程是已知的。在动手写程序之前给出3个估算,最佳情况、最差情况和正常情况。根据Bob大叔的统计,大部分人需要花上30-45分钟,也有人用了15分钟,还有人用90分钟。这样,很多人之前的估算与实际花费相差悬殊。其中一个原因,他们基于手工任务看似简单来进行估算的。
  Bob大叔回忆某个下午和Kent Beck采用测试驱动开发来结对编程写这个算法。他们估计这需要10-15分钟,结果花了30分钟却毫无进展。在被迫接受这个体验后思考,为什么这算法这么难?为什么把如此简单和直观的过程写下来这么难?
  其实,人类是目标导向的,在分解文字时,人类不会遵循一个过程,而是不断评估输出,然后调整做法直到正确为止,因此会预估5分钟之内完成。而过程是盲目的,它不管输出是否正确。如果过程错了,那输出结果也会错。人类不了解过程,不了解过程的难度如何。人类不是电脑,做事的时候不会遵循过程,所以无法比较过程任务和手工任务的复杂性。这就是估算为什么难,而且经常犯错的一个原因:任务看上去简单,人们基于这个表面现象来估算,之后却发现写出过程实际上是多么复杂。人们估算不准是因为估算了错误的东西。
  回到分解长字符串的例子。每次分解一行,记录下分解位置和选择这个位置的原因。将其概括为三个不同的场景:
  如果单词长于10个字符,在第10字符处断词。
  如果第11个字符是空格,在第11字符处断词。
  从第10个字符向回查找,如果找到一个空格,就在该处断词。
  这些场景仍然需要被组成一个过程,但是至少知道这个过程有几个部分组成,从而使估算更容易。
  这个故事的寓意是任务看似容易被人类解决,却经常被描述为复杂的过程。所以估算时,确保不要被简单的表面现象所迷惑。深入进去,尝试列举出过程所包含的场景数量。
  博文显示估算失真有多容易。人脑不善于回答抽象问题,往往替换实际问题为一个直觉问题。而直觉在寻找答案时,如同博文所说,以期望结果的产生来考虑问题,不关注未知或可能出错的东西,而是关注那些能够理解的东西。
  博文引发大量讨论。有人认为分解过程为小的片段并无价值,有价值的是知道哪类问题是困难的和为什么困难。也有人认为多练习有助于提高估算准确度,或者让有经验的人而不是新手估算。然而经验最可以依靠,却仍然可能出错,除非项目与之前完全一样。
  除了博文所讨论的原因,还有人认为,团队水平、办公室政治、企业缺乏变更控制,也都成为导致估算不准确的原因。
  更多的人吐槽:在实际中,估算往往发生在没有明确需求可以参考的时候,更不用说之后不断变化的需求、未知因素、代码基础中隐藏的陷阱。因此固执地遵循最初的时间表也使得估算看起来是不准确的。而且开发人员面对来自于客户和经理的压力时,往往倾向于低估时间表。
  

  点击查看大图(图片来源:西乔)
  不确定的需求
  “作为一个搞开发的,我经常被问到完成一个拼图要多久,可我连拼图的样子都没看到、是不是能够拼到一起都不知道!”— beager
  “我已经把部署一个 WordPress 博客的时间估算从 5 分钟放余量到 2 周,可是最后经理把需求给我的时候,我发现有 20 多个页面、大量的自定义功能和插件需要部署和开发。我是不是又要 delay 了?!” – skiwigger
  有人觉得不能坐以待毙,应该主动出击对 Business Owner 解释为什么拿不出估算:”对你的 Business Owner 说,现在要你给估算,就好像问你机piao要多少钱,但是不告诉你什么时候飞、飞到哪里去、要不要商务舱!“ – TargetBoy
  但是马上就有苦主反对 TargetBoy,说”你太高估你的 Business Owner 了!那帮功能紊乱的家伙!“ 接着底下就开始骂上了。
  ”很快,估算就变成‘砍进度’游戏了。而他们砍掉的,往往是让软件变得可维护的东西。” – beager
  狂妄的需求
  “我老板问我:开发一个微软 Word 那样的东西并且和 Word 兼容很难吗?我说:还不如直接让用户买 Word 更划算。老板诧异道:怎么会这样?!我:o.O ” – angrystuff
  Boss:“为什么你三个月写不出来一个浏览器版本的 Office Word?!”
  niloc132:“那么容易的话,你当微软是傻子啊!我要是那么牛逼,我就自己开公司了,还会在这里听你胡说八道?!”
  “我一般这么回答:啊,这个要 (2 +/- 12 )个月,视我的工作时间和是否有其它的工作安排而定。”—grotgrot
  开发人员的对策
  逼着 lz 估算是吧,好~~~!
  ”别忘记 * 3!“ – hyperforce
  ”乘以 3 不够,乘以 PI。“ – wlievens

回复 | 引用 发表时间:2014/3/1 21:23:43
!  您尚未登录,不能回复主题。    现在 登录  注册
关于联盟 | VIP会员 | 培训服务 | PMP认证 | PgMP认证 | 刊物出版 | 沙龙会议 | 人才服务 | 广告投放 | 联系我们 | 友情链接
建设运营:共创时网络
版权所有 京ICP证070584号 BBS业务许可2007第353号