如何提高工时评估准确性

(开发软件时)前90%的代码要花费90%的开发时间,剩余的10%的代码要再花费90%的开发时间。
The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

——Tom Cargill,贝尔实验室

合计180%的时间总量用看似荒诞的形式指出了软件开发项目里一个臭名昭著的倾向-完成时间常常严重超出预期时间表。这一格言体现出了软件工程的对编程项目的简单与困难部分的时间分配太过粗糙的问题,也揭示了许多项目拖延的原因(即对困难部分没有足够的估计)。换句话说,完成一个项目要花比预期的更多的时间和代码。

预备知识

知识 vs 技能

TL;DR

定义 获取途径 难易程度 衡量标准
知识 经过提升总结与凝练的对客观世界的系统认识 人类历史上积累下的科学文化知识 看天分,因人而异 深度、广度
技能 指运用知识和经验执行一定活动的能力,是行为和认知活动的结合 后天习得 熟练程度与练习时长有关 熟练度

什么是知识?

知识是很容易理解的概念,知识是人类从各个途径中获得的,经过提升总结与凝练的对客观世界的系统认识。柏拉图认为:一条陈述能称得上是知识必须满足三个条件,它一定是被验证过的,正确的,而且被人们相信的。

相对来说,知识是最容易获得的,尤其是互联网的发展,我们要想获得某一方面的知识只需轻点一下鼠标就能办到。

知识的学习几乎是瞬间可以办到的,知道和不知道可以瞬间完成转换。比如你要知道中国有多少个省,只需要百度一下就可以马上知道。

学生在学校学习的主要内容就是人类历史上积累下来的科学文化知识,只需要把这些知识掌握了就算完成学习任务了。但即使是最容易的知识的学习,对很多学生来说也感觉困难重重。

知识是技能和能力形成的基础,没有相关的知识,就很难有技能和能力。在日常生活中,知识丰富的人相对来说能力也会比较突出。但并不是知识丰富的人能力就一定强,书呆子就是其中的典型代表。

什么是技能?

技能是指运用知识和经验执行一定活动的能力,是行为和认知活动的结合。技能是通过一定的方式后天习得的,技能和知识是密不可分的。

技能一般用熟练程度来衡量,比如开车的技能就是用你的熟练程度来衡量你的驾驶水平。而知识一般用广度和深度来衡量。

学习技能最大的特点就是要到实践中去练习,如果用学习知识的方法来学习技能,效果一定好不了。比如我们现在学习英语时普遍犯的错误就是把英语当成了知识来学习。

语言是一种技能而不是知识,需要的是在实践中大量的运用和练习,三岁小孩为什么就能基本掌握一门语言,就是因为他是从实践中练习学会的。如果我们把英语当作一种技能来学习,不可能会出现学了十几年英语还不会听说的情况。
虽然掌握技能比知识要难一些,但普通人只需要一定的时间和重复的练习,都可以达到比较高的水平。

请问工时评估准确是知识还是技能呢?答案当然是技能,那么如何提高该技能熟练度呢,接下来我将介绍PDCA模型。

PDCA(戴明环)

PDCA是英语单词**Plan(计划)、Do(执行)、Check(检查)和Act(处理)**的第一个字母,PDCA循环就是按照这样的顺序进行质量管理,并且循环不止地进行下去的科学程序。

PDCA 循环 威廉·爱德华兹·戴明

P(Plan)–计划:确定项目目标、方针和计划。
D(Do)–执行:根据目标,设计具体的方法,并执行具体的任务。
C(Check)– 检查:根据实施情况,对比原计划,找出偏差。
A(Action)–行动:又称“Adjust”。此阶段是改进流程的重要一环。对Check阶段的结果进行处理,成功的经验予以肯定并标准化;失败的经验加以总结,避免复现。对于没有解决的问题,放到下一个PDCA循环处理。

提高估算准确性的方法

接下来以某物流项目功能举例:

Plan 阶段

Plan阶段最重要的一点:像产品一样站在全局,去思考业务。

不要被角色限制,这样才能更好的理解系统。

1. 通过头脑风暴将需要的功能,按照MECE分析法进行拆解,脑图内容分为两类

  1. 业务,即系统最终实现什么功能
  2. 支撑,即为了实现业务目标,需要哪些依赖
  3. 争议点,即不清晰的地方,需要找别人确认

物流查询头脑风暴示意图

2. 绘制流程图,确定业务逻辑

目的:验证业务逻辑是否闭环,识别出异常情况,同时将单个流程的输入/输出标明,防止流程无法流转。
物流查询业务流程图

4. 评估工时

4.1 估算工时的方法:

  1. 类比估算
    类比估算是指以过去的类似项目的参数值(如持续时间、预算、规模、重量和复杂性)为基础,来估算未来项目的同类参数或指标。用于项目早期阶段或信息不足时,具有成本低、速度快的优点,但准确性差。
  2. 参数估算
    利用历史数据之际嗯的统计关系和其他变量,来进行项目工时估算。参数估算的准确性取决于参数模型的成熟度和基础数据的可靠性。可以针对整个项目或项目中的某个部分,并可与其他估算方法联合使用。

如果建设一座埃菲尔铁塔需要3年,那么建设10座需要的历时为?
—— 如果只是一个建筑公司,则需要30年

  1. 三点估算(概念起源于计划评审技术PERT)
    通过考虑估算中的不确定性和风险,可以提高活动持续时间估算的准确性。
    公式:最可能的工时 = (乐观时间 + 4*可能的时间 + 悲观时间)/ 6

练一练:
A公司的某项目即将开始,项目经理估计该项目10天即可完成,如果出现问题耽搁了也不会超过20天完成,最快6天即可完成。根据项目历时估计中的三点估算法,你认为该项目的历时为(11)天

4.2 根据头脑风暴、流程图、原型估算时间

ID 任务名称 优先级 负责人 依赖 预估工作量(人/天)
T01 登陆/注册 4
T02 首页 4
T03 个人中心 2
T04 运单列表 4
T05 运单详情 5
T06 人脸实名验证 3
T06 隐私协议页面 2
T06 接口联调试 3
T06 测试+BUG修复 7
合计 34 (人/天)

Do 阶段

1. 描述进展

确认进度计划是否正常,可能会有进度提前、进度正常、进度滞后三种结果

2. 评估风险

是否出现了意外情况或计划中未预料到的风险?是什么?

举例:
例如登录注册功能需要对接物流公司ERP,老用户无需重复注册,若没有提前预知则无法进行后续接口对接。

3. 调整方案(如有风险)

所有的风险都要及时同步TL!!!
所有的风险都要及时同步TL!!!
所有的风险都要及时同步TL!!!
(重要的话说三遍)
自己半天内能解决掉的风险,允许事后同步;反之需要立即同步,向上级寻求解决方案。

如果有风险,是否需要调整计划?如何调整?需要通知哪些干系人?有哪些影响?

举例:
发现由于物流公司ERP登录、注册接口未按时提供,导致后续流程无法正常进行时。需要尽快反馈给TL、PM(通知干系人),说清楚目前遇到的问题、以及需要得到的帮助,PM联系到对方的开发负责人,对方告知需要3天可以提供(需要调整计划)。于是告知PM把后面的工作前移,等接口开通后再调登录注册(如何调整)。最终接口开通后,成功完成接口对接。

4. 过程记录

值得记录的事情/产出沉淀

Check 阶段

1. 对比原计划

确认进度计划是否正常,可能会有进度提前、进度正常、进度滞后三种结果

2.分析影响当前进度的原因

正常来说,进度提前与进度滞后都不是好的结果。进度提前意味着工时可能估多了,滞后则意味着估少了。我们需要客观分析原因,可采用五个为什么 (Five whys)、鱼骨图分析具体原因

主观原因导致的进度偏差,需要及时做出调整,如加班;客观原因导致的进度偏差,我们及时向干系人同步风险,做好力所能及的事情即可。

举例:
Why:页面进度为何延期了?
A:UI稿没有按时给。
Why:UI稿为何没有按时给?
A:因为UI那边设计的需求太多,我们的还在排队
Why:为何没有跟踪设计稿进度,等到最后一天才知道给不出来?
A:因为相信UI会按时给,所以缺乏过程追踪。

从页面延期分析出UI设计中,缺乏过程追踪,UI稿延期交付后,前端也被动延期。假如了解到UI稿可能会延期,那么前端可以及时采取操作,主动推进项目。

Action 阶段

1. 总结经验

记录项目成功/失败的原因或教训,并加以标准化,将经验应用于下次的PDCA循环。

2. 遗留问题

检查是否有遗漏问题,记录并放在下一个循环内解决。

名词解释

MECE

MECE,是Mutually Exclusive Collectively Exhaustive,中文意思是“相互独立,完全穷尽”。 也就是对于一个重大的议题,能够做到不重叠、不遗漏的分类,而且能够借此有效把握问题的核心,并解决问题的方法。

PDCA

PDCA(Plan-Do-Check-Act的简称)循环式品质管理,针对品质工作按规划、执行、查核与行动来进行活动,以确保可靠度目标之达成,并进而促使品质持续改善。由美国学者爱德华兹·戴明提出,因此也称戴明环。这个四步的循环一般用来提高产品品质和改善产品生产过程。这个过程循环也被人熟知为:Plan-Do-Study-Act(PDSA),戴明圆环(Deming circle/cycle/wheel)或者哈特利圆环。另一个不同的版本是OPDCA,加入了O(observation观察),有些说法认为是获得当前的状况的意思。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!