`
lihuaiyuan84
  • 浏览: 10341 次
  • 性别: 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. **用户视角**:功能点估算法是从用户的角度出发,更关注软件的功能而非技术实现细节。而代码行估算法...

    Visual C++ 游戏编程基础

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

    WINDOWS高级编程指南.pdf

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

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

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

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

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

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

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

    项目软件开发价格估算

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

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

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

    台达PLC编程手册最新版

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

    数控车床编程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)以及网络编程等...

    Tcl_TK编程权威指南pdf

    Tcl_TK编程权威指南是一本全面介绍Tcl(Tool Command Language)及Tk图形用户界面工具包的编程书籍,由John Ousterhout教授设计并编写。Tcl是一种脚本语言,可以被轻松地嵌入到应用程序中,与C语言相比,Tcl的语法...

    LinuxC编程实战电子书

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

    西门子S5_PLC编程软件

    西门子S5 PLC编程软件是一款历史悠久且在特定领域仍具有广泛应用的工控软件。西门子S5可编程控制器(PLC)是工业自动化早期的代表性产品,它为自动化控制提供了灵活、可靠的解决方案,尤其是在20世纪80年代至90年代...

Global site tag (gtag.js) - Google Analytics