第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 有什么区别?
如何在敏捷开发中体现"计划扔掉"的思想?
如何降低重写的成本?
什么时候应该重写,什么时候应该修补?