`
lihuaiyuan84
  • 浏览: 10373 次
  • 性别: 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 ...

    常用设计编程工具 NOVEX切削数据估算.zip

    常用设计编程工具 NOVEX切削数据估算.zip常用设计编程工具 NOVEX切削数据估算.zip常用设计编程工具 NOVEX切削数据估算.zip常用设计编程工具 NOVEX切削数据估算.zip常用设计编程工具 NOVEX切削数据估算.zip常用设计...

    实用的软件系统开发成本估算法-软件成本管理(含例子).docx编程资料

    2. **技术独立性**:功能点估算法不受特定开发技术的影响,而代码行估算法则需考虑具体的编程语言和技术栈。 3. **用户视角**:功能点估算法是从用户的角度出发,更关注软件的功能而非技术实现细节。而代码行估算法...

    WINDOWS高级编程指南.pdf

    《WINDOWS高级编程指南》是Jeffrey Richter所著,深入探讨了32位Windows平台的高级编程技术。该书是编程领域的经典之作,特别适合于熟悉Windows编程但希望更深入理解其高级概念的读者,如内存管理、消息处理、动态...

    基于C语言编程的EKF算法在电池SOC估算中的应用研究,用C语言辩识的EKF算法,用于电池SOC估算 ,C语言; EKF算法; 电池SOC估算,C语言实现EKF算法的电池SOC估算

    基于C语言编程的EKF算法在电池SOC估算中的应用研究,用C语言辩识的EKF算法,用于电池SOC估算 ,C语言; EKF算法; 电池SOC估算,C语言实现EKF算法的电池SOC估算

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

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

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

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

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

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

    台达PLC编程手册最新版

    ### 台达PLC编程手册最新版:深度解析与应用指南 #### 一、台达PLC编程基础知识 台达PLC(可编程逻辑控制器)编程手册是学习和掌握台达PLC编程技术的重要资源。手册全面介绍了PLC梯形图的基本原理、编程技巧以及...

    Windows图形编程(pdf)

    《Windows图形编程》完全版是一本深入探讨在Windows操作系统环境下进行图形编程的权威指南。这本书主要涵盖了图形、多媒体和游戏开发的关键技术,旨在帮助开发者掌握创建动态、交互式应用程序所需的技能。 在...

    项目软件开发价格估算

    2. **技术难度**:不同的技术架构、编程语言和开发平台会直接影响开发时间和成本。例如,复杂的算法设计、高性能系统优化或跨平台开发可能增加难度,从而提高成本。 3. **团队配置**:开发团队的规模、技能水平和...

    数控车床编程100例

    数控车床编程100例

    UNIX环境高级编程 第三版 中文+英文+源码

    UNIX环境高级编程压缩包包含这些内容: catalogue.txt src.3e.tar.gz(源码) UNIX环境高级编程(第2版)-中文.pdf 带目录 UNIX环境高级编程(第3版)-中文-mobi转换.pdf 带目录 UNIX环境高级编程(第3版)-中文.pdf 带...

    Linux-UNIX系统编程手册.pdf

    Linux/UNIX系统编程是计算机科学领域中的一项核心技术,它主要涉及使用C语言对Linux或UNIX系统提供的底层接口进行操作。系统编程允许开发者执行诸如进程控制、文件操作、信号处理、进程间通信(IPC)以及网络编程等...

    (完整版)ST语言编程手册.pdf

    ST语言,也称为结构化文本(ST),是一种高级编程语言,它基于文本,用于工业自动化和控制系统的编程。根据IEC61131-3标准,ST语言被广泛应用于可编程逻辑控制器(PLC)和其他工业设备中。PLCopen是一个全球性的行业协会...

    LinuxC编程实战电子书

    本书共计4个压缩包(linuxC编程实战+.part1.rar,linuxC编程实战+.part2.rar,linuxC编程实战 +.part1.rar,Linux+C编程实战源代码.rar) 内容简介  《LinuxC编程实战》系统地介绍了在Linux平台下用C语言进行程序...

    基于深度学习的身高估算C++与C混合编程设计源码

    该项目是一款基于深度学习的身高估算软件,源码采用C++与C混合编程设计,共包含56个文件,包括12个日志文件、10个目标文件、4个调试信息文件、4个源代码文件、3个日志文件、3个头文件、2个可执行文件、2个编译缓存...

    伟纳SP200s编程器全部资料(diy+驱动+软件)

    SP200S 编程器是伟纳电子继广受欢迎的SP180S 编程器基础上改进设计的一款编程器,直接使用 USB 接口通讯和供电,体积小巧,软件和硬件设计成熟,功能完善,是目前唯一一款拥有专业编程控制 软件的免费编程器。可以...

Global site tag (gtag.js) - Google Analytics