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

简介: 一个曾经与我一起工作过的经验丰富的项目经理声称,他拿到程序员的时间估算以后,先将它乘以π,然后转化下一个时间数量级后,才能得到真正的值。1天转化成3.14周。

一个曾经与我一起工作过的经验丰富的项目经理声称,他拿到程序员的时间估算以后,先将它乘以π,然后转化下一个时间数量级后,才能得到真正的值。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小时。但是即使是有一些有经验的开发者也需要有利用管理时间块来思考。

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

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


目录
相关文章
|
Cloud Native 算法 Go
面试中的时间管理:如何在有限时间内展示最大价值
面试中的时间管理:如何在有限时间内展示最大价值
115 0
|
6月前
|
算法 搜索推荐 数据挖掘
掌握程序员之剑:解析常见算法与其在生活和工作中的影响
掌握程序员之剑:解析常见算法与其在生活和工作中的影响
86 1
|
自然语言处理 程序员
程序员如何在繁忙的工作中高效学英语
最最重要的是要去学!投入时间去学习,英语学习属于没有太多捷径,必须要投入大量时间去做的事。当然,虽然没有捷径,还是有一些方法和技巧可以提高一些速度的。但是最重要的是要做好心理准备,这是一场持久战。
827 0
【软件工程基础知识】成本估算方法
【软件工程基础知识】成本估算方法
573 0
|
大数据 测试技术
【基础理论-白盒测试】:只要你看完这篇文章,你就超过了99.99%的同行了
【基础理论-白盒测试】:只要你看完这篇文章,你就超过了99.99%的同行了
|
安全 程序员 C++
开发人员应当避免的代价高昂的职业错误
开发人员应当避免的代价高昂的职业错误
91 0
|
测试技术 编译器
《人月神话》(P9)时间估算
在本书的第二章节——人月神话中,作者有提到关于编程时间的问题,大体上是这么说的:项目之所以延期,排在第一位的原因是因为缺乏合理的进度安排,而且列举了会导致进度安排不合理的原因,其中大部分都是人为因素或者观念以及概念上的问题,例如估算盲目自信、遭受到外部压力、不重视测试环节或者对编程工作量没有清晰的认识等等。
1351 0

相关实验场景

更多