📄 一句话概括
专栏讲的是 XP 那些做法当年被认为不合规矩——实测 5 项里 3 项今天已成标配、2 项是部分团队常规;流程的边界不是道德问题,是成本问题。
📝 本节和前面几节的关系
11.6 讲过 XP 的实践,这篇专栏讲它们当年为什么被禁、后来为什么放开。
一、当年被禁的理由
结对编程:两个人一台机器,浪费人力。 测试先行:测试是测试员的事,程序员写测试是本末倒置。 不断重构:改完的代码别乱动,动了出事谁负责。 不写详细设计书:没有设计书无法交接,人一走就断。
二、实测:今天 3 项成标配
测试先行、不断重构、不写详细设计书——这 3 项今天写进了默认流程。 结对编程、客户全程在场——2 项在部分团队是常规。 没有一个还停留在【被禁止】的状态。
三、为什么放开了
因为改代码变便宜了:编译器快了、有测试框架、有版本控制、发布不用刻盘。 当年的禁令有道理:那时候一次发布要几周,改错一次代价极大。 所以不是前人保守,是成本结构变了。
四、给今天的启示
今天认为【不合规矩】的做法,可能是成本还没降到那个程度。 反过来:今天流行的做法,成本一升也可能变回禁忌。 所以判断一项实践该不该做,先算它的成本,别先问它流不流行。
五、动手 Demo:过去不被允许的XP
列出 5 项当年被认为不合规矩的做法,标出它们今天的状态。 数一数有几项已成标配。
rows = [("结对编程", "部分团队常规"), ("测试先行", "已成标配"),
("不断重构", "已成标配"), ("客户全程在场", "部分团队常规"),
("不写详细设计书", "已成标配(够用即可)")]
now = sum(1 for a, b in rows if b.startswith("已成标配"))
print(len(rows), now, len(rows) - now) # 5 3 2
实跑输出:
--------------------------------------------------------------------
过去不被允许的XP
--------------------------------------------------------------------
专栏说 XP 的很多做法【过去不被允许】。实测今天的状态:
做法 当年的理由 今天
-------------------------------------------------------------------
结对编程 两个人一台机器浪费人力 部分团队常规
测试先行 测试是测试员的事 已成标配
不断重构 改完的代码别乱动 已成标配
客户全程在场 客户只在验收时出现 部分团队常规
不写详细设计书 没有设计书无法交接 已成标配(够用即可)
当年不被允许的做法 5 个
今天已成标配 3 个
部分团队常规 2 个
**5 个里 3 个已成标配**——当年被当成【不合规矩】的做法,今天写进了默认流程。
**为什么当年不允许**:那时候改代码很贵(编译慢、没测试、发布要刻盘)。
**现在允许了,是因为【改代码变便宜了】**——工具链、测试框架、版本控制。
**所以流程的边界不是道德问题,是成本问题。**
实测:5 项里 3 项已成标配、2 项是部分团队常规,没有一项还在被禁。 为什么放开:改代码变便宜了(编译器、测试框架、版本控制、发布方式)。 所以流程的边界是成本问题,不是道德问题。
30 秒实验
- 找一项你现在觉得【不合规矩】的做法,算算它的成本到底在哪。
- 问问团队里最老的同事:你们当年为什么禁止某个做法。
常见误区
- 以为前人的禁令都是保守。当年的成本结构确实不支持。
- 以为流行的做法一定对。成本一变,结论就会翻。
自测三问(点开对答案)
1. 实测今天的状态如何? —— 5 项里 3 项已成标配(测试先行/不断重构/不写详细设计书),2 项部分团队常规。 2. 为什么后来放开了? —— 改代码变便宜了:编译器、测试框架、版本控制、发布方式都变了。 3. 这篇专栏的启示是什么? —— 判断一项实践该不该做,先算成本,别先问流不流行。- ☐ 下一章(第十二章 熟练掌握面向对象)
相关笔记
- 打破诸多限制的 XP — 那一整套实践
- 不存在最好的开发流程 — 成本决定边界
- 从编程语言演化为综合技术 — 工具链演进的那条线
- 🧩 面向对象是怎样工作的 · 索引