• 程序员的时间换算表
    时间:2012-08-07   作者:图灵社区   出处:ituring.com.cn

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

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

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

    网友留言/评论

    我要留言/评论

    相关文章

    心态和想法,是提高编程水平的关键:你是否有时候会觉得自己的技术水平停滞不前,想突破但又找不到门路?最近在stackexchange上看到了一个非常好的问答。有人问:你做过的最有效的提高你的编程水平的一件事情是什么?
    提升Android应用视觉效果的10个UI设计技巧:在Android应用开发中,风格和设计或许不是最关键的要素,但它们在决定Android应用成功与否上确实扮演重要的角色。以下是10个Android应用的UI设计技巧,还有个附加技巧,能够提供你的Android应用的视觉吸引力。
    Android 4.0设计初体验:Android系统是目前智能移动设备中增长速度最快的平台,但App的设计却没有形成自己的风格,绝大都数都是ios风格的移植适配。Google 在去年的10月份发布了Android 4.0 的界面规范,在样式、控件上都做了非常个性化的革新,但由于Rom的多样化,设备的不统一,新的4.0设计规范并没有得到广泛的普及。但以移动设备更新换代的速度,Android 4.0将会是趋势,与ios的差异性也会越来越明显。由于博主的性格属于典型的喜新厌旧,所以打算结合手上的项目做一个吃螃蟹的人…
    浅谈如何留住用户:应用中心,顾名思义就是应用的集合,是承载各种应用的平台。其主要特点是娱乐性强、沉浸感强。它像是一个商店,里面有供人们随意挑选产品的货架,更像是一个游乐场,里面有各种各样让人眼花缭乱、流连忘返的产品。因此,如何吸引用户到我们的产品来,如何让他们在我们的产品上停留更多的时间,这些都是设计师们的必研课题。笔者经过一段时间对应用中心类产品的研究和设计积累,总结了一些设计思考,在此与大家分享。
    你需要一个简单的开始 – Logo设计:所有的LOGO设计师都会经历一个过程。它是“幼稚的”、“可笑的”,我们并不爱公开地展示它们。或许最后并没有给我们带来任何灵感。但是它们将必不可少地存在着,在我们思维层的任何地方,都会潜意识地让我们思考。
    10个让朋友对你刮目相看的CoffeeScript单行代码绝技:或许你已经看过了Marcus Kazmierczak的这篇在HN上颇受欢迎的“10个让朋友对你刮目相看的Scala单行代码绝技”了, 尽管我对Scala并不了解(Java也是),但是这看起来还真不错,于是我也有点手痒, 想让我的朋友们也对我刮目相看一小下——不过不是从Java到Scala,我是从Javascript到CoffeeScript, 下面的例子都是基于node.js环境的。
    程序员学英语:老实说,我对于英语的认识,从没有把它的重要性放到一个足够的高度上来,从去年下半年开始,接触到越来越多的英文材料,也随着视野的开阔,逐渐发现英文能力,是程序员个人发展的必备技能。在很多情况下,它的重要性可以用“致命”来形容。以前有同事说,程序员职业生涯的发展,起到决定作用的,绝大多数时候都不是技术和业务,而是其他被人忽视的“软实力”,譬如沟通、性格、英文等等。兴许我现在正在渐渐参悟这句话的含义。
    程序员看法上的几个典型错误:今天我不谈抱负理想,也不谈具体的技术,我来谈几个看法上的典型错误。下面的这些问题都是我曾经遇到,或者是我的朋友们遇到过的问题,这些都是我个人的理解,希望对大家有帮助。
    读《神一样的产品经理》:随着iPhone的风靡全球,乔帮主也把产品经理推到了极致,在看了《神一样的产品经理》后,借着ITeye的活动,发一点牢骚。
    技术文化建设实践:众所周知,良好的技术文化不仅有助于人才成长和提升团队内聚力,更是吸引和留住优秀人才的一大法宝。然而,该如何营造良好的技术文化呢?且听本期三位嘉宾的经验分享。本文是专题《怎样营造良好的技术文化》中的第三篇。第一篇是张克军带来的《悉心营造良好的技术文化》,第二篇是许晓斌分享的《分享促进技术文化建设》。