为什么程序员不擅长估算时间?

一个曾经与我一起工作过的经验丰富的项目经理声称,他拿到程序员的时间估算以后,先将它乘以π,然后转化下一个时间数量级后,才能得到真正的值。1天转化成3.14周。他过去因为程序员不擅长估算时间而吃尽了苦头。我创建了一个用来翻译程序员时间估算的表格,来尽量缩小估算错误。

估算时间 程序员们所想的 程序员们所忘记的 实际时间
30秒 只需要做一个很小代码改动,我准备的知道怎么改,在哪改,花费30敲键盘就行! 启动计算机,开发环境和获取正确源码的时间,用于构件,测试,检查和文档修复的时间。 1小时
5分种 小事一桩,我只要上网查一下就能搞定了 很少有一次就能找到正确并需要的信息的,即使找到,在它能工作之前,也需要一些调整,外加构件,测试等等时间 2小时
1小时 我知道怎么做,但写代码需要花费一些时间 面对未来可能发生的事情,一个小时稍纵即逝,有些东西总是会出错 2小时
4小时 需要一些代码,但我粗略的知道一些步骤。我知道用哪个方法可以解决这个问题,但我要先看一下相关文档 这大概是唯一现实的的估算,它为意外的错误留下了足够大的余地,而这个任务也小到足以把握。 4小时
8小时 我先要把某类进行重构,然后为某模块加一个调用的方法,最后还要在表里加一些字段 总会有许多的功能部分依赖着这个类,相关的要的地方肯定还更多,8小时太长,无法完全把握,总会有比程序 12-16小时
2天 真的有一大堆代码要写,我需要往数据库里面写不少的表,新的显示代码,还有读写表的逻辑。 对于大多数的开发者来说,两天的工作量已经大到难以估计了,肯定会有什么东西被遗漏掉,不仅仅是一些小事情,而是整的一大块的主要功能被忘了 5天
1周 哎哟,这直是一项艰难的任务,虽然我还没有多少思路,但我不能说我不知道,一周应该够了,我希望 ,我真心希望,但我不能要求更多了,否则他们会认我不称职,会让我滚蛋 这个任务已经大到超过大多程序员的理解了,它应该被发回给架构师,帮忙把它为成更小的部分,然后提供一些解决的方案,架构师可能会发现一种更简单的方法来完成它,或者发现其它有更多超出想象的工作 2-20天

时间估算是困难的。每一个程序员都有一个现实的估计区间。低于这个区间的估计意味着(构件,测试,检查代码的)时间开销被低估了。超过这个区间的估计意味着这个任务太大而很难预估。

对于初级开发者来说,这个区间甚至都不存在。他们忽略(构件,测试,检查代码的)时间开销,同时困难的任务他们却又无法预估。我想说一个有经验的开发者应该在0.5至24小时将事情做完。超过24小时,就需要细分。这项工作应该在开发者的头脑中完成,然后总和到60小时。但是即使是有一些有经验的开发者也需要有利用管理时间块来思考。

同样重要的是明白:编程经验不等同于估算经验。一个不被包含在估算流程中的开发者将不会擅长估算。同样,如果实际的时间花费不被测量和用于与估算比较,那么将没有反馈来学习。

最后,每个程序员都应该具备估算的技能。为磨练这个技能,接手每个任务时,先决定你要做什么。然后在开始之前估算任务所需时间。最后测量实际花费时间,并与估算相比较。同样比较你实际完成的与计划完成的。这样你将会既提高你对一个任务包含细节的理解,同样也提高了你的估算技能。

时间: 2024-11-27 15:01:58

为什么程序员不擅长估算时间?的相关文章

为什么程序员难以评估开发时间?

一个曾经与我一起http://www.aliyun.com/zixun/aggregation/6918.html">工作过的经验丰富的项目经理声称,他拿到程序员的时间估算以后,先将它乘以π,然后转化下一个时间数量级后,才能得到真正的值.1天转化成3.14周.他过去因为程序员不擅长估算时间而吃尽了苦头.我创建了一个用来翻译程序员时间估算的表格,来尽量缩小估算错误. 时间估算时困难的.每一个程序员都有一个现实的估计区间.低于这个区间的估计意味着(构件,测试,检查代码的)时间开销被低估了.超过

需不需要留给程序员了解需求的时间??

问题描述 需不需要留给程序员了解需求的时间??现在我们公司是边开发边了解需求,作为一个程序员感觉很无奈... 解决方案 解决方案二:一般公司只需要你回答:能不能?是不是?.........楼主太天真了.解决方案三:都把程序员当神看了啥都不了解就开始干边干边了解,总花费了解时间没少,而且随着了解的加深,对已完成代码进行修改也很费时间.解决方案四:哪有那么多时间给你去熟悉需求,解决方案五:肯定还是先了解大局了才去动手干啊,后期再来修改代码好玩吗?跟你老板说,我是来上班的,不是来被玩的.解决方案六:打

程序员必备的项目时间估算指南

有位 PM 最近告诉我她面临的一个难题:"软件工程师永远不能估算出他们的项目需要多长时间.我该怎么办?"还有两位 CEO 最近也告诉我同样的事情. <为什么程序员总是不能准确估测项目时间?>(http://blog.jobbole.com/24924/),我们都深有体会.我曾经遇到过一个项目,预计需要两天完成,结果做了四个月.在这种情况下,即使用"时间翻倍"的经验估算,也依然差出了一个数量级之多.这样真的非常影响业务.我曾见过整个公司为了举办一个发布活动

优秀的程序员需要擅长数学吗?

天有很多年轻人或经验不足的程序员在 论坛发帖.在 Stack Exchange 网站问:「为了成为优秀的程序员,我需要擅长数学吗?」,在我还年轻的时候,我也问自己同样的问题.最近,我醉醺醺地.也是出于无聊,竟然 Google 了同样问题,差不多有 10 多年没有思考过这个问题了.在我浏览相关话题时,出现的答案模式被归结为以下三个主要类别: 需要 不需要 看情况 貌似「需要」和「不需要」经常带有个人主观偏见,反而显得有点儿草率的反应综合征.因此我把精力更多地放在「看情况」的选项上,以确保「需要」被

程序员最多能用多少时间来编程?

我走进晚会的时候,演讲已经开始了,Michael Arrington 正在大谈特谈关于创建企业的艰辛:很多时候甚至只能趴在桌上小憩一番.但是,我想补充几句.我看到过很多论述,说这样的工作方式反而会适得其反.与成功失之交臂,甚至还会对程序员的身体产生极大的危害.但是,很少有人会对此进行定量分析.鄙人不才,下面先行抛砖引玉. 我们一般每天工作 8 小时,那么一周就是 40 小时.在极端的条件下(当然也不现实),如果一个程序员整整一周不吃不喝也不睡觉,所有时间全部用来写代码,那么就有 24×7 小时,

每个程序员都应该了解的内存知识(2)-CPU caches

英文原帖:http://lwn.net/Articles/252125/ 原翻译贴:http://www.oschina.net/translate/what-every-programmer-should-know-about-cpu-cache-part2       现在的CPU比25年前要精密得多了.在那个年代,CPU的频率与内存总线的频率基本在同一层面上.内存的访问速度仅比寄存器慢那么一点点.但是,这一局面在上世纪90年代被打破了.CPU的频率大大提升,但内存总线的频率与内存芯片的性能

程序员成长规划

引言 我的程序员成长之路 程序员的成长经历往往很相似,大部分的人走过了最前面相同的一段路,而有的人则走得更远.总结自己这些年来的历程,这也许能让年轻的程序员少走一些弯路,成长得更快:或许更好一些,能让大家从中得到一些启发,早日进入优秀程序员的阶段,实现梦想,释放激情. 第一阶段,最初是在学校里学习计算机基础知识,学习经典的程序设计语言,编写测试用的小程序.这个过程可以说是对计算机和程序设计的入门阶段.这个阶段主要是培养了自己对计算机软件的兴趣,打下了良好的计算机基础知识. 第二阶段,而后参加工作

你是想做个安静的程序员,还是去创个业呢?

其实,很多人对程序员"无聊""呆板"的误解都是来自于网络上的段子.而在现实生活中,我们接触到的程序员同学,他们也是非常活泼.开朗,还是充满激情的一群人.移动互联网时代,基本上所有互联网公司的CTO都是程序员出身,所以程序员玩创业并没有什么好稀奇的.本期移动开发精英俱乐部的话题就围绕" 程序员如何创业?"这个话题.文章系ITOM管理平台OneAPM编译整理. 程序员为什么要创业呢? 熊欣_主持人:程序员也算是个高薪行业,大家聊聊,为什么要创业呢?

什么原因成就了一位优秀的程序员?

这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸.不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀,糟糕的程序员那么糟糕?简而言之,什么原因成就了一位优秀的程序员呢? 根据我的经验,成为一个优秀程序员同年龄,教育程度,还有和你赚多少钱没有任何关系.关键在于你的做法,更深入地说,就是你的想法.我注意到我所钦佩的程序员都有一些相似习惯.不是他们所选语言的知识,也不是对数据结构和算法的深入理解,甚至不是