易燃物汇聚 YouTube 有声书与书评
程序员的底层思维 封面

程序员的底层思维

张建飞

2.2万人在读
22万字总字数
¥64.5定价

有声书与视频解读 YouTube视频解读 2

内容简介

本书涵盖程序员应知应会的16种思维能力,共18章,分为三部分。第一部分主要介绍抽象思维、逻辑思维、结构化思维、批判性思维、维度思维、分类思维、分治思维、简单思维,以及成长型思维等解决日常问题的基础思维能力。第二部分结合软件行业的特点,主要介绍解耦思维、契约思维、模型思维、工具化思维、量化思维、数据思维,以及产品思维等专业思维能力。第三部分主要是对上述思维能力的综合运用实践。

读者书评

★★★★★

《程序员的底层思维》全书总结 作者: 张建飞 | 出版社: 电子工业出版社 | 出版时间: 2022年2月 | 字数: 约49万字 一、全书总览:从"术"到"道"的升华《程序员的底层思维》是阿里巴巴资深技术专家张建飞继《代码精进之路:从码农到工匠》之后的又一力作。如果说前作侧重于"术"——编程技艺的精进,那么本书则上升到"道"的层面——探究技艺背后的底层思维能力。正如古语所言:"有道无术,术尚可求也;有术无道,止于术。" 作者在阿里巴巴晋升评审中观察到,优秀的技术人员不仅"做对了事",更重要的是"具备了一直做对事情的能力"。对于脑力劳动者而言,这种能力归根结底是思维能力。问题千差万别,但思维方式可以复制和迁移——一旦掌握了正确的思维方式,便能举一反三、触类旁通。 全书共18章,系统阐述了程序员应知应会的16种底层思维能力,分为三大部分: 第一部分(第1-9章):基础思维能力——解决日常问题的通用思维工具 第二部分(第10-16章):专业思维能力——结合软件行业特点的职业思维 第三部分(第17-18章):综合应用实践——在真实业务场景中的融会贯通 书中引用混沌大学创始人李善友的话作为核心主张:"没有好的思维模型,再多的知识积累也是低水平的重复。成人学习的目的不是获取更多的信息量,而是学习更好的思维模型。" 二、第一部分:基础思维能力1. 抽象思维——程序员最重要的思维能力 抽象是本书开篇第一章,足见其分量。抽象的本质是"抽离+具象"——从众多事物中抽取出共同、本质性的特征,舍弃非本质特征。软件工程师每天都在动用抽象思维:对问题域进行分析、归纳、综合、判断、推理,抽象出各种概念,挖掘概念间的关系,建立模型,最终通过编程语言实现业务功能。 抽象具有层次性:层次越高,内涵越小,外延越大,扩展性越好;层次越低,内涵越大,外延越小,扩展性越差,但语义表达能力越强。在软件设计中,需要遵循SLAP(抽象层次一致性原则),避免在同一个方法中混杂不同抽象级别的代码。 作者指出了几种常见的抽象缺失:基础类型偏执(用基础类型代替实体类,导致概念模糊)和重复代码(本质上是抽象缺失的表现)。同时也警告不要走向另一个极端——为了抽象而抽象,无共性强行抽取只会增加无谓的复杂度。 2. 逻辑思维——思维的法则与规律 逻辑包含三个要素:概念(思维的基本单位)、判断(对事物属性的断定)、推理(由已知判断推出新判断)。团队需要制定通用语言,保证文档与代码中的概念一致,这是高效协作的基石。 推理有三种方式:演绎推理(从一般到特殊,因为……所以……)、归纳推理(从特殊到一般)、溯因推理(大胆假设,小心求证)。建模是归纳工作,验证模型是演绎工作。 作者特别强调了逻辑链的重要性。大多数人的思维逻辑链较短,短就意味着肤浅,找不到根本原因。延长逻辑链的有效工具是5Why思考法——丰田大野耐一的经典案例:机器停转→超载烧保险丝→轴承润滑不足→润滑泵吸不上油→油泵轴磨损松动→根本原因是没有安装过滤器,润滑油混进铁屑。每一层追问都离根本原因更近一步。 此外,作者也列举了常见的逻辑谬误:偷换概念、错误假设、循环论证、以偏概全、滑坡谬误——这些在日常技术讨论和架构评审中屡见不鲜。 3. 结构化思维——从无序到有序 结构化思维是以逻辑为基础,将信息从无序变为有序的思维能力。大脑天生喜欢有规律、概念少的信息,结构化的目的就是降低复杂度和认知成本。正如书中所言:"结构是万物之本,小到分子,大到宇宙,只有了解其结构才能真正认识它。" 核心工具是金字塔结构,包含四条规则:结论先行(论)、以上统下(证)、归类分组(类)、逻辑递进(比)。纵向关系是"论"与"证"的支撑,横向关系是"类"与"比"的展开。 搭建结构有三种方法:自上而下(先定结论再分解,如2W1H框架)、自下而上(先收集信息再概括总结)、上下结合(最常用的业务分析方法)。常用框架包括5W2H、4P营销模型、SWOT分析、SMART原则等。 4. 批判性思维——未经审视的结论不值得相信 批判性思维不是批评否定别人,而是对思维过程的再思考。Critical源于古希腊词kriticos,意为分辨力、决断力,强调理性和逻辑。 作者进行了三组精彩的批判实践: 批判中台:业务中台低效的根本原因是前台与中台的"深度单体耦合",需要重新思考解耦方式。 批判架构师:架构师的价值和他做的决定成反比——最好的架构是让所有人都能做架构决定。不应将架构能力局限于某个角色,人人都应具备架构思维。 批判技术管理者:三大问题——技术不作为、业务不思考、脾气超火爆,这些都会严重挫伤团队积极性。 最后强调自我批判的重要性,引用华为核心价值观,指出自我反省是个人提升和防止组织固步自封的关键。 5. 维度思维——不做"if-else程序员" 一个人的思维层级与思考的维度正相关。一维是"轴/一根筋"的线性思维;二维是"全面"的面性思维;三维是"体系化"的体性思维。多维度思考是解决复杂问题的利器。 作者提出不要做"if-else程序员"——遇到条件分支就写if-else,本质上是单维度思维的体现。通过多态扩展、代码分离、矩阵分析等方式可以跳出单维度思维。矩阵分析无处不在:波士顿矩阵(市场增长率×相对市场份额)、RFM模型(最近消费×消费频率×消费金额)、人才盘点矩阵(绩效×价值观)、需求管理矩阵(重要性×紧急性)等。设计模式中也蕴含着维度思维——策略模式、工厂模式等都是将变化维度从主流程中分离出来的体现。 6. 分类思维——化繁为简的不二法宝 分类是人类大脑的识别模式。当信息量过大时,归类分组能帮助理解和处理问题。分类的本质是寻找事物的共同属性与本质属性,而设计的本质就是分类。 在软件设计中,分类体现在三个层面:对象分类(类与接口的设计)、构建分类(包、组件、模块的划分)、领域分类(OOA的顶层设计)。作者提醒:没有"完美"分类,分类具有主观性,取决于观察者的视角和目的——这本身也是一种维度思维的体现。 7. 分治思维——各个击破的智慧 分治思维的核心是:不要在同一时间把整个问题域塞进大脑,而应组织问题,在一个时刻专注于一个特定部分。分治包含三个步骤:分(递归分解)、治(各个击破)、并(合并子问题的解),其中"并"往往容易被忽视。 在软件中,分治思维无处不在:管道模式将处理流程分解为多个独立阶段,责任链模式将请求处理分散到多个处理器,分层架构将系统按职责分层,分布式架构将服务按功能拆分。分布式系统的三种拆分方式尤为经典:x轴拆分(水平复制,负载均衡)、y轴拆分(按功能/服务拆分,微服务)、z轴拆分(按数据分片,竖切)。 8. 简单思维——简化是逆向做功 简化本质上是熵减活动——让混乱归于秩序,这需要逆向做功。简单需要深入思考,往往需要经历"简单—复杂—简单"的螺旋式演化。简单不等于简陋——简陋是对问题不加思考地简单处理,而简单是深思熟虑后的化繁为简。 书中引用奥卡姆剃刀原则:"如无必要,勿增实体。"实践案例包括:干掉不必要的流程引擎(流程引擎常带来新的复杂度,不如代码直写清晰)、极简状态机的实现(利用内部DSL和连贯接口实现无状态设计)、COLA架构的"壮士断腕"(从3.0到4.0不断做减法)。正如作者所言:"把一件事情搞复杂是一件简单的事,但要把一件复杂的事变简单,这是一件复杂的事。" 9. 成长型思维——打破自我设限 成长型思维源自卡罗尔·德韦克的《终身成长》。核心区别在于:固定型思维认为能力天生,害怕失败;成长型思维认为能力可以通过努力和学习改变,视失败为学习机会。 作者提出认知的四个层次:不知道自己不知道→知道自己不知道→知道自己知道→不知道自己知道。本书的首要目的就是打破"不知道自己不知道"的思维禁锢。培养成长型思维的方法包括:明确努力的意义(相信天分等于给自己设限)、改变归因习惯、摆脱精神内耗、保持好奇心、守住平常心、理解"慢也是快"。作者特别指出:"一个人一旦相信了天分,就等于相信了自己的水平是基本不变的,就会给自己设限,甚至会觉得努力是一件丢脸的事情。" 三、第二部分:专业思维能力10. 解耦思维——高内聚低耦合的追求 "高内聚、低耦合"是软件设计的核心目标,而应用架构之道就是要实现业务逻辑和技术细节的解耦。解耦的两种主要方式: 依赖倒置解耦:倒置依赖方向,从依赖具体变为依赖抽象。面向接口编程的精髓就在于此——抽象比具体更灵活。 中间层映射解耦:计算机领域有句名言——"计算机中的任何问题,都可以通过加一层来解决。"DNS将域名与IP解耦,CDN将内容与源站解耦,都是经典的中间层映射。 六边形架构、COLA架构等现代架构模式,核心思想都是将技术细节与业务逻辑分离。 11. 契约思维——写代码无往不在规则之下 "人是生而自由的,但却无往不在枷锁之中"——同样,写代码虽自由,但无往不在规则之下。契约思维在软件工程中体现为规范价值和标准价值。 规范层面:统一命名、异常处理(Fail Fast原则)、架构约束,通过代码审查和扫描工具维护。标准层面:API设计需具备可理解性、封装性、可扩展性,前端标准化、Java规范都是典型的标准实践。 更高层次的洞察是:"一流企业定标准"——谁掌握SPI或API的接口定义权,谁就掌握主导权。制定标准比遵循标准更具有战略意义。 12. 模型思维——从问题空间到解决方案空间 模型是对现实的简化抽象,是连接问题空间与解决方案空间的桥梁。如果把写代码比喻成"搬砖",那么架构和建模就是"设计图纸"。模型有四种分类:物理模型、数学模型、概念模型、思维模型,但模型终究不能代替实物。 本书特别辨析了领域模型与数据模型的关系——这是很多开发者混淆的概念。领域模型关注业务概念和语义的显性化表达,面向问题域;数据模型关注数据存储和非功能属性,面向存储。两者需各司其职,不应混淆:错把领域模型当数据模型设计,会丢失业务语义;错把数据模型当领域模型,会增加不必要的约束。 13. 工具化思维——"智慧懒"的境界 "懒"有三个境界:最低境界是"实在懒"(拖延症);其次是"开明懒"(迅速做完摆脱之);最高境界是"智慧懒"——使用工具一劳永逸地完成重复工作。 工具化的时机判断:一个工作手动重复3次以上就应考虑工具化。一般步骤是:重复3次→定义现状与期望的差距→给出1个工具方案。作者还强调了组合创新也是创新——将现有工具组合使用也是一种创新。基础设施即代码(IaC)的理念则是工具化思维在运维领域的延伸,像管理代码一样管理基础设施,提升可靠性与可回溯性。 14. 量化思维——没有量化就无法优化 "No measurement, no improvement."量化分为三步:定义指标→将指标数字化→优化指标。 在研发效能度量中,作者警示度量不是"指标游戏",要力求合理,避免古德哈特定律(当一个指标变成目标,它就不再是一个好指标)。目标管理方面,OKR比KPI更注重方向和沟通——O(目标)要有野心,KR(关键结果)要可量化。但切记不要迷信指标而忘了目标本身。网站运营中的埋点实践(如淘宝SPM模型)、技术贡献的量化(代码行数不可靠,需多维度评估)都是量化思维的落地场景。 15. 数据思维——一切业务数据化,一切数据业务化 数据思维包含两个方向的闭环:业务数据化(将用户的浏览、点击、搜索等行为沉淀保存为数据)和数据业务化(利用沉淀的数据赋能业务,如智能推荐和精准投放)。技术人员需要了解完整的数据体系:数据源→数据仓库→ETL→元数据→数据应用。 数仓建模的核心是维度建模(Kimball方法论),区分事实明细表(DWD)和事实汇总表(DWS)。阿里"生意参谋"的实践——"看我情、看行情、看敌情"三个维度提供数据服务——是数据思维的优秀案例。 16. 产品思维——站在用户视角解决问题 工程思维和产品思维互补而非对立:工程师关注How(如何做),产品经理关注Why(为什么做)。技术人员需要具备产品思维来辨别伪需求。 产品有三个核心要素:用户(服务对象)、需求(分三个层次——表象、观点目的、人性)、场景(何时何地使用)。需求是分层次的,最浅一层是需求的表象,最深一层是人性——只满足表象需求的产品往往缺乏生命力。 产品化与平台化的区别:产品化是将服务标准化,使其脱离对个人的依赖,形成可复制的能力;平台化是抽取公共模块,构建可复用、多角色共建的生态系统。从产品化走向平台化是技术团队成熟的重要标志。 四、第三部分:综合应用实践第17章:商品团队之旅——复杂业务的应对之道 本章是作者在阿里商品团队的真实经历,展示了多种思维能力的综合运用。 落地新团队的四步法:熟悉人→熟悉业务→熟悉技术→熟悉文化。深入商品领域的方法:领域概念梳理→概念模型构建→产品架构设计。 商品上架重构的案例尤为精彩。原有系统使用了复杂的流程引擎,但实际上问题的本质不在于流程编排,而在于结构——通过结构化分解,可以将复杂的上架流程拆解为清晰的步骤,用代码直写替代流程引擎,反而更清晰、更可维护。这正是简单思维和结构化思维的结合。 复杂业务的应对之道:上下结合(自上而下的架构设计与自下而上的领域建模相结合)、能力下沉(将通用能力从业务层下沉到领域层,实现复用和解耦)。 第18章:COLA架构的演进——做减法的哲学 COLA(Clean Object-oriented and Layered Architecture)是作者开源的应用架构框架,其演进过程是简单思维和解耦思维的最佳实践。 COLA 1.0:从复杂度分析入手,识别出应用架构的核心问题是业务逻辑与技术细节的耦合,设计了初始的分层架构。 COLA 2.0:重新审视架构分层、组件划分、扩展点设计和二方库定位,使架构更加清晰。 COLA 3.0:做减法——去掉Command、Interceptor、Validator等过度设计,用Adapter代替Controller,体现了"简单思维"的回归。 COLA 4.0:从架构顶层设计出发,明确技术维度与领域维度的划分,将COLA组件化,实现更灵活的组合使用。 COLA从1.0到4.0的演进,是一个不断做减法的过程——从"想要什么都塞进去"到"只保留真正需要的"。这正是简单思维的精髓:简化是逆向做功,需要勇气和判断力。 五、全书核心启示1. 思维能力比具体技能更重要 技术框架日新月异,但底层思维方式历久弥新。掌握了正确的思维方式,就能在面对新问题时举一反三,而不是每次都从零开始。 2. 认知升级的关键是打破"不知道自己不知道" 四种认知层次中,最危险的不是"不知道",而是"不知道自己不知道"。本书最大的价值在于将隐性的思维模型显性化,帮助读者意识到那些"不知道自己不知道"的思维能力。 3. 简单是终极的复杂 从COLA的演进到极简状态机的设计,全书反复传达一个信号:做加法容易,做减法难。简化需要深入理解问题的本质,需要勇气放弃不必要的复杂度。 4. 软件设计是一场思维的修行 软件开发行业的匠心不是重复做简单的事情,而是需要不断学习、思考、积累、尝试、失败和创新。优秀的工程师心中都有一团火——一种对美的追求和渴望,需要一颗"不妥协、不将就、不放弃"的倔强的心。 5. 思维模型需要内化 读书的终极目标不是记住16种思维模型,而是将其内化为"不知道自己知道"的直觉。当你在写代码时自然地运用了抽象、在分析问题时本能地使用了5Why、在架构设计时下意识地考虑了解耦——这些思维能力才真正属于你。 总结一句话: 《程序员的底层思维》不是一本教你写代码的书,而是一本教你如何思考的书。它将那些被优秀程序员"不知道自己知道"的隐性思维模型系统化地呈现出来,帮助每一个技术人完成从"术"到"道"的认知升级。正如书中所期望的——希望读者能把这些底层思维能力内化成自己的"不知道自己知道",在未来的技术之路上,不仅做对事,更能一直做对事。

★★★★★

(1)你很努力啊——表扬努力。当孩子给你看一件漂亮的作品时,不要被喜悦所迷惑,请记住要肯定他所付出的艰辛和努力。 (2)这很难,但你并没有放弃——表扬毅力。当孩子完成了一些有挑战性的事情,比如破围棋阵局、尝试攀岩,在他经历了数次尝试和失败后,请记住肯定他的耐心和毅力。 (3)你做事的态度很好——表扬态度。当孩子用很积极的态度去完成任务时,不要忘了抓住机会说些好话。 (4)你取得了很大的进步——表扬细节。当孩子的能力在某种程度上得到了提高,记得表扬细节,越具体越好。例如,宝宝,你现在的游泳姿势更标准了,而换气频率更均匀,与之前相比取得了很大的进步,真棒! (5)这个方法真的很有新意——表扬创意。这是最重要、最需要注意的地方,看到孩子那些天马行空的想法,最容易让人与“聪明”联系起来,但天马行空甚至奇怪真的是“聪明”吗?它应该是创造性和思维的积累。在尝试无数的可能性之后,孩子脑洞大开,所以表扬孩子有创意就行了! (6)你和你的伙伴合作得真棒——表扬合作精神。一个人无论多么能干,能力也是有限的。如果孩子和小伙伴一起努力完成了某件事,请一定抓住机会,肯定孩子的合作和沟通技巧。 (7)这件事你负责得很好——表扬领导能力。虽然有些事情不是完全由孩子自己做的,但他负责管理,也证明他做得很好,因为他有很强的责任感和领导能力。这一点一定要表扬,让孩子知道虽然他没有亲自参与每一步,但是实现了结果,这是一个非常重要的因素。 (8)你一点也不怕困难,太难得了——表扬勇气。表扬孩子的勇气是帮助他提高自信指数的最佳方式。 (9)我相信你,因为……——表扬信用。良好的信用会使孩子的生活更顺利,所以我们应该及时帮助他建立信用的概念。例如,当你和孩子有一个约定时,你可以说“我相信你,因为你以前说的话都兑现了”或“我相信你,你会找到一个好办法”…… (10)你尊重别人的意见,你做得很好——表扬虚心开放。从别人那里汲取好的建议和经验,也会提高自己的能力,具有成长型思维的人一般都有虚心开放的心态。 (11)我很高兴你做出了这样的选择——表扬选择。孩子能够很好地完成任务,有时是因为努力,有时是因为做出了正确的选择,表扬策略和选择也是培养成长型思维的关键。 (12)你还记得这样做,想得真棒——表扬细心。细节往往体现在一些小事上,而且体现在孩子具有综合性和多角度的思考上。当你出去玩的时候,孩子提醒你不要忘记带雨伞,或者出门前孩子会留意天气预报,这时爸爸妈妈应该表扬他细心周到。

★★★★★

受益匪浅 ,读完后更加坚信程序员最重要的能力不是写代码,而是写代码背后的底层思维能力与解决问题的能力,这种能力是通用的,可以运用到生活中以及其它行业的各种场景。 因此AI时代的到来在我看来,更多的是一种机遇,因为程序员在AI出来前最重要的能力也不是写代码,现在AI的出现反而能让我们从重复性工作中解放出来,转而将精力集中在更有挑战性的工作

★☆☆☆☆

没用,第一章没看完就弃了。只要你是一个有脑子又看点思维类图书的程序员,直接就能联想,根本不需要人给你写本书?另外没啥深度,跟我第一次看clean code时的震撼无法相比。感觉就是炒国外大佬们的冷饭。弃了,不浪费生命

★★★★★

这本书读的可太艰难了 坦白说,特别多都看不懂 但是感觉是一本有了知识积累之后 值得再来翻读的书 不管做什么,最重要的是思维能力 最近也有幸探讨了如何学习技术 在迷茫的路上着实受到了一些指点 反思这些年工作学习 确实是走马观花没什么积累 既然选择了这条路 不断学习思考积累尝试创新 才有可能做得好 期待未来自己的一些小改变

★★★★★

看的出来,作者在软件设计领域的思维方式上有很深的功底,其中的绝大部分思维也切中了软件设计中面临的诸多问题。 但是,但从本书的内容来看,干货和水货参半。 干货在于这些思维方式大都是很实用的。首先,作者将一些很多我们日常中若隐若现模棱两可的思维显性化了,切实的能够提升思维能力和软件设计能力。对读者有很大的帮助,给读者很多的启发式思考,为眼前面临软件设计问题的读者提供了一些明确的解题思路。再者,书中很多的思维方式讲的很透彻,读者可以桉书索引去实践这些方法。例如抽象思维、逻辑思维、结构化思维、分类思维、分治思维、成长思维、解耦思维、工具化思维、量化思维等。 水货部分在于两点,一点在于有些思维方式讲的太浅,对这些思维了解不多的人从书中的收获会大打折扣。例如批判性思维、维度思维、简单思维、模型思维等。书中只是对这些思维方式做了一些概念性的描述,对于如何实践缺乏明确的方式方法。这让那些初次接触这些方法的读者无从下手。第二点在于有些例子并不是很贴合要讲述的内容或思维方式,例子中并没有明确的点题。读者就没法沉浸式的去阅读理解这部分内容,对思维方式的理解自然就不够深入。 总之,这本书还是不错的。每一种思维方式都可以大讲特讲,要将所有的内容压缩到这一本书中,难度还是很大的。这本书可以作为常备手边的思维手册,时刻提醒我们要去践行这些方法论。 就像,作者说的首先在做事的时候要刻意的去使用这些思维方式,让其逐渐固化到自己行为以及思考中。在刻意练习之下达到僵化后,才能做到使用起来游刃有余,最后通过优化让这些思维方式变成我们的“不知道自己知道”的东西。

★☆☆☆☆

辣鸡,适合刚入行的小白去看。扯一堆概念放到一起但是都非常浅,只能起到走马观花的作用。 有人问,啊,对我有用呀,为啥说这书不行? 这不废话吗,你有机会去深入学习的时候,有阅读更专业的书时间非得来看水书,那你怪谁呢? 建议出门左转,阅读《学会提问》,《金字塔原理》,《架构整洁之道》,《代码大全》,《组织》,《原则》,《凤凰架构》。不要浪费时间在这种书上

★★★★★

软件开发行业的匠心和传统行业的匠心不一样,不是重复做简单的事情,你就能把它做好。这就好比你即使做了10年的收银员,也只是一个收银员,无法成为财务总监。在软件开发行业,你需要不断地学习、不断地思考、不断地积累、不断地尝试、不断地失败、不断地创新,才有可能做得好。 优秀的工程师,心中都有一团火——一种对美的追求和渴望。这需要我们经历无数个不眠之夜,承受很大的压力,受很多委屈,看很多的书,尝试很多别人没有实践过的东西,要具有一颗“不妥协、不将就、不放弃”的倔强的心。这样我们才能做出一些不同凡响的东西,才能活成自己所期望的样子。

★★★★★

从书本行文看,很多坑确实是作者正实遇到过的,并且都给出了解决思路。书中内容比较多,涉及逻辑学,管理学,软件工程学等。读完本书,对本人来说,有不小收获,以个人多年工作经历来看,对作者提到的解决问题的思路,程序设计思路比较认同。

★★★★★

推荐不是工程师的人也读一读(当中太过技术的部分跳过就可以了),作者举出很多阿里巴巴的场景做例子,你就可以大概明白为什么阿里几个网站、几个APP,加起来市值千亿。身为一个入门工程师,平常见的都是小木筏,现在忽然见到铁达尼号,心生敬佩。

书籍信息

作者张建飞
出版社电子工业出版社
出版时间2022-02-01
ISBN9787121429774
分类计算机-计算机综合
格式EPUB
完结状态连载中
章节数27