《The Design of Design》阅读笔记

60年设计经验的总结:Frederick Brooks 告诉你什么是真正的设计

摘要:Frederick P. Brooks 是《人月神话》的作者,IBM System/360 和 OS/360 的项目经理。在《The Design of Design》中,他跨越计算机架构、软件、建筑、书籍、组织五个领域,分享了60年的设计经验。本文提炼了书中核心理念和实用建议,帮助工程师、架构师和项目管理者重新思考"设计"这件事。


一、设计到底是什么?

Brooks 引用 Dorothy Sayers 在《The Mind of the Maker》这本书中的框架,将创造过程分为三个层面:

层面 英文 说明
理念 Idea 心智中的概念构建
实现 Energy / Implementation 在真实媒介中的落地
交互 Interaction 与用户的真实互动

莫扎特在回复父亲关于歌剧进度时曾说:"所有东西都已经创作完了,只是还没写下来。"

但对我们大多数人来说,只有在实现过程中,想法的缺陷才会暴露


二、理性模型:工程师的天然陷阱

工程师天然倾向于将设计理解为这样一个过程:

复制代码
目标 → 需求 → 约束 → 设计树 → 搜索 → 最优解

这就是所谓的理性模型(Rational Model)

但它错在哪里?

Brooks 给出了几个致命缺陷:

markdown 复制代码
❌ 我们开始时并不知道真正的目标
   → 最难的是决定"设计什么",而非"如何设计"

❌ 设计树不是预先可知的
   → 是在设计过程中边做边发现的

❌ 需求会不断演化
   → 一个简单问题"客人的外套放哪里"可能颠覆整个方案

❌ 约束也会变
   → 设计到一半,环境变了、技术变了、规范变了

引用建筑师 Donald Schön 的话:

"设计师塑造情境,情境也会'回话'。在设计过程中,设计师必须进行'行动中的反思'。"


三、Co-Evolution Model:更好的过程模型

既然理性模型不成立,Brooks 推荐协同演化模型(Co-Evolution Model)
信息交换
演化
演化
问题空间 Problem Space
解决方案空间 Solution Space
问题理解
方案发展

核心洞察:问题理解和方案发展是同时演化的,不是先有需求、后有设计。


四、约束是朋友,不是敌人

"Form is liberating."

Brooks 用多个例子证明:约束不是限制,而是创造的催化剂。

设计师 约束 产出
Bach 给自己设 BACH 音型约束 一系列杰作
Michelangelo 被废弃的有裂缝的大理石 大卫像
Wren 伦敦教堂的朝向约束 27座风格各异的教堂

实用建议

python 复制代码
# 设计开始前,列出所有约束并分类
constraints = {
    "real": ["building codes", "budget", "site setback"],
    "obsolete": ["previous tech assumptions"],
    "misperceived": ["specified topology when what mattered was reliability"],
    "artificial": ["self-imposed for creativity"]
}

识别约束

类型 说明 对待方式
真实约束 不可改变的现实(物理定律、法律、预算) 必须遵守,设计围绕它展开
过时约束 曾经真实,但技术已变 必须识别并抛弃
误以为的约束 假设存在,实际不存在 必须识别并挑战
自设的人工约束 为了激发创造力而主动添加 可以自由使用,也可以随时取消

对约束进行不断提问

问题 有效约束的回答 无效/危险约束的回答
1. 这个约束如果消失,设计会变成什么? 会有本质不同 没什么变化
2. 违反这个约束最可能的后果是什么? 具体的风险 "项目会被取消"/"老板会不高兴"(抽象恐吓)
3. 这个约束是谁提出的? 有直接责任的人(用户/法律/物理) "公司规定"/"以前就是这样"
4. 这个约束服务于什么目的? 清晰的目的陈述 说不清楚或循环论证
5. 可以换一种手段达到同样目的吗? 可以(说明约束是手段,不是目标) 不可以(警惕)

五、预算资源:比钱更重要的是什么?

每个设计都有一项稀缺资源需要精打细算。它不一定是钱。

设计场景 预算资源
海边别墅 临海面的英寸数
航天器/背包 盎司的载荷
计算机架构 控制寄存器中的位、指令格式中的位、内存带宽
OS/360 内核 内存空间(后来变成了磁盘访问次数)
芯片设计 引脚数 → 后来变成功耗

"如果你想让团队设计有概念完整性:显式命名预算资源、公开追踪、严格控制。"


六、团队设计与概念完整性

现代设计几乎都是团队设计,但概念完整性最容易在这里丢失。

如何保持概念完整性?

yaml 复制代码
方案1: 任命一位系统架构师
  - 必须有最终决定权
  - 代表用户
  - 关注概念完整性

方案2: 用户界面由一个人控制
  - 例子:Google 的 Marissa Mayer 控制首页格式

方案3: 两人团队是神奇的
  - 结对编程的研究表明:错误率显著下降,原创想法翻倍

设计概念验证

markdown 复制代码
# 设计概念陈述书
## 1. 一句话概念
- [用一句话说明这个设计解决什么问题]

## 2. 核心用户
- [谁是主要用户?他们的特征?]

## 3. 核心场景(Top 3)
- 场景1:[描述]
- 场景2:[描述]
- 场景3:[描述]

## 4. 核心概念模型
- [用户理解这个系统所需的核心抽象是什么?]

## 5. 正交性声明
- [哪些维度是独立的?]

## 6. 不做什么(同样重要!)
- 功能A:[为什么不做]
- 功能B:[为什么不做]

## 7. 预算资源
- [这个设计的稀缺资源是什么?]
- [如何追踪?]

## 8. 一致性规则
- [贯穿设计的统一规则是什么?]

## 9. 示例
- [给出 3 个"正确的用法"示例]

## 10. 反例
- [给出 3 个"违背概念"的用法示例]

版本: 1.0
所有者: [架构师姓名]
日期: [YYYY-MM-DD]

设计评审必须跨学科

markdown 复制代码
- 设计师 × 实现者 × 维护者 × 用户 × 制造商
- 关键是:不同视角看到不同的问题
- 造船厂工头的一句话可能改变整个设计

核心建议


七、为什么伟大的设计来自流程之外?

Brooks 观察到一个现象:

有粉丝的产品 无粉丝的产品
Macintosh Microsoft Windows
UNIX OS/360 MVS
Apple II IBM PC
FORTRAN COBOL

有趣的是,所有右列的产品都来自正规产品流程,而左列的明星产品几乎都来自流程之外------小型分离团队、叛逆者、闭门实验室。

流程为什么压抑创新?

markdown 复制代码
❌ 流程是保守的,它"打的是上一场仗"
❌ 流程追求可预测性,与创新天然冲突
❌ 流程是"否决制"的,每个专家都可以说"不"
❌ 流程用会议吞噬了设计师的时间

但 Brooks 并非反流程:

"对于跟随型产品,流程是有价值的。但对于真正的创新,你必须走出流程。"


八、用户模型的铁律

"Better wrong than vague."(错误但具体,胜过模糊)

团队设计中最常见的问题是:每个设计师带着不同的隐性假设在工作。

解决方案

markdown 复制代码
1. 显式写出用户和使用模型
2. 不知道的数值就"猜"
3. 让整个团队讨论这些假设
4. 把敏感性分析做出来

例子:设计校车路线调度软件

python 复制代码
user_model = {
    "school_districts": ["urban", "suburban", "rural"],
    "bus_count_range": [5, 50],
    "scheduling_frequency": "daily",
    "five_year_growth_rate": "+20%",  # 猜的
    "driver_availability": "constrained"  # 猜的
}

九、设计师的成长之路

如何培养伟大的设计师?

yaml 复制代码
教育:
  - 在批评中实践(critiqued practice)是唯一的方法
  - 不是先上完所有科学课再学设计,而是从第一年开始

组织:
  - 建立真正的双轨晋升通道
  - 保护设计师不被推上管理岗
  - 保护设计师不被日常杂务打扰

个人:
  - 主动规划自己的成长
  - 大量研究典范设计(exemplars)
  - 保持设计日志
  - 寻求专家批评

Seymour Cray 的榜样

markdown 复制代码
- CDC 6600 团队"包括清洁工在内 35 人",远居深山
- Cray 成功后主动脱离 CDC,去大草原创立 Cray Computer
- 成功后再次脱离,去科罗拉多创立 Cray Research
- 他亲自掌控从电路、制冷到编译器的所有层面
- 反复拒绝被推上管理岗位

十、一个自练项目

Brooks 推荐的自修练习(来自北卡州立大学设计学院):

设计一个 1000 平方英尺的家庭住宅

markdown 复制代码
程序:
- 家庭:父母 + 3岁儿 + 6岁女
- 地块:北弗吉尼亚郊区,临街50英尺,进深70英尺,朝南
- 有树木

要求记录日志:
- 推演更详细的建筑程序
- 识别约束条件和预算资源
- 记录所有决策和理由
- 分析自己的设计轨迹

这套练习的价值在于------无论你是软件架构师、硬件工程师还是产品经理,都能在这个小规模任务中演练完整的设计思维。


写在最后

这本书不是一本"快速上手"的手册,而是一位老工程师六十年后的沉思录。

Brooks 最后写道:

"感谢并赞美那位伟大的设计师(Great Designer),祂慷慨地赐给我们创造的媒介、日日的供应和创作的喜悦。"

如果你正在设计一个复杂系统------无论是代码、芯片、建筑还是团队------这本书值得你在书架上留一个位置。


扩展阅读

书名 作者 要点
《The Mythical Man-Month》 Brooks 软件工程、概念完整性、团队组织
《The Sciences of the Artificial》 Herbert Simon 理性模型的原典
《The Reflective Practitioner》 Donald Schön 行动中的反思
《The Cathedral and the Bazaar》 Eric Raymond 开源 vs 闭源设计过程
《Peopleware》 DeMarco & Lister 影响设计质量的非技术因素

💡 本文内容基于 Frederick P. Brooks《The Design of Design: Essays from a Computer Scientist》(2010)。如需精读原书,建议重点关注 Part I(设计的过程模型)、Part III(设计视角)和 Part V(伟大的设计师)。

相关推荐
有马贵将1 小时前
【5】微前端知识点总结
前端·架构
mkae1 小时前
eBPF高性能版fail2ban
前端
_柴富自由1 小时前
前端项目国际化解决方案
前端
isixe1 小时前
Uniapp 监听回到前台并全局唯一弹窗
前端
牛奶2 小时前
AI双层代码治理:Monorepo × Harness Engineering
前端·aigc·ai编程
蜡台2 小时前
H5使用Chrome 权限问题
前端·javascript·chrome
祁白_2 小时前
nmap工具笔记整理
笔记·web安全·测试
掘金一周2 小时前
你们觉得房贷多少,没有压力 | 沸点周刊 4.30
前端·人工智能·后端
南境十里·墨染春水2 小时前
C++笔记 STL——set
开发语言·c++·笔记