🧡 第六章 进阶对话技巧
📄 一句话概括

一件大活分成五轮推,每轮一个验收点,而且每轮都写清【这轮不许干什么】——好处是任何一轮叫停,手上的东西都是完整可用的。

📝 本节和前面几节的关系

上一节讲怎么问,这一节讲怎么持续推进——一件大活最考验的不是单句质量,是轮次切分。

一、为什么大活不能一口气交代

一口气交代的后果不是做得慢,是中途出了岔子你不知道它走到哪了。 而且大活必然要改很多地方,改得越多越容易跑偏。 所以大活要切轮——一轮一件事,每轮都有验收。

二、五轮怎么切

第 1 轮:先让它讲清楚现状,不动代码。第 2 轮:要方案,不许写。 第 3 轮:先写一个失败测试,只加测试。第 4 轮:实现到测试通过,只改实现。第 5 轮:整理与自查。 本节的演示把五轮的【干什么、验收、不许干什么】列成表,你可以照着套。

三、关键是每轮都写【这轮不许干什么】

【不许写代码】会让第 1 轮真的只是在讲清楚现状。 【只加测试】会让第 4 轮不去乱改别的。 这些不是废话——它们是防止跑偏的护栏,和第 5.2 节的护栏一个道理。

四、这样切的实际好处

任何一轮你叫停,手上的东西都是完整可用的。 出问题时立刻知道是哪一轮,不用翻几千行改动。 每一轮都能给你一个决策点——看完这一轮再决定要不要继续。 这三件事加起来,就是本节全部的用处。

五、动手 Demo:一件大活,分几轮推

下面把【加一个导出功能】拆成五轮,每轮一个验收点。

rounds = [(u"第 1 轮", u"先让它讲清楚现状", u"能说清现有结构", u"不动一行代码"),
           (u"第 2 轮", u"要方案,不许写", u"拿到方案并指出问题", u"仍然不动代码"),
           (u"第 3 轮", u"先写失败测试", u"测试跑得起来且是失败的", u"只加测试"),
           (u"第 4 轮", u"实现到测试通过", u"测试全绿", u"只改实现"),
           (u"第 5 轮", u"整理与自查", u"格式统一、复看全部改动", u"只做整理")]

实跑输出:

--------------------------------------------------------------------
一件大活,分几轮推
--------------------------------------------------------------------

把【加一个导出功能】拆成轮次。注意每轮都有验收:

  轮次        这轮干什么           验收                       这轮不许干
  -------------------------------------------------------------------------
  第 1 轮     先让它讲清楚现状     能说清现有结构             不动一行代码
  第 2 轮     要方案,不许写       拿到方案并指出问题         仍然不动代码
  第 3 轮     先写失败测试         测试跑得起来且是失败的     只加测试
  第 4 轮     实现到测试通过       测试全绿                   只改实现
  第 5 轮     整理与自查           格式统一、复看全部改动     只做整理

五轮,每轮一个验收点,而且每轮都写了**这轮不许干什么**。
好处很实在:任何一轮你叫停,**手上的东西都是完整可用的**。

第四列【这轮不许干什么】是这张表的关键——它就是防跑偏的护栏。 好处很实在:任何一轮叫停,手上的东西都完整可用。

30 秒实验

  1. 把你手上最大的一件活,照着这个五轮切一遍。
  2. 每一轮开工前先说【这轮不许干什么】——试一周,看看还跑不跑偏。

常见误区

  1. 第 1 轮就让它动手。【讲清现状】这一步省掉,后面跑偏你都不知道。
  2. 轮次里不加【不许干什么】。没护栏的轮次只是建议,它一冲动就跑了。
自测三问(点开对答案) 1. 大活分轮的五步是什么? —— 讲清现状、要方案不写、先写失败测试、实现到测试通过、整理自查。 2. 每轮都写【这轮不许干什么】有什么用? —— 它是防跑偏的护栏——没护栏的轮次只是建议。 3. 这样切的实际好处是什么? —— 任何一轮叫停手上的东西都完整可用、出错立刻知道是哪一轮、每轮都有决策点。

相关笔记