4The Mythical Man-Month(20周年纪念版)

胸有成竹

计划好要扔掉

原型开发计划策略需求变更迭代开发

🎯 AI 时代的学习建议:不要只读理论。理解这一章的设计动机(为什么需要这个概念?)和边界条件(什么情况下会失效?)。当 AI 生成的代码涉及这些概念时,你能判断它是否用对了场景。AI 能帮你总结内容,但无法替代你亲手阅读、思考、建立直觉的过程。

第4章:胸有成竹(Plan to Throw One Away)

一、导读

1.1 本章学习目标

第4章提出了一个反直觉的观点:计划好要扔掉第一个系统。Brooks 认为,第一次构建的系统几乎总是需要重写的。

1.2 为什么第四章如此重要

这个观点与敏捷开发中的迭代思想高度一致。不要试图一次做对,而是通过迭代逐步接近正确的设计。

1.3 核心问题引导

为什么第一个系统几乎总是要扔掉?

原型开发的价值是什么?

如何计划迭代?

敏捷开发如何体现这个思想?


二、核心概念详解

4.1 计划扔掉

计划好要扔掉一个系统。无论如何,你大概率会扔掉它。

Brooks 认为:

第一次构建总是学习的过程

学到的知识会改变你对系统的理解

因此第一个系统几乎总是需要重写的

4.2 原型开发

原型的目的:
- 验证设计假设
- 发现需求理解中的问题
- 学习新技术
- 评估可行性

原型不应该:
- 成为最终产品的基础
- 被用户误认为是最终产品

4.3 迭代开发

Brooks 的预见(1975年):
- 迭代开发
- 增量交付
- 用户反馈驱动

这些正是现代敏捷开发的核心理念

三、实战案例

4.1 原型 vs 产品

案例:某公司开发新的 CRM 系统

第1版(原型):
- 3个月开发
- 核心功能:客户管理、订单跟踪
- 发现:需求理解有偏差,架构不适合扩展
- 决策:重写

第2版(产品):
- 6个月开发
- 吸收了第1版的经验
- 架构更合理,功能更完善
- 成功上线

如果试图在第1版上修补:
- 架构限制导致开发越来越慢
- Bug 越来越多
- 最终还是要重写

四、本章小结

计划好要扔掉第一个系统。原型开发是学习的过程,不是最终产品。迭代开发是现代软件工程的核心理念。


五、思考与练习

为什么第一个系统几乎总是要扔掉?

原型和 MVP 有什么区别?

如何在敏捷开发中体现"计划扔掉"的思想?

如何降低重写的成本?

什么时候应该重写,什么时候应该修补?


4/8胸有成竹
0%