简介:《2020混沌报告》是知名IT调研机构Standish Group发布的年度项目成功率研究报告,本次压缩包内含其英文原版PDF快速参考卡片。报告面向项目经理、PMO、研发管理者和项目发起人,基于CHAOS数据库提炼出决定项目成败的三大关键因素:好赞助人、优秀团队与良好工作环境,并列出了各自需要遵循的原则,例如赞助人的决策延迟、愿景、热情等原则,团队的沟通、正念、解决冲突等准则。文件共1个PDF,大小3.26MB,印刷排版清晰,适合屏幕阅读或打印后随时查阅。目前已有680人学习。报告还提供了不同成熟度层级对应的项目成功率对比数据,读者可据此快速评估自身组织现状,针对薄弱环节制定可落地的改进路线。对于希望系统性提升项目成功率、降低失败风险的从业者来说,这份材料具有很高的参考价值。
1. 为什么 2020 年的项目成功率数字值得你重新算一遍
很多人看到 CHAOS 报告的第一反应是“又是一套失败率统计”。但 2020 年的数据窗口有些特殊:它恰好覆盖了全球团队从集中办公切换到远程协作的剧烈阶段,项目成功率、规模分布与交付方式之间的关系出现可观察的偏移。更关键的是,报告背后的 QRC 数据库把“成功”拆成按时、按预算、按目标达成三条独立记录,而不是只给一个笼统标签。下面不替报告背书,只讲怎么用这份 PDF 里的口径,给手头项目做一次真实对标,并把结论落回到迭代节奏、需求拆分和汇报方式上。适合交付负责人、PMO 和资深工程师花二十分钟读完。
2. CHAOS 报告的成功定义与 QRC 数据口径
2.1 成功不只是按时交付:三条硬指标
CHAOS 报告对项目成功的判定从来不是单一维度。2020 年版本沿用了 QRC 数据库里三个记录字段:按时交付(on time)、按预算交付(on budget)、按预期目标交付(on target)。只有三条同时满足,才计入“成功(successful)”一栏;满足一部分的计入“有挑战(challenged)”;完全失败(failed)指项目被取消或交付物无法使用。
这个口径对一线团队最大的价值在于:它逼你把“项目好不好”拆成三个可争论、可量化的维度。很多团队复盘时只盯有没有延期,却忽略预算超支和需求目标偏移。实际工作中见过一个数据平台项目,交付只晚了两周,但预算超支四成,上线后核心报表被业务方弃用。按 CHAOS 口径,这是典型的有挑战而非成功。反过来,一个按时按预算交付、但业务方不认账的项目,同样拿不到成功标签。
三个维度分开看还有一个好处:可以针对短板定向改进。时间失控,问题往往出在估算和范围蔓延;预算失控,问题出在成本可见性和变更管理;目标失控,问题出在需求澄清和验收标准。把成功标准拆开之后,复盘会从“这次到底算不算成功”的争吵,转移到“三个维度各自差在哪里”的具体讨论上。
2.2 QRC 数据库是怎么收集和切分数据的
QRC(Quality Research Center)是 Standish Group 维护的项目样本研究数据库,CHAOS 报告里的比例、中位数、规模分布都来自这个库。收集方式以问卷和访谈为主,覆盖金融、制造、政府、零售等多个行业。2020 年样本按项目规模(大、中、小)、团队规模、方法论(敏捷、瀑布、混合)以及行业做切分。公开讨论中常引用的“31% 成功率”是整体加权口径,具体到不同规模和行业,波动幅度很大。
读报告时最容易被忽略的是样本构成与成功定义的绑定关系。报告中的每个成功率都是某个切分维度下的比例,不是所有项目的统一平均。比如敏捷小型项目的成功率,和大型瀑布项目的成功率列在同一张表里,直接横向对比容易得出错误结论。正确做法是先定位自己项目的规模和行业,再看对应单元格的数字。
项目规模通常综合预算与人数判断:预算千万美元级、团队上百人的项目,天然成功率偏低。这不是团队能力问题,而是复杂度随规模非线性上升。报告的价值不在于给出一个打击信心的平均数字,而在于让你找到和自己项目最接近的参考系。所以第一遍读报告,不要从第一页顺序看到最后,直接跳到包含规模和方法论交叉表的页面开始看。
提示:报告中交叉单元格样本量可能较小,解读组合维度数据时,先确认是否标注了样本量。没有标注就只看数量级差异,不要被个位数样本的波动带偏。
2.3 用报告数字反推自己团队的口径差异
把 CHAOS 报告当作基准之前,先做一次口径对齐。报告里的“按时”是按原始计划日期还是重新基线后的日期?大多数团队在项目中途会调整计划,若把调整后的计划视为“按时”依据,成功率会虚高。我一般建议团队先做一张口径映射表,把报告的三个维度翻译成内部定义:
| 报告维度 | 团队内部定义 | 数据来源 |
|---|---|---|
| 按时交付 | 评审通过日期不晚于立项日期(不认中途基线) | 交付记录 |
| 按预算交付 | 实际成本不超过批准预算的 105% | 财务系统 |
| 目标达成 | 上线 30 天后核心指标达到立项阈值 | 业务报表 |
口径表做好后再把自家过去 6 个项目按此规则跑一遍。以下代码直接给项目打 CHAOS 标签:
import pandas as pd df = pd.read_csv("projects.csv") # 三个字段取值为 1/0,分别代表按时、按预算、目标达成 def chaos_level(row): score = row["ontime"] + row["onbudget"] + row["ontarget"] if score == 3: return "successful" if score == 0: return "failed" return "challenged" df["level"] = df.apply(chaos_level, axis=1) print(df["level"].value_counts(normalize=True).round(3))三个字段相加,3 分是成功,0 分是失败,其余归入有挑战。执行后的分布比例,可以直接拿去和报告里同规模区间的数字对比。注意 ontime 字段如果用的是调整后的计划日期,结果会偏高,建议只取立项时批准的原始日期。另一个容易踩的坑是缺失值:三个字段里只要有一个为空,就不应该参与统计,否则会人为压低失败率。
3. 用 2020 报告数据给自家项目建档与对标,先看规模分布
3.1 把 PDF 里的表格抽出来,做一次可复用提取
报告 PDF 大多是文本图层,不是扫描件,可以用 pdfplumber 直接抽取表格。以下代码把 PDF 中所有表格导出为 CSV,方便逐个查看:
import pdfplumber import pandas as pd with pdfplumber.open( "project-success-qrc-standish-group-chaos-report-2020.pdf" ) as pdf: for i, page in enumerate(pdf.pages): for j, table in enumerate(page.extract_tables()): header = table[0] rows = table[1:] df = pd.DataFrame(rows, columns=header) df.to_csv(f"p{i+1}_t{j+1}.csv", index=False)运行后当前目录会生成多个 CSV,对应 PDF 里每页的表格。优先查看包含 success rate、project size、methodology 的表,这些是最常被引用的数据。pdfplumber 对合并单元格的处理不稳定,一旦出现列错位,需要手动对照原 PDF 页码修正列名。这里不要嫌烦,因为后续做规模对标时,列名错一位就可能导致解读完全反了。
抽完表之后,建议把涉及规模交叉统计的几个 CSV 单独放进一个文件夹,命名规则统一为“页面-内容”。这样后续做季度复盘时,不必重新打开 PDF 找数,直接用整理过的 CSV 就能定位到对应数据。整个提取过程十分钟内能完成,但省下的是之后每次写汇报都要翻 PDF 的重复劳动。
3.2 按项目规模带对齐,而不是按行业对齐
报告切分到规模维度时,规律非常稳定:小型项目成功率远高于大型项目,中型居中。近几年报告重复出现这个结论。原因并不复杂:大规模项目利益相关方多,需求变更频繁,集成面广,任何环节出问题都会拖累整体成功率。行业差异对成功率的解释力远不如规模,这也是 QRC 在统计口径中把规模放在前列的原因。
所以对标时,我一般先按“团队人数 + 预算区间”给项目定档位,再看行业。下面这张表是常用的定位参考:
| 规模带 | 团队人数 | 预算范围(人民币) | 参考周期 |
|---|---|---|---|
| 小型 | 3 - 10 人 | 300 万以内 | 3 - 6 个月 |
| 中型 | 11 - 50 人 | 300 万 - 3000 万 | 6 - 18 个月 |
| 大型 | 50 人以上 | 3000 万以上 | 18 个月以上 |
定位完成后再去报告里找对应规模段的成功率区间。一个 6 人团队、200 万预算、4 个月周期的项目,属于小型;一个 80 人、8000 万预算的项目,即使用了敏捷,也应归入大型。规模档定错,后面所有对标结论都是偏的。实际执行中,团队人数和预算经常一个符合大型、一个符合中型,这时以预算为主要依据,因为预算往往更能反映项目真实复杂度和集成范围。
3.3 建立项目健康度评分,复用报告的三分法
报告的成功定义可以改造成项目中期健康度评分。具体做法是给每个项目在目标、时间、预算三个维度上各打一个状态:绿色为可控,黄色为有偏差但可纠正,红色为失控。项目经理每周填一次最小工作表,每次都回答三个问题:
- 目标:本周业务方是否确认了交付范围?是否有新需求未经评审进入待办?
- 时间:按当前剩余速度,能在原始立项日期前交付吗?
- 预算:实际消耗对比计划消耗的偏差是否超过 10%?
三个维度只要有任意一个是红色,项目整体就不应标记为绿色。这个口径与报告的三条硬指标一致。每周汇总后,把红色占比超过 50% 的项目单独拉出来做干预,比等到交付节点才看结果,能提前一个月发现问题。这套评分不需要额外工具,一张共享表格就能跑。为了让数据可追踪,建议表格里加一列填打分日期,并保留历史记录,避免已恢复绿色的项目失去历史上下文。
4. 敏捷与瀑布的成败差距,落到迭代计划和需求粒度上
4.1 敏捷优势的真正来源不是快,而是小步反馈
2020 年报告公开数据里,敏捷项目成功率显著高于瀑布项目,常见引用差距大约 20 到 30 个百分点。但要读懂这个差距,不能只停在“敏捷更好”的层面。观察 QRC 的细分数据会发现,敏捷在中小型项目上优势最明显,到了大型分布式项目上优势会缩小。背后的机制是敏捷通过短迭代把需求理解偏差、技术风险和利益相关方分歧提前暴露,让失败成本降到可控范围。
瀑布的问题不在计划本身,而在反馈闭环长。需求变更在瀑布中往往集中到测试阶段才暴露,这时修改成本已经放大几个数量级。所以读报告时还要看“挑战(challenged)”项目的失败成因排序:需求变更和规格不完整排在编码质量之前。这直接决定了改进动作应该投在需求梳理而不是测试自动化上。换句话说,与其急着上更多自动化测试,不如先解决需求理解不一致的问题,后者的杠杆大得多。
敏捷的成功率优势并不是自动获得的,而是来自强制的小步反馈循环。一旦迭代被拉长到接近瀑布周期,或者评审流于形式,这个优势就会消失。2020 年报告中的敏捷项目大多是执行得比较规范的团队,所以直接拿“我们也在跑敏捷”当理由,而不检查迭代质量,等于把基准用错了。
4.2 用迭代数据算一次速率稳定性系数
如果团队已在跑敏捷,可以从迭代历史数据里算两个指标,用数据检验健康度。
import pandas as pd df = pd.read_csv("sprint_log.csv") df["completion_rate"] = df["actual_points"] / df["planned_points"] df["quarter"] = pd.to_datetime(df["sprint_end"]).dt.to_period("Q") agg = df.groupby("quarter").agg( avg_completion=("completion_rate", "mean"), avg_drift=("drift_points", "mean"), ) print(agg.round(2))代码里 completion_rate 是迭代完成率,drift_points 是本迭代里新增和修改的故事点估算值。当完成率长期低于 70%,说明需求拆分粒度过大或估算偏差太大;drift 超过 20%,说明 Product Backlog 梳理不够充分,或业务方没有提前参与优先级排序。这两个指标配合季度趋势看,比只看燃尽图有用得多。注意 drift 的统计口径要固定,如果有的团队把拆分也算新增,数据就没法跨团队比较。
做这个分析时,建议至少取最近 6 个迭代的数据,否则速率波动会掩盖真实趋势。如果团队刚组建,前几个迭代的数据波动大是正常的,不要急着下结论。另外,actual_points 应该以迭代结束时已交付故事点为准,不要把进行中的任务算进去,否则完成率会被系统性高估。
4.3 瀑布口径的汇报数字仍然有效
即便团队主流用敏捷,对外汇报时保留瀑布口径统计没有坏处。报告本身也按方法论和规模分开统计,你可以做一张双口径报表:
| 口径 | 对内使用 | 对外汇报 |
|---|---|---|
| 敏捷指标 | 迭代完成率、需求漂移率、缺陷逃逸率 | 不直接用 |
| 传统指标 | 用于对照报告基准 | 计划完成时间、预算偏差、目标达成度 |
双口径报表的意义在于让管理层既能感知过程健康度,又能与外部基准比较。一个 Excel 透视表就能做,不需要引入 BI 工具。关键是把历史数据按统一字段维护好,避免出现同一个项目两套数字对不上。实际操作中,维护一套字段规范比选择工具重要得多:项目名称、计划日期、实际完成日期、预算、实际成本、目标指标、达成情况,这七个字段足够覆盖双口径报表的需求。
5. 把报告结论转成团队月度改进动作
5.1 5 个问题给每个项目做一次体检
CHAOS 报告不适合一年看一次。我建议每月挑一天,让每个项目经理对照五个问题给自己打勾:
- 原始计划日期是否还在生效,还是已经被悄悄替换?
- 预算偏差是否超过了 10%,有没有人每周看一次数字?
- 最近一次业务方对已交付范围的确认是什么时候?
- 上线后的成功指标有没有写清楚,谁来负责盯?
- 如果项目今天就结束,团队敢不敢按现状打“成功”标签?
只要有一个问题答不上来,项目就处于 challenged 状态。这个体检法完全复用报告的三分判定,但把检查频率从季度压到月度。建议把结果汇总到一张共享表里,连续两个月出现同样红色项的项目,直接进入风险评审。
5.2 三处最值得先改的流程设置
从报告反映的失败成因出发,优先调整三处。第一,需求评审加一道“业务价值说明”硬要求:每个用户故事必须写清楚解决谁的哪个问题,一句话写不清的直接打回。第二,看板 WIP 上限设置紧凑一些,让需求排队时间暴露出来,而不是人人都同时在做好几件事。第三,迭代回顾固定加一项成功率检查,快速过一遍速度和质量数据,有异常当场定位原因,不停留在感受层面。
报告总结的失败原因里,需求理解不一致出现频率很高,这三处改动都围绕这一点展开。WIP 上限的具体数值没有统一答案,小团队 2 到 3 个进行中的任务比较合适,团队熟悉节奏后再调整。回顾检查成功率时,不需要复杂的看板分析工具,把上一迭代的完成率和需求漂移率打印出来,对照看趋势就足够了。
5.3 立项时就把成功定义写进 PRD 第一页
把 CHAOS 口径引入立项流程,操作很简单:在 PRD 或立项文档的第一页固定放三行,分别写明按时交付的日期、预算上限和上线后 30 天的成功指标阈值。不需要额外系统支持,只是把口头约定变成文档硬约束。后续每次里程碑评审都拿这三行做对照,偏差超过设定的容忍范围就触发风险升级。这个动作对团队最大的影响不是约束,而是让所有人从第一天就对怎样算成功有一致理解,减少最后阶段才暴露的立场分歧。
本文还有配套的精品资源,点击获取