`
lihuaiyuan84
  • 浏览: 10248 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[转载] 如何估算编程的时间

阅读更多

 

Programmer Time Translation Table

 

An experienced project manager I used to work with claimed that he took the programmers’ time estimates, multiplied by pi and converted to the next time magnitude to get the true number. 1 day converts to 3.14 weeks. He had learned the hard way that programmers are bad at estimating times. To get a more precise conversion, I’ve created a translation table for programmers’ time estimations, trying to narrow down where things go wrong.

Estimate The Programmer Thinks What the Programmer Forgot Actual Time
30 seconds There’s just a small change to the code to be done. I know exactly what to type and where. It takes 30 seconds to type. Time for starting the computer, the development environment and getting the right source. The time to build, test, check in and document the fix 1 hour
5 minutes It’s a minor thing, I just have to look up the exact syntax on google and fix it. It’s quite rare to find exactly the right information on the first try. Even if it is found, it probably needs some adjustments before it works. Add time for building, testing etc. 2 hours
1 hour I know how to do it, but it’s some code to write so it will take some time. 1 hour is too tight to have any margin for unforeseen problems. Something always fails. 2 hours
4 hours It’s some code to write, but I roughly know the step. I know the Wizzabanga module of our standard framework can do it, but I have to check the documentation on exactly how to call it. This is probably the only realistic estimation. It is large enough to have some margin for unexpected problems, while the task is still small enough to grasp. 4 hours
8 hours I first have to refactor the Balunga class into two, then I’ll add a call to the Wizzabanga code and finally add the new fields to the GUI There’s a lot of dependencies on the Balunga class from different parts of the system. About 40 different files have to be adjusted. The newly added field in the GUI has to be added in the database as well. 8 hours is too large to grasp completely. There will be more steps than the programmer thought of when estimating. 12-16 hours
2 days It’s really quite a lot to code. I have to add some new tables to the database, a GUI for those and then the logic to read and write data to the tables. 2 days of work is too large to overview for most developers. There will surely be things that are missed. Not just small things, but entire major pieces of functionality required will be forgotten during the estimation. 5 days
1 week Ouch… that’s a HUGE task. I don’t have a clue on how to do it, but I can’t say I don’t know. One week should be enough, I hope, I really hope, but I can’t ask for more or they’ll think I’m not competent enough. The task is way too large to get an understanding of for most programmers. It has to be sent back to an architect that can help splitting it in smaller parts and provide some direction how it should be solved. The architect might find a simple way to do it – or find that there’s a lot more work than expected. 2-20 days

Time estimation is hard. Every programmer has an interval where the estimations are realistic. Going below that interval means that the overhead (building, testing checking in code) was overlooked. Going above that interval means that the task is too large to overview.

For junior developers, the interval might even be non existing. They overlook the overhead while on the same time any non-trivial task is too large for them to overview. I’d say that an experienced developer should get anything between 0.5 hours and 24 hours right. Above 24 hours a breakdown is needed. It can be done in the head and then summed to 60 hours by the developer – but even someone experienced need to have manageable chunks to think of.

It is also important to understand that experience in programming is not the same as experience in estimation. A developer that’s not involved in the estimation process won’t get good at estimation. Also if actual time spent is never measured and compared to the estimates, there is no feedback to learn from.

Eventually, every programmer will have use for estimation skills. To prepare for that, decide when things are done for each task you take on. Then estimate the task before starting. Finally count the time spent and compare that to the estimate. Also compare what you actually had to do to your own definition of done. That way you’ll improve both your understanding of all the details involved in a task, as well as improve your estimation skills.

分享到:
评论

相关推荐

    VisualC 实效编程 79 估算程序复制时间

    VisualC 实效编程 79 估算程序复制时间VisualC 实效编程 79 估算程序复制时间VisualC 实效编程 79 估算程序复制时间VisualC 实效编程 79 估算程序复制时间VisualC 实效编程 79 估算程序复制时间VisualC 实效编程 79 ...

    基于事件和时间触发嵌入式系统编程思想

    基于事件和时间触发嵌入式系统编程思想 在嵌入式系统编程中,基于事件和时间触发的编程思想是两种常见的编程结构。事件触发编程方式是基于中断的编程方式,通过中断来响应事件,而时间触发编程方式是基于时间的编程...

    编程珠玑 编程珠玑 编程珠玑 编程

    《编程珠玑》是一本经典的计算机科学与编程书籍,作者是Jon Bentley。这本书以其独特的视角深入探讨了程序设计的艺术和技巧,旨在提升程序员的问题解决能力,优化算法,并提高代码效率。书中涵盖了一系列实用的编程...

    Visual C++ 游戏编程基础

    - 时间管理和帧率控制:游戏需要稳定的时间步进和帧率控制,以确保游戏体验的一致性。 - 用户界面(UI):创建菜单、选项和游戏状态显示,通常使用Windows API或自定义UI框架。 - 输入处理:处理键盘、鼠标和游戏...

    欧姆龙ST编程中文手册

    欧姆龙ST编程中文手册 本手册为欧姆龙ST语言编程教程实例,旨在帮助用户学习和掌握欧姆龙ST语言编程的基础知识和技术。手册中包含了丰富的内容,包括功能块介绍、编程指导、注意事项等。 第一章:介绍 在本章中,...

    第十一届蓝桥杯青少年创意编程scratch初级组编程题详解.docx

    * 题目要求:编程实现时间计算,包括三个询问框输入时、分、秒,并输出该时间经过 1 小时 50 分 30 秒后的时间。 * 编程实现:使用 Scratch 软件,创建三个询问框,输出该时间经过 1 小时 50 分 30 秒后的时间。 * ...

    松下PLC编程软件松下PLC编程软件

    3. **仿真功能**:软件内置的仿真环境可以模拟PLC的运行状态,帮助用户在实际部署前验证程序的正确性,减少现场调试的时间和成本。 4. **诊断与故障排查**:通过编程软件,工程师可以检查PLC的错误日志,定位故障源...

    时间控制程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例

    时间控制程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例时间控制程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例时间控制程序.zip三菱PLC编程案例源码资料编程控制器应用...

    python Qt GUI快速编程 PYQT编程指南.pdf

    Python PyQt编程指南主要聚焦于如何使用Python语言与Qt库来构建图形用户界面(GUI)应用程序。Qt是一个功能强大的跨平台应用程序开发框架,而PyQt是其Python版本的接口,它使得Python开发者能够利用Qt的强大功能。这...

    Goc编程工具

    **Goc编程工具详解** Goc编程工具是一种专为初学者设计的C++学习辅助工具,尤其适合小学二年级到高中的学生。它利用图形化界面来帮助用户理解和操作C++编程,使得复杂的编程概念变得更为直观易懂。在本文中,我们将...

    64位 微处理器系统编程和应用编程.part1 周明德编著 完整清晰版

    《64位 微处理器系统编程和应用编程》 周明德编著 完整清晰版 1 针对当前应用最广泛的两种64位处理器--Intel和AMD的四核处理器作为基础进行介绍分析,反映了当代微处理器的最新发展。 2 把Intel和AMD两种处理器综合...

    编程珠玑pdf

    - **时间和空间成本模型**:分析程序运行效率的关键因素。 - **代码优化规则**:提供提升程序性能的实用建议。 ### 四、第二版新增内容 - **第15章:字符串珍珠**:新增关于字母级马尔科夫文本的程序,以及单词频率...

    C#精彩实例源码!包括C#编程基础,界面编程,线程,数据库编程,网络编程,Web应用程序的开发等

    C#是一种广泛应用于桌面应用、游戏开发、移动应用以及Web服务的高级编程语言。这个压缩包包含了一系列精彩的C#实例源码,涵盖了C#编程的基础到高级应用,旨在帮助开发者深入理解和掌握C#的各项功能。 1. **C#编程...

    小学生C++趣味编程配套教学资源

    1)全书涉及的所有源代码(包含完整代码和不完整代码[即:不含学生自己写的部分],学习时不需再次键盘输入无关代码,大幅节约时间) 2)全书使用的C++编程和编译软件包(用于本书示例代码编译调试,也是用于NOIP复赛...

    linux C语言 网络编程教程及源码

    linux C语言 网络编程教程及源码 一、网络应用层编程 1、Linux网络编程01——网络协议入门 2、Linux网络编程02——无连接和面向连接的区别 3、Linux网络编程03——字节序和地址转换 4、Linux网络编程04——套接字 5...

    串口通信编程大全

    这时我以前编制rs-232串口程序时收集的一些有关串口编程的硬件和软件技术资料,对于想学习串口编程的朋友比较实用的。里面讲述了有关串口的基本支持和用VB通信时的一些技巧和注意方法。声明:本资料来自互联网,版权...

    青少年趣味编程Python系列课程--2019-09-23.pdf

    标题《青少年趣味编程Python系列课程--2019-09-23》以及描述《青少年趣味编程Python系列课程--2019-09-23》揭示了该文件是一份针对青少年的Python编程课程计划,时间为2019年9月23日。文档的标签为“python学习 系列...

    大龙老师新版scratch3.0编程全套素材

    Scratch 3.0是麻省理工学院(MIT)媒体实验室终身幼儿园团队开发的一款面向儿童的图形化编程工具,旨在让孩子们通过拖拽积木式的编程块来学习编程概念。"大龙老师新版scratch3.0编程全套素材"提供了一整套的教学资源,...

    Ruby元编程第二版中文

    Ruby元编程是编程领域中一个深入且强大的主题,它允许程序员在运行时修改或创建代码,极大地提高了灵活性和代码的动态性。这本书“Ruby元编程第二版”专注于讲解Ruby语言的这一独特特性,旨在帮助开发者更好地理解和...

    软件估算技术

    开发者的工作时间、编程语言的难度、使用的开发环境和工具都会影响这个阶段的估算。 4. **测试**:测试阶段包括单元测试、集成测试、系统测试和验收测试,需要考虑测试工程师的时间、自动化测试工具的购置和维护、...

Global site tag (gtag.js) - Google Analytics