什么是项目工时?

项目工时估算是一个系统性工作,基本上很难有一个万能的方法。因此大多数情况下都是玄学,但是毕竟是 “估” ,也不能要求 100% 精确。

工时估算的前提是质量:IT 团队能准时交付是一项非常有价值的能力,哪怕交付时间长一点。计划两周交付,最后能准时完成,比承诺一周时间,但是花了三周才交付重要得多。越是大项目,越是重要。大项目的各个组件可能会发生相互依赖。如果不能准时交付,就会付出团队等待的成本,那可是真金白银。想必做过项目管理的都知道甘特图,甘特图的每个泳道表达了项目各项资源的进展和计划。然而,软件项目不确定性非常多,存在各种突发事件。如果能提高准时按质量交付,各个单位的等待成本会小很多。关键的是,衡量准时交付的关键是质量,其次才是交付。先给一个 demo,然后再慢慢改 bug。这种 “准时” 的交付,还不如有一个明确的延期时间,本质上还是 “猛糙快”。谈项目工时估算,应该是在满足质量要求的前提下,否则估时没有意义。

一般来说,准确估算工时需要考虑需求分析程度、任务拆分的合理性、技术方案的可靠性、团队成员的能力、外部依赖和环境,如果这个项目不是新项目,还需要考虑遗留系统改造的成本和数据迁移的成本。

需求和任务分析:只有把需求分析做的非常彻底,才能保证估算的输入条件。非专业的业务分析师,只能看到需求冰山水面上的部分 —— 软件的特性、功能的复杂性等。专业的业务分析师,不仅需要考虑功能需求,并对功能需求的逻辑性考虑完备。比如用户需要一个 APP,他实际上还需要一个后台,对应这个后台会有不同的用户、角色等。根据这些业务输出、拆分出任务,敏捷开发中我们叫做用户故事,一个用户故事代表一个合理拆分的业务逻辑。能被评估工作量,然后根据这个工作量来评估工时。除了这些功能需求之外,还有非功能需求。客户不仅仅需要一个 APP,还可能需要的是一个安全的、高性能的、国际化的 APP,而这些往往被客户当做默认选项。一些性能优化的指标需要分析,并考虑性能优化的任务工时;安全需求可能有 HTTPS 配置,防病毒扫描等,都需要考虑;国际化也是额外的工作量。挖掘用户真实需求的目的是定义怎么才算完成(Definition of Done),如果没人说得清楚满足什么条件这个项目才算完,那么估算工时根本无从谈起。彻底挖掘客户的真实需求是评估项目工时的首要条件。

技术方案和团队能力:技术方案、团队能力和项目时间估算有很大关系。很多项目的时间估算都是由技术经理或者 Tech lead 来完成,往往是他们按照自己的经验和能力进行计算的。光是这样,很难算的准。团队有多少人?对这套技术方案的熟悉程度如何?方案是否会发生较大的调整。人一多,人员水平差距就为工时估计带来了不确定性。经验多的人来做方案,如果是他做过的相似方案,自然会估的稍准一点。但大多数情况下没有这么理想的场景。要做好工时估算,需要结合技术方案和团队成员能力,而不是自己能干多少活儿,多快干完来算一方面,技术负责人需要安排相应的技术预研,走在实际编码的开发人员前面,探探路,验证方案的可行性、实施难度、风险。就像作战的侦查人员一样,我们把预研叫做 spike。spike 需要输出一些结论、demo,支持项目的时间估算。敏捷项目管理中还有更准确的速率计算方式。通过速率,就能对下一阶段的工时估算做出调整,并在工作量、人员上做出调整。通过方案预研和速率计算是提高项目工时估算准确率的良好方法。

把控遗留系统和外部依赖:真正有经验的工程师都知道,方案设计的难点往往不在设计一个新东西,而在于演进一个老系统。遗留系统演进是不可避免的,这种历史包袱是造成工时估算不准的一个重要因素。遗留系统演进带来的估算困难来源下面几个方面:前置条件不满足或者很困难。客户可能觉得只是添加一个小功能,但是涉及数据库变更、API 升级。软件项目往往牵一发而动全身。

遗留系统代码难以理解,没有人说得清楚原委。这种系统往往伴随着重构,否则难以进行。

数据迁移的成本。例如,需求只是简单要求对用户的某些数据加密,实际工作包括了对存量数据的迁移。

临时代码的清理。遗留系统往往为三个状态,原始态-过渡态-最终态,很多人估算工时要么忘记了过渡态,就是忘记了最终态的时间成本。

最后,项目工时估算是一个系统性工作,基本上很难有一个万能的方法。因此大多数情况下都是玄学,但是毕竟是 “估” ,也不能要求 100% 精确。软件工程的估时更具有弹性,相对供应链管理的交付时间估算成本更低。做好估时,对减少项目运行成本和风险有巨大意义,工时估算的准确性也往往体现了一个 IT 团队工程能力。

有效提高估计项目工时准确性的办法相关推荐

  1. 提高IT项目沟通技巧

    有效沟通的技巧 提高IT项目的沟通效率,项目经理负有首要的责任.一个高素质的团队组织者和协调管理者所发挥的作用往往对项目的成败起决定作用,一个优秀的项目经理必然是一个善于沟通的人. (1)建立彼此的信 ...

  2. 项目工时管理遇难题?看看这套工时管理系统解决方案

    随着社会化大生产的发展以及市场竞争的日趋激烈,现代企业的规模在不断扩大.对于项目企业来说,人力资源的成本就是项目的主要成本,而工时是项目中人工成本的重要依据,因此,管理好员工工时是项目管理过程中最重要 ...

  3. weka使用训练集分类测试集_Giao 13C NMR计算分类训练集提高结构归属的准确性和可靠性...

    Giao 13C NMR计算分类训练集提高结构归属的准确性和可靠性 前言 GIAO 13C NMR计算对于小分子结构归属有很重要的作用,尤其对于需要提高准确性和可信性的复杂有机分子的结构归属.准确度是 ...

  4. 一文掌握项目如何进行分类,项目工时如何计算【实例】

    一. 项目类别 公司项目类别包含"业绩项目.售前项目.产品研发项目.社区/培训项目.内部项目.管理支持"等.详细定义如下: 1.业绩项目 a)标识:对外项目,有双方签署合同与合同金 ...

  5. 如何做好项目工时管理?看这一篇就够了!

    "时间就是金钱",尽管这句话我们已经听腻了,但在项目管理中确实是真理.项目工时直接影响着项目费用和成本,因为不论你的项目工作是按小时还是按固定费用计费和付款,你在一段工时内完成的工 ...

  6. 如何做好项目工时管理?

    项目管理中,项目工时直接影响着项目费用和成本,项目组成员在相同工时内执行的工作越多,效率越高,所消耗的项目工时也就越少,相对项目费用和成本也就越低. 以下是跟踪工时对项目的好处: 1.分析团队的绩效和 ...

  7. 研发项目工时统计工具哪个好?9大工时管理系统盘点

    工时管理是项目型企业的重要需求,特别是在人力成本占比较高的行业,如软件开发.设计咨询.会计律师等.工时管理可以帮助企业核算项目人工成本,控制成本投入,提高项目利润,客观考核员工绩效,优化资源分配等. ...

  8. AceTeamwork 软件成就继续蝉联国内最优秀的项目工时(timesheet)及费用报销(expense)软件...

    AceTeamwork  是我所见过得界面最美观,操作最简单,功能齐全,性能稳定可靠的项目及团队协作管理软件.项目计划和控制.工时填写和审核以及报表打印和导出都很简单.此产品是几款优秀软件中" ...

  9. android studio 新建工程慢,关于AndroidStudio新建与编译项目速度慢解决办法

    android第一次新建项目是,相关依赖包需要下载很久,至少半小时,因为网速问题,还会多次下载失败. 解决办法如下: 1.通过镜像将gradle-5.4.1-all.zip下载到本地:解压到文件夹:D ...

最新文章

  1. 深入理解 C 指针阅读笔记 -- 第一章
  2. ncvlog帮助文档存放路径_Cadence ncvlog error
  3. 程序员如何用糖果实现盈利 - [别人家的程序员01]
  4. CentOS下ZooKeeper单机模式、集群模式安装
  5. python选取元音开头的单词_一学生易错词汇aan的选择元音字母开头的单词用an辅音字母...
  6. 【Android】7.1 布局控件常用的公共属性
  7. 算法—巧排扑克牌(C语言)
  8. ubuntu学习笔记之安装oracle客户端
  9. Java 文件上传与下载
  10. 不可逆加密算法-MD5
  11. OpenKG开源系列 | 轻量级知识图谱抽取开源工具OpenUE
  12. 2022年第十三届蓝桥杯JAVA B组部分题解
  13. 收集45个实用的免费LOGO在线制作网站
  14. C# 利用Excel及Spire.xls实现用户自定义打印模板
  15. python多进程多线程,多个程序同时运行
  16. 【IDEA使用教程】IDEA快捷键
  17. Linux 远程工具 基础命令
  18. ERROR: Failed building wheel for inplace-abn
  19. 计算机视觉方向就业怎么样?可以做什么?
  20. pptp连接服务器无响应,解决PPTP客户端拨号不成功

热门文章

  1. 荷兰国旗问题的解决:额外空间复杂度O(1),时间复杂度O(N)
  2. 【python数据预处理笔记】——整齐数据(Tidy Data)
  3. 企业怎样规划品牌架构做好品牌建设?
  4. 回归分析--线性回归模型
  5. 马斯克式参与现场改善!ECRS工时分析软件帮您一步到位
  6. “自顶向下,逐步求精”的方法
  7. 拖拉和焦虑的心理成因
  8. 哪些专业可以报考二建?2021二建报名条件专业详情对照表来了
  9. Windows dos命令使用总结(持续更新)
  10. extjs 解决rowEditing不满足allowBlank时,无法save的问题