一、全书概览

这本书讲的是程序员需要掌握的16种底层思维能力。作者张建飞在阿里做过多年应用架构和领域建模,开源的COLA架构在国内DDD圈子里算是影响力最大的实践之一。书分三个部分:基础思维能力(9种)、专业思维能力(7种)、综合应用实践。

说实话,这本书的定位有点尴尬。优点是把很多程序员日常中"似懂非懂"的思维模式显性化了——你平时写代码时隐约在用分治、在用抽象、在做分类,但很少有人把这些东西系统化地拎出来讲清楚。缺点也很明显:16种思维压缩在一本书里,每种都只能浅尝辄止,读过《代码大全》《架构整洁之道》《学会提问》的人会觉得大部分内容是"冷饭重炒"。

不过,它最大的价值在于把软件设计和通用思维模型做了一次对接。市面上讲思维模型的书不少,讲软件设计的书更多,但很少有人把两者放在同一本书里讲清楚它们之间的关系。如果你是3-8年经验的程序员,正在经历从"能写代码"到"能做设计"的转型期,这本书可以作为一个不错的思维索引手册。

微信读书上读了99%,1小时50分钟,标记了2条笔记。读完时间跨度从2023年9月到2024年4月,说明阅读节奏偏慢,中间有中断——这本书确实不太适合一口气读完,更适合放在手边,遇到设计问题时翻对应的章节。


二、逐章要点

第一部分:基础思维能力

第1章 抽象思维——程序员的看家本领

抽象=抽离+具象,从具体事物中提取共同特征,得到一般化概念。这是全书最扎实的一章,作者花了很大篇幅讲抽象在软件设计中的落地。

几个值得记住的点:

  • 抽象设计的评判标准:耦合性(越低越好)、内聚性(越高越好)、充分性(要记录足够多的特征)、完整性(要记录全部有意义的特征)
  • 抽象缺失的两种典型表现:基础类型偏执(该抽象成实体类的用了int/string散落各处)和重复代码
  • 抽象层次性:层次越高,内涵越小,外延越大,扩展性越好;层次越低,语义表达能力越强。选择什么层次取决于业务需要
  • SLAP原则(Single Level of Abstraction Principle):每个方法中的代码都应处于同一级抽象层次,不要在高层逻辑里混入底层细节
  • 不要为了抽象而抽象:抽象的前提是共性抽取

第2章 逻辑思维——从概念到推理

逻辑三要素:概念、判断、推理。

  • 概念要明确清晰,团队需要统一语言(这其实就是DDD里"通用语言"的思想来源)
  • 判断有肯定/否定、真/假之分
  • 推理分三种:演绎推理(一般→特殊)、归纳推理(特殊→一般)、溯因推理(已知结果→追溯原因)

5Why思考法是最实用的工具:连续追问为什么,找到根因。丰田大野耐一的经典案例——机器停转,5次追问最终发现是没装过滤器导致润滑油混入铁屑。5So思考法则是反方向:追问一个现象会带来什么后果,洞悉未来趋势。

作者还列了5种常见逻辑谬误:偷换概念、错误假设、循环论证、以偏概全、滑坡谬误。这些在日常技术评审和方案讨论中非常常见。

第3章 结构化思维——从无序到有序

结构化思维的本质是以逻辑为基础,把混乱信息组织成有规律的结构。人类大脑有两个特点:不能一次处理太多信息(短期记忆7±2个模块)、喜欢有规律的信息。

金字塔结构是核心框架:纵向是层次关系(结论先行、以上统下),横向是关联关系(归类分组、逻辑递进)。搭建结构有两种方式:

  • 自上而下:从目标出发,问题分解(2W1H框架)
  • 自下而上:从信息出发,抽象聚合

额外提到的结构框架:5W2H、4P营销模型、7S组织模型、SWOT分析、SMART目标模型。

第4章 批判性思维——对思维的再思考

"批判"来自希腊语kriticos,意思是分辨力、决断力,不是批评别人。批判性思维是对思维过程的再思考。

最有意思的是用批判性思维来分析"中台"和"架构师"这两个行业热点:

  • 批判中台:业务中台低效的根本原因是前台业务和中台的"深度单体耦合"——协作成本高、认知成本高、稳定性成本高。解决方法是做薄业务能力、做强中台能力、简化系统结构
  • 批判架构师:架构师的价值和他做的决定成反比——做的决定越少,说明架构越合理,越让系统自己运转。每个工程师都应该具备一定的架构能力
  • 批判技术管理者:技术不作为、业务不思考、脾气超火爆——这三条几乎可以当自查清单

第5章 维度思维——从点到体

一个人的思维层级和思考维度正相关。一维是线性思维("一根筋"),二维是面状思考("全面"),三维是体系化思考("方方面面")。

在代码层面的体现就是:不要写if-else,用多态扩展、代码分离、矩阵分析来代替。多维度思考是解决复杂问题的关键。

第6章 分类思维——化繁为简的利器

分类是人类大脑的识别模式。分类的目的是找到问题域中的"核心抽象",基于这些核心抽象设计领域模型和数据模型。

一个重要观点:没有完美的分类,任何分类都和观察者的视角和目的有关。这直接呼应了DDD中"限界上下文"的思想——同一个事物在不同上下文中可以有不同的分类方式。

第7章 分治思维——分而治之

分治三步骤:分(递归分解)、治(各个击破)、并(逐层合并)。

软件中到处是分治思想:管道模式、分层架构、分布式架构。分治的核心价值是让你在同一时间只关注问题的一部分,降低认知负荷。

第8章 简单思维——化繁为简

简化本质上是熵减活动——所有事物都在缓慢熵增(热力学第二定律),而简化是逆向做功,让混乱回归秩序。

简单≠简陋。简单是洞察问题本质后的化繁为简,简陋是不加思考的粗暴处理。好的设计通常经历"简单→复杂→简单"的演化过程。UNIX哲学浓缩为一条KISS原则。

第9章 成长型思维——不要自我设限

固定型思维相信天赋决定上限,成长型思维相信努力可以突破边界。一旦相信了天分,就会给自己设限,觉得努力是丢脸的事。

第二部分:专业思维能力

第10章 解耦思维——高内聚、低耦合

"计算机中的任何问题,都可以通过加一层来解决"——中间层的价值就是解耦。

应用架构的核心目标之一是实现业务逻辑和技术细节的解耦。高内聚、低耦合不只是口号,组件、模块、层次设计都应该遵循。

第11章 契约思维——规则与规范

"写代码是自由的,但无往不在规则之下"。契约思维的核心是制定规范(命名规范、异常处理规范、架构规范),通过一致性来降低认知成本和复杂度。

编程在很大程度上是一种"制定契约"的工作。社会大规模分工协作也离不开契约思维。

第12章 模型思维——软件工程的高阶工作

"在软件工程中,有两个高阶工作,一个是架构,另一个是建模。"如果把写代码比喻成"搬砖",架构和建模就是"设计图纸"。

领域模型连接问题空间和解决方案空间,关注业务语义的表达能力。数据模型关注数据存储,决策因素是扩展性和性能。两者的关注点完全不同,但经常被混淆。

建模的关键在于:领域模型能否显性化、清晰地表达业务语义,其次才是扩展性。

第13章 工具化思维——智慧地"懒"

"懒"分三个境界:实在懒(拖延)、开明懒(快速做完摆脱)、智慧懒(用工具一劳永逸)。工具化思维追求的是第三个境界。

第14章 量化思维——没有量化就无法优化

"No measurement, no improvement."——温斯洛·泰勒

量化三步:定义指标→将指标数字化→优化指标。量化本身很难,但不能因此放弃量化的思考。没有量化的目标像断了线的风筝。

第15章 数据思维——一切业务数据化,一切数据业务化

业务数据化:把用户行为沉淀为数据。数据业务化:用数据反哺业务决策和推荐。这两个方向形成闭环。

第16章 产品思维——从How到Why

工程师关注How(怎么做),产品经理关注Why(为什么做)。结合两种思维能让思考更全面。

产品三要素:用户(服务对象)、需求(核心问题,分表象/目的/人性三个层次)、场景(何时何地使用)。技术人员需要产品思维来辨别需求真伪,把时间花在真正有价值的项目上。

第三部分:综合应用

第17-18章 综合运用与COLA演进

将前面16种思维应用到实际架构设计中。COLA架构的演进过程展示了这些思维如何在实践中落地——从简单的分层架构,到引入DDD的领域模型,再到COLA 4.0的完整应用架构。


三、关键概念速查

| 概念 | 一句话解释 | 出处章节 | |------|-----------|---------| | 抽象层次性 | 层次越高扩展性越好但语义越弱,层次越低语义越强但扩展性越差 | 第1章 | | SLAP原则 | 单一抽象层次原则,每个方法内代码应在同一级抽象 | 第1章 | | 5Why/5So | 因方向追问根因,果方向追问影响,延长逻辑链 | 第2章 | | 金字塔结构 | 纵向层次(结论先行+以上统下)+横向关联(归类分组+逻辑递进) | 第3章 | | 熵减做功 | 简化是逆向做功,对抗热力学第二定律的必然熵增 | 第8章 | | 领域模型 vs 数据模型 | 领域模型关注业务语义表达,数据模型关注存储和性能 | 第12章 | | 智慧懒 | 用工具解决重复工作,一劳永逸,这是懒的最高境界 | 第13章 | | 产品三要素 | 用户、需求(表象→目的→人性)、场景 | 第16章 | | 架构师价值定理 | 架构师的价值与他做的决定数量成反比 | 第4章 | | 基础类型偏执 | 该抽象为实体类的用了int/string,典型的抽象缺失 | 第1章 |


四、核心框架/模型

1. 16种思维的两层分类体系

基础思维能力(通用的,解决日常问题)
├── 抽象思维 → 提取共性,形成概念
├── 逻辑思维 → 概念→判断→推理
├── 结构化思维 → 无序→有序,金字塔结构
├── 批判性思维 → 对思维的再思考
├── 维度思维 → 从点到面的多维分析
├── 分类思维 → 找到核心抽象
├── 分治思维 → 分→治→并
├── 简单思维 → 熵减做功,化繁为简
└── 成长型思维 → 不自我设限

专业思维能力(结合软件行业特点)
├── 解耦思维 → 高内聚低耦合
├── 契约思维 → 规范与一致性
├── 模型思维 → 架构+建模
├── 工具化思维 → 智慧懒
├── 量化思维 → 定义→数字化→优化
├── 数据思维 → 业务数据化+数据业务化
└── 产品思维 → 用户+需求+场景

2. 抽象设计的四维评判标准

  • 耦合性:模块间联系越少越好
  • 内聚性:模块内元素联系越紧密越好
  • 充分性:记录足够多的特征以支持有意义的交互
  • 完整性:记录全部有意义的特征

3. 逻辑推理三类型

  • 演绎推理:一般→特殊(因为A,因为B,所以C)
  • 归纳推理:特殊→一般(观察多个案例,得出普遍结论)
  • 溯因推理:已知结果→追溯原因(大胆假设,小心求证)

4. 量化三步法

  1. 定义指标(找到关键量化指标)
  2. 将指标数字化(数据收集、存储、展现)
  3. 优化指标(围绕数据迭代改进)

5. 结构搭建三路径

  • 自上而下:目标驱动,问题分解(2W1H/5W2H)
  • 自下而上:信息聚合,抽象建模
  • 上下结合:分解+聚合同时进行

五、金句摘录

  1. "在软件工程中,有两个高阶工作,一个是架构,另一个是建模。如果把写代码比喻成'搬砖',那么架构和建模就是'设计图纸'了。"——第12章 模型思维
  1. "简单不是一个简单的目标,而是一个非常高的目标。所有的UNIX哲学浓缩为一条铁律就是KISS原则。"——第8章 简单思维
  1. "没有量化的目标,就像是断了线的风筝,没有方向,缺少指引,飞到哪里是哪里。"——第14章 量化思维
  1. "架构师的价值和他做的决定是成反比的。"——第4章 批判性思维
  1. "软件开发行业的匠心和传统行业的匠心不一样,不是重复做简单的事情,你就能把它做好。这就好比你即使做了10年的收银员,也只是一个收银员,无法成为财务总监。在软件开发行业,你需要不断地学习、不断地思考、不断地积累、不断地尝试、不断地失败、不断地创新,才有可能做得好。"——后记
  1. "优秀的工程师,心中都有一团火——一种对美的追求和渴望。这需要我们经历无数个不眠之夜,承受很大的压力,受很多委屈,看很多的书,尝试很多别人没有实践过的东西,要具有一颗'不妥协、不将就、不放弃'的倔强的心。"——后记
  1. "写代码是自由的,但无往不在规则之下。"——第11章 契约思维

六、行动清单

每天

  • 5Why追问一次:遇到bug或线上问题时,至少连问3次为什么,不满足于表面原因。坚持一个月,你会发现根因分析能力明显提升
  • 代码审查时检查SLAP:看别人的代码(或自己昨天的代码)有没有违反单一抽象层次原则——高层逻辑里混进了底层实现细节就是典型的违规
  • 命名训练:给变量、方法、类命名时多想5秒钟。好的命名就是好的抽象,差的命名说明你还没想清楚这个概念的本质

每周

  • 用金字塔结构做一次技术分享或周报:结论先行→3个支撑论点→每个论点下的证据。强迫自己用结构化思维组织信息
  • 做一次分类审查:选一个你负责的模块,检查里面的类/方法分类是否合理。有没有应该归为一类但散落各处的?有没有不属于这个类但被塞进来的?
  • 量化一项工作指标:选一个你想改进的方面(代码质量、部署频率、bug修复时长),定义一个指标,开始收集数据。不需要完美的量化方案,先跑起来再说

每月

  • 读一个思维模型的深度资料:这本书里16种思维每种都值得深挖。每月挑一种,找一本更专业的书来读——抽象思维看《重构》,结构化思维看《金字塔原理》,批判性思维看《学会提问》,简单思维看《UNIX编程艺术》
  • 做一次"批判性思维"复盘:回顾这个月的重大技术决策,用书中的逻辑谬误清单(偷换概念、错误假设、循环论证、以偏概全、滑坡谬误)检查自己的思考过程有没有漏洞
  • 重构一处"基础类型偏执"的代码:找到代码库中用int/string表示业务概念的地方,抽象成合适的领域对象。这是练习抽象思维最直接的方式
  • 评估你的"懒"的境界:这个月有没有哪些重复性工作可以用脚本/工具自动化?如果有但没做,说明你还停留在"开明懒"阶段,往"智慧懒"进阶

七、一句话总结

这本书是程序员的思维索引手册——它不教你具体的编码技巧,而是帮你意识到:你日常写代码时隐约在用的那些思维方式,其实都有名字、有方法、有刻意练习的路径,值得被显性化和系统化。


八、读者热议

🟢 正面评价

1. "干货和水货参半,但干货确实有用"

来源:微信读书@强(128赞) 认同度:★★★★★ 最实在的评价。思维方式显性化是最大的贡献,但部分思维讲得太浅(批判性思维、维度思维、模型思维),例子也不够贴合。

2. "可以作为常备手边的思维手册"

来源:微信读书@强(128赞) 认同度:★★★★☆ 这句话定位很准。不是那种值得从头到尾精读的书,但放在手边,遇到设计问题时翻对应章节,会有启发。

3. "看了很多坑是作者真实遇到的"

来源:微信读书@拾光先生(43赞) 认同度:★★★★☆ 阿里一线实战经验的含金量。对中台、架构师的批判部分特别有共鸣。

4. "适合非工程师也读一读"

来源:微信读书@Kelvin姚(2赞) 认同度:★★★☆☆ 基础思维能力那部分确实通用,但专业思维部分非技术人员基本读不进去。

5. "读完对本人来说有不小收获"

来源:微信读书@拾光先生(43赞) 认同度:★★★★☆ 多年工作经验的人更能体会书中的思路,新手可能收获打折。

🔴 负面评价

6. "炒国外大佬们的冷饭"

来源:微信读书@甜美豆子(1赞) 认同度:★★☆☆☆ 确实,《代码大全》《架构整洁之道》《重构》的原作者们早就把这些思维讲透了。这本书的原创贡献有限。

7. "适合刚入行的小白,扯一堆概念都非常浅"

来源:微信读书@菜狗(13赞) 认同度:★★★☆☆ 过于苛刻但有一定道理。16种思维塞进一本书,每种只能点到为止。如果你已经读过《学会提问》《金字塔原理》《架构整洁之道》《代码大全》《原则》这些书,确实会觉得这本书是"入门导论"级别。

8. "跟我第一次看Clean Code时的震撼无法相比"

来源:微信读书@甜美豆子(1赞) 认同度:★★★☆☆ 这个对比很真实。Clean Code是开创性的,这本书更多是整理性的。


笔记生成时间:2026-04-28 数据来源:微信读书(bookId: 3300053062)、豆瓣、掘金、博客园


相关笔记

同作者仅有此篇 同主题: