程序员的时间换算表 ----为什么程序员不擅长估算时间

简介: 原文链接:Programmer Time Translation Cheatsheet -or- Why Programmers Are Bad at Estimating Times译文链接:http://www.ituring.com.cn/article/details/8290一个曾经与我一起工作过的经验丰富的项目经理声称,他拿到程序员的时间估算以后,先将它乘以π,然后转化下一个时间数量级后,才能得到真正的值。

原文链接:Programmer Time Translation Cheatsheet -or- Why Programmers Are Bad at Estimating Times

译文链接:http://www.ituring.com.cn/article/details/8290

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

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

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

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

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

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

目录
相关文章
|
7月前
|
程序员
面试高频题:开发人员说不是bug,测试如何答复?
面试高频题:开发人员说不是bug,测试如何答复?
127 0
|
21天前
|
数据可视化 数据管理 项目管理
职场打工人怎么记录日常工作?5款热门工具的优缺点分析
本文介绍了五款高效的工作记录工具,包括板栗看板、Miro、Airtable、Notion 和 Wrike,分别针对任务管理、创意协作、数据库管理、多功能笔记及跨团队协作等不同需求,通过对比它们的使用场景、优缺点及其适用性,帮助读者选择最适合自身需求的工具。
职场打工人怎么记录日常工作?5款热门工具的优缺点分析
|
4月前
新人,为什么你提问了却得不到想要的答案?
新人,为什么你提问了却得不到想要的答案?
|
Cloud Native 算法 Go
面试中的时间管理:如何在有限时间内展示最大价值
面试中的时间管理:如何在有限时间内展示最大价值
121 0
|
7月前
|
算法 程序员
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
71 7
|
SQL 存储 监控
程序员新人频繁使用count(*),被组长批评后怒怼:性能并不拉垮!
程序员新人频繁使用count(*),被组长批评后怒怼:性能并不拉垮!
|
算法 程序员 开发者
程序员大部分时间不是写代码,而是。。。
程序员大部分时间不是写代码,而是。。。
166 0
程序员大部分时间不是写代码,而是。。。
|
存储 人工智能 运维
【超干货!面试问答】12种提升用例执行速度办法 - 真实面试问题标准答案
【超干货!面试问答】12种提升用例执行速度办法 - 真实面试问题标准答案
|
算法 大数据 程序员
自从掌握了软件开发的 5 条核心原则,我每天工作时至少可以多摸鱼 4 个小时
自从掌握了软件开发的 5 条核心原则,我每天工作时至少可以多摸鱼 4 个小时
208 0
自从掌握了软件开发的 5 条核心原则,我每天工作时至少可以多摸鱼 4 个小时
|
算法 程序员 持续交付
如果你有拖延症,程序员不如试试这个技巧提升效率?
  要吃掉一头大象,每次吃一口。   ——克雷顿·艾布拉姆斯(Creighton Abrams)   造成拖延的首要原因之一,同时也是造成生产力低下的祸根,就是总是在感慨一个问题:好忙啊,问题好大啊……实际上,你并没有真正试着去解决问题。当我们从任务的全貌来审视任务的时候,它们看起来比真实情况都要大,并且更吓人。   在本文中,我会谈及一个能够帮助你克服拖延的提高生产力的窍门:分解任务。通过将大任务分解为小任务,你会发现自己更有动力去完成它们,也更加稳妥地向着目标前进。
159 0