<audio id="audio" title="05 | 规划：排除计划中的“延期地雷”" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/80/af/808cc26ac2483abef239492c6b9b7daf.mp3"></audio>

你好，我是雷蓓蓓。今天，我们来聊一聊如何排除计划中的“延期地雷”。

我发现，有很多程序员是根本不做估算的。原因有很多，但总体来说，可以归结为一个：**嫌麻烦**。我的一个程序员朋友曾经跟我说过这样一段话：“我们是创业团队，领导一拍脑袋给个deadline，时间差不多了我们就开干。如果到时候上不了线，我们就再加班呗！反正计划都是倒排的，估不估工作量，问题不大。”

这种现象很普遍，那么，为啥一定要做计划呢？

在项目管理中，**计划是贯穿始终的重要课题，是各个角色协同工作的基准**。程序员在做项目管理的时候，会有个特别明显的优势，就是对项目中涉及到的架构设计、技术难点等问题，有着非常深刻的理解，因此，你对技术类风险会有更高的把控力。

但是，你还需要学习的是，从全局的视角出发，去推进项目整体目标的落地，优化各个角色的协同过程。作为项目经理，你要**利用一切可以利用的资源、尽自己最大的努力达成项目目标**，而计划是你可以借助的重要工具。

那么，计划到底是什么？计划是用来做什么的呢？

实际上，计划是“市场需求或发起人的期望”和“团队生产力”之间平衡的结果。**从本质上来讲，计划是用来对焦的！做计划，是个集体对焦的过程**。如果我们省去对焦的步骤，就会给后续的执行工作埋下很多“地雷”。在执行过程中，这些“地雷”一旦被引爆，就会把我们的项目拖向失控的深渊。

## 扫雷游戏

我们都知道，好的计划是成功的开始。但是，在做计划时，我们很容易遭遇一些雷区，下面我们就一起来玩一个“扫雷游戏”。

我有个程序员朋友小勤，她升任项目负责人之后，在工作中突然多了很多困惑，尤其是在做计划时，她遇到了很多问题。现在，我就带你来看看她在做计划时遇到的典型问题。

这些问题涉及五大常见雷区，希望通过这些讨论，你能对导致计划失败的这五大雷区有更深刻的理解，提早规避。

### 雷区1：不够具体

小勤的第一版计划是这样的：

> 
网课2.0升级项目计划于9月18日提测，10月1日正式上线。


你可能会说，这也太简单了吧？实际上，在程序员自己管理的项目中，这种“一句话式”的计划是很常见的。这份计划规定了提测和上线时间，也算是有了基本的约定。

但是，你还记得我们刚刚对计划的定义吗？计划是一种集体对焦的方式。**好的计划，不仅要给出时间节点，还要给出依据和来源，这样才能更有效地对焦。**

这里需要引入一个概念，叫作**WBS工作分解（Work Breakdown Structure），这是我们做计划的第一个标准动作**。

作为一个描述思路的规划和设计工具，WBS可以清晰地表示各项目工作之间的相互联系，帮助团队更高效地管理项目。

WBS是项目管理领域非常重要的方法。**创建WBS的过程，也就是把项目工作按阶段可交付成果分解成较小的、更易于管理的组成部分的过程**。

简单来说，WBS就是“把大象放进冰箱”的过程，在做计划的时候，我们要把“大象”，也就是我们要做的这件事情真正拆解开，明确要分成多少块工作内容，涉及哪些角色和哪些环节的工作项，你需要将工作项拆解到3个工作日以内，每项任务都对应到个人。

在跟小勤沟通好WBS之后，她很认真地做了改进，以下是她修改后的第二版计划：

<img src="https://static001.geekbang.org/resource/image/fc/e4/fc48769b83279ac847eee1640bfaa7e4.png" alt="">

从这份计划中，我们可以看到，小勤对开发任务进行了详细地拆解，每个人的工作都很明确。你觉得这样很好了，对不对？

No！这恰恰是做计划时最容易忽视的一种“延期地雷”。这份计划，看似很详细，实际上仍然是个任务的集合，没有办法指引我们有效地达到目标。

**做计划的方式的转变，背后其实是思维方式的根本转变**。小勤在做程序员的时候，她的目标就是完成开发任务。但当她的职责扩大之后，她本能地将设定目标默认为完成一堆开发任务，她还没有意识到，作为项目负责人，自己还需要做些什么。

### 雷区2：不够全面

我刚刚说过，项目管理是运用当前一切可用的资源，去完成整个项目目标。这份计划的最大问题就是，**只有任务列表，没有识别关键资源和关键依赖，也没有考虑研发之外其他环节**。这样的计划，无法让我们明确实现目标的关键路径，也无法明确是否可以完成目标以及如何完成。

**识别依赖并画出关键路径，就是我要讲的做计划的第二个标准动作，这一步意味着我们开始从目标的角度对资源进行统筹思考**。

关键路径是决定项目工期的进度活动序列。它是项目中最长的路径，关键路径的工期决定了整个项目的工期。所以，任何关键路径上的延迟都将直接影响项目的预期完成时间。

明确了这一点之后，小勤又进一步调整了计划，我们来看看小勤做的第三版计划。

<img src="https://static001.geekbang.org/resource/image/7c/f2/7c14929c016a6c3a7da15d8df0e1e2f2.png" alt="">

从图中可以看出，小勤已经把工作流中的先后依赖关系识别出来了，这样一来，关键路径也明确了，这份计划总算有个模样了。清晰了关键路径之后，我们要对其进行持续关注，把关键路径上的风险作为最高优先级应对。

除此之外，在核心部分计划出炉以后，我们还要对项目涉及到的其他合作环节，进行全面地规划和安排，为各个阶段设定合理的里程碑节点，确保考虑周全。

听完我的建议之后，小勤再一次改进了她的计划，把其他合作环节也明确地标注出来了，如图所示：

<img src="https://static001.geekbang.org/resource/image/96/55/969a02fcc5ad8b23659978f8efb00c55.jpg" alt="">

明确了和其他合作环节的时间节点之后，我建议你使用**Visio**工具，把整个过程可视化出来，让计划更加直观。

<img src="https://static001.geekbang.org/resource/image/ec/39/ec79d263252f1c47c4e7f8d305515839.png" alt="">

### 雷区3：不够准确

修改过几轮计划之后，小勤对于日常排期越发驾轻就熟。她再一次来找我时，情况已经好了很多。不过，她又碰到了一些新问题。

排在首位的是，当计划在执行中出问题的时候，总是会产生很多纠纷，大多是因为大家对一些节点的定义理解不一致，比如什么叫提测，什么叫里程碑完成。

有一次还发生了“乌龙事件”。在临近上线时，开发同学跟她说：“拜托！我从来没说过XX号完成交付，我说的是XX号开发完，你去看看聊天记录！”这让她很是难堪。

对小勤来讲，这时迫切要做的，就是让节点的定义形成共同的标准。这就要引出**做计划的第三个标准动作了，就是定义完成标准**。

简单来讲，完成标准就是某时间点需要完成的事项列表，或者是应该达到的某项指标（特定水平的Bug数量/性能指标等）。进度计划中的任何重要时间节点，都应该有一组完成标准。**越早定义完成标准，计划按照期望完成的概率就越大**。

以最关键的几个常见时间节点为例，完成标准如下：

- **需求/设计确认**：执行所需的需求稿或设计稿已经完成，而且公开评审通过，团队已经准备好要编写产品代码了。值得一提的是，有些团队还会对需求稿或设计稿做一定的要求，比如把未处理的反馈意见数小于多少作为标准。
- **功能完成/提测**：所有定义的功能都已经完成（比如冒烟测试通过率高于90%），团队已经准备好将焦点转移到质量保证上，并将所有剩余问题都当作Bug来跟踪。一些质量基础比较好的团队，也可以把CI自动回归用例集通过率、静态代码检查分数、单元测试覆盖率等，作为更加细节具体的完成标准。
- **里程碑完成**：质量已经达到适当水平（如不存在P0及P1优先级的Bug），可以上线发布，或者可以开始下一个里程碑。

### 雷区4：没有共识

事先定义完成标准，就好比提前约法三章，会让计划有更准确的指向作用。当我继续深挖小勤的烦恼之后，我发现，她做计划还有个毛病，就是进度计划的文档只在她自己的电脑里，在执行计划的过程中，她只和几个开发口头说过，从来没有以任何公开的方式发布过，甚至都没有发邮件、公告等与全员同步信息，更别说开专门的规划会了。

她只是“做”了一份计划，而不是在“做计划”。这真是个惊人的发现。

其实，做计划本身并不是最难的，真正难的是什么？对焦！**没有达成共识的计划，是不具备任何效力的**。

事实上，PM在召开规划会之前，排期的内容已经准备得差不多了。在全员规划会上，除了对齐信息之外，更重要的是当面达成共识，这其实也是仪式感和承诺的象征，对计划后续的有效执行，是至关重要的。因此，**达成共识并公开透明，就是做计划的第四个标准动作**。

对于一些小项目，即便没有全员规划会，我也强烈建议你至少要在确认计划之后，向所有项目组成员，包括项目的所有干系人，发送计划邮件，正式周知，这可以尽早地发现共识的偏差。

### 雷区5：不够即时

计划就像冰箱里的酸奶，即时的，才是有效的。虽然定计划是个谨慎的过程，但我们也需要看到，计划绝不是固定不变的。

在整个项目周期中，由于随时会可能出现变更，加上对估算的不断细化，做计划永远是个反复修正、渐进明晰的过程，我们要对计划进行持续地跟进与调整**。重要的是，每一次进行调整，都要确保项目中的每个人知道当前的计划是什么，调整计划需要怎样的决策过程，都需要谁参与决策**。而**及时调整变更，就是做计划的第五个标准动作**。

你需要注意的是，与进度计划有关的任何变更，都需要提交给项目管理人员，最好由团队中对应功能小组的成员（该功能模块涉及的策划、设计、开发、测试）及其他相关干系方共同讨论，明确计划变动可能对各方造成的影响，最终做出决策，并公开告知所有项目组成员。

## 总结

好了，做计划的五大雷区我都介绍完了，针对这些雷区，我给出了做计划的5个标准动作，分别是**WBS工作分解**，**识别依赖及各环节关键路径**，**定义完成标准**，**达成共识并公开透明**，**即时调整变更**。最后，针对雷区的特征，我用一张图片来总结一下好计划应该具有的特点。希望你在做计划时，能够对照着下表进行梳理，以免埋下“延期地雷”。

<img src="https://static001.geekbang.org/resource/image/c3/9f/c3666af0b298fcad7fc7e819aca33f9f.jpg" alt="">

## 畅所欲言

如果你是我在这一讲开头提到的那位创业团队的程序员，你被老板要求倒排时间，你会怎么办？请尝试运用今天所学的知识，梳理一下自己的行动方案。

欢迎你畅所欲言，我在留言区等你，也欢迎你把文章分享给你的朋友。


