【好书共读】| 作者/Edison Zhou
作为IT技术人,我们不仅要精进技术,也要在技术之外修炼自己的软能力。本质思考,是一种直击事物本质的能力,是思考“思考的方法”,是一切思考的原动力。我们不用担心这个能力在其他企业用不上,因为它是你的“底层操作系统”。
1为何学习直击本质?
无论做什么工作,思考能力都是必不可少的。换句话说,思考能力,往往会影响一个人的其他能力,甚至会影响我们的人生高度。
金庸小说《倚天屠龙记》中,张无忌学习乾坤大挪移的时候,学到第五层就只用了几个时辰,而一般人需要几十年甚至一辈子,前任教主阳顶天练到第四层后便走火入魔最后挂了。经典电影《教父》中有一句我们可能都听说过的台词:“花半秒钟就看透事物本质的人,和花一辈子都看不清事物本质的人,注定是截然不同的命运。”
那么,为何张无忌可以快速掌握乾坤大挪移,又为何有的人可以半秒钟看透本质?
因为,他们都有“九阳神功”护体,“九阳神功”其实就是他们的内功心法,一种本质思考的底层能力,换句话说,就是他们的底层操作系统。
《企业IT架构转型之道》作者钟华老师在《数字化转型的道与术》中写道:“有道无术,术尚可求。有术无道,止于术。”。本质思考能力,其实就是道(内功心法),掌握了道,即使目前没有术(独孤九剑)也没关系。那么,对于程序员来说,在技术层面什么是道什么又是术呢?我个人认为,程序设计和软件设计其实就是道,属于内功,而各种前后端流行框架的花式应用和组合则属于术。
因此,对于任何行业的人,学习了解事物的本质,锻炼直击事物本质的能力,都是有必要的。特别是我们IT技术人,往往喜欢认为所有的问题都是技术问题,试图用技术问题解决所有问题。《软件设计之美》作者郑晔老师也说道,任何试图用技术去解决其业务需求关注点的问题,只能是越陷越深。这时候,我们不妨将技术先放在一边,试图去思考业务需求的本质,探究其根本属性,问题根源和底层逻辑到底是什么,或许可以帮助我们技术人更好地用技术服务业务,最终交付业务价值。
2本质思考
什么是本质?所谓本质,其实说的是三件事:
(1)事物的根本属性
即一个事物之所以成为它的根本原因,回答这个事物是什么的问题。
思考事物的根本属性有三种表现形式:给出清晰的定义、做出准确的简单类比 和 打出精妙的比方。
(2)问题的根源
即导致问题发生的根本原因,帮助我们解决问题、解释问题和预测问题。
(3)现象背后的底层逻辑
即隐藏在各种现象背后不变的规律,帮助我们举一反三和融会贯通,找到同类问题的普遍根源。
底层逻辑一般具有四个特点:抽象、简洁、动力来源 和 通用性。
那什么又是本质思考?
艾菲在《直击本质》一书中下了一个定义:“透过复杂现象,看清事物的根本属性,看透问题根源,看懂现象背后底层逻辑的思考能力”。
图片来自刘润《商业洞察力30讲》
那么,我们要如何达到看透本质的思考能力呢?
答案就是:“大胆假设、小心求证”的溯因推理法。所谓溯因推理,就是从现象B推出原因A,而本质思考是从现象和问题出发,找到导致其发生的根源和底层逻辑。因此,溯因推理 和 本质思考 是相似的。
这种溯因推理法的思考方式,也有一个目前比较时髦的名字:“第一性原理”,已经被众多大厂的大佬们广为采用和推崇,比如特斯拉的CEO埃隆马斯克就是其中的一个代表性人物。
“大胆假设、小心求证”是道,那么具体如何落地?艾菲在《直击本质》书中给出了一些方法,即我们所说的术,如下图所示:
在上图所示的这些方法里边,结构性分析法和系统性分析法是相对较为复杂的分析方法,结构型分析法主要应对静态的分析,而系统性分析法则主要应对动态的分析。
所谓系统,就是由要素和连接关系构成,实现某种目的的模型。我们会通过一些系统的循环图来分析其结构,看到这个系统是如何运作的,其中的增强回路、调节回路是怎么样的,是否具有延时效应等等。当我们能够看清楚整个系统的结构与运行模式时,问题的根源就会说落实出,而问题的解决办法也会逐渐清晰。
图片来自刘润《商业洞察力30讲》
比如,当我们去看容器的时候,如果只看表象我们认为它是一个轻量级虚拟机,容器与容器之间实现了相互隔离的。但当你深入分析之后,容器其实是一个基于进程这个已有概念下的新模型。容器实例的本质仍然是一个Linux进程,只不过它使用“障眼法”(Namespace实现隔离+Cgroups实现限制)为这个进程设置了一些“边界”,使之成为了一种特殊的Linux进程。而容器化的本质如果只看表象我们会认为它是只是一种应用打包的方式,当你深入了解之后,你会发现容器化技术其实是提供了一个沙盒环境,只不过这个沙盒环境也有点特殊,它就像是一个集装箱,将应用"装"了起来。为什么是集装箱,而不是其他箱?因为,这个集装箱不管被运输到哪里,只要打开就可以直接使用。没错,你可能猜到了,它就是容器镜像,它保证了不同环境之间可以在操作系统级别运行环境的一致。为什么可以一致?因为它只是一个操作系统所包含的文件、配置和目录,并不包含OS内核,我们可以将其挂载在任何容器的根目录上。容器镜像的本质又是什么?如果看表象我们认为它就是一个个的压缩包,可以随时通过docker pull从各个镜像仓库里面拉下来。但如果深入分析,你会发现容器镜像其实是一组联合挂载的rootfs(根文件系统),这些rootfs位于/var/lib/docker/aufs/mnt目录下,是为容器进程提供隔离后执行环境的文件系统。而Docker公司创新地设计了“分层镜像”的概念,其背后也是对于多个rootfs的连接关系的处理,换句话说,也是建立了一个模型,这个模型是一个由可读写层、init层和只读层构成的多个rootfs的分层架构。
又如,Kubernetes目前已经成为了容器编排领域的事实标准,那么Kubernetes的本质又到底是啥?如果我们初一看,Kubernetes就是一个帮助我们实现快速的容器集群管理和调度的工具。但是,Kubernetes在顶层设计上,并没有选择走Swarm或Mesos的老路,而是选择了创建一个新的模型,而Docker只是这个模型中的一个符合标准规范的要素之一(你可能知道,在K8s v1.20之后不再使用Docker,我们需要使用其他CRI运行时如Containerd或CRI-O了)。这个模型,统一定义了应用与应用之间的关系,紧密协作无间的就放在了Pod里,需要批量管理的Pod就会放到Deployment里,需要共享信息却又不是随便能看的就会放到Secret里,而不想被直接访问还想实现负载均衡的多个Pod就会找Service来帮它们做代理入口...... 此外,这个模型还统一了应用运行的形态,即定义了基于Pod改进后的对象,如Job、CronJob、DaemonSet等。最后,这个模型如何和我们交互呢?它定义了一个“声明式API”的使用方式,可以让我们通过yaml等方式和K8s集群进行交互。可以看到,如果K8s没有提供一个新的模型,而是走Swarm的老路,它可能不会从三足鼎立的厮杀中突出重围,而开发者要做的,就是首先要看到这个新的模型并理解它,然后再应用它。
在技术世界里,需要我们透过表象去观察本质的地方太多太多......
3思维破局
思考问题的本质是思维的第一次提升,而迁移思考、升维思考和逆向思考则可以让思维进行第二次的提升。
迁移思考
所谓迁移思考,就是将思维模型和底层逻辑运用到更多的领域,从而解决各种各样的问题。但是,需要注意的是扩展应用到的这些领域,需要与当前问题属于“表面不同,本质相似”的关系。
巴菲特的合伙人查理·芒格曾说:“一个人只要掌握80~90个思维模型,就能够解决90%的问题,而这些模型里面非常重要的只有几个。”
升维思考
思考问题的本质可能并不能解决所有的问题,这时就需要我们提升思维高度、增加维度,甚至跳出原来的框架,这就是所谓的升维思考。升维思考的本质是对价值观、人生观和世界观的重新审视,拓展和重塑。
在升维思考的多个方法里,对我最有影响的应该是无边界思考法了,这就引出了有限游戏和无线游戏的概念。这个世上至少有两种游戏,一种是有限游戏,另一种是无限游戏。有限游戏以取胜为目的,而无限游戏以延续游戏为目的。
其实,我们一出生就生活在一个有限游戏里:
小时候的游戏是“好好学习,努力考第一”,每次游戏都有排名,都有赢家。每次游戏,我们和父母都如临大敌。
大学时的游戏是“看谁能找到好工作”,投身于考研、雅思托福GRE、笔试和面试、LeetCode刷题,这个游戏的结果就是赢家可以去世界500强,去头部企业拿高薪。
工作后的游戏是“看谁早晋升、看谁买房多、看谁车子豪、看谁的孩子能成为别人家的孩子......”
在我们玩游戏的过程中,大部分人都开始过得大同小异,最终慢慢地就活成了同一种人,即以比别人过得更好取得胜利为目标,一直要处于社会主流价值观内的人。不过,同时我们也失去了一些自由,因为我们将自己的人生限制在了一个小方框里。
因此,我们需要用无边界思考方法去打破这种限制,活出无限游戏的自由。《有限和无限的游戏》一书的作者詹姆斯·卡斯曾说:“有限游戏是有剧本的,而无限游戏则是传奇性的”,所以,如果我们能够不断地扩展边界和探索边界,不再执着于输赢,人生也就会变得不同。
在这个人生的无限游戏里,我们可以不断地去追求对知识的探索、对智慧的追求、对美好的向往、对自我的觉知与探索 和 对他人的帮助,我们的人生观也会从有边界变得宽广甚至无边界,很多问题也会迎刃而解。
逆向思考
在进行了无数次的正向思考之后,我们可能会习惯性地沿着同一个方向继续。这时,不妨试一试逆向思考。所谓逆向思考,就是对已经司空见惯或已成定论的事或观点反过来进行思考的一种思维方式。
比如,当我们思考做什么才正确的时候,我们可能会找不到方向。不妨这时进行逆向思考,先列出那些不该做的事,将它们排除在外,也不失为一种好方法。小霸王/步步高创始人段永平就是这样思考的典型案例,他有一个经典的“不为清单”,即列出一些原则,但是这些原则是指导企业“不要做什么”而不是“要做什么”。
又比如,现在主流的编程范式包括:结构化编程、面向对象编程 和 函数式编程,每种编程范式在设计时并没有说建议我们做哪些事,而是对我们程序员的能力施加了约束,即哪些事情不要做。
结构化编程,限制使用 goto 语句,它是对程序控制权的直接转移施加了约束。
面向对象编程,限制使用函数指针,它是对程序控制权的间接转移施加了约束。
函数式编程,限制使用赋值语句,它是对程序中的赋值施加了约束。
与其说这些编程范式是告诉你如何编写程序,倒不如说它们告诉你不要怎样做。理解这一点,你才算是真正理解了这些编程范式。
4学习总结
“纸上得来终觉浅,绝知此事要躬行”,学习和打开我们技术人的思维,了解事物的本质以及如何进行本质思考后,就需要在日常的工作生活中试着用这些思想和方法去指导我们去挖掘现象背后的东西。毕竟,实践才是检验真理的唯一标准!
这里,Edison诚心向各位IT技术人推荐阅读艾菲的《直击本质》或刘润的《商业洞察力》一书,先学习什么是本质,本质思考/洞察力是什么能力,如何训练本质思考/洞察力,或许你就会有一点答案了。如果你还对系统思考方法论有兴趣,那也推荐阅读一下《系统之美》。
读一本书,不难,坚持读书,不简单。
IT技术人,让我们一起坚持多读好书。
(1)艾菲,《直击本质》(推荐指数:★★★★★)
(2)刘润,《商业洞察力》(推荐指数:★★★★★)
(3)[美] 德内拉●梅多斯,《系统之美》(推荐指数:★★★★)
Note:这本书主要讲解系统性思考和分析方法论
5思维导图
如果你不想买书学习本质思考,那么花2分钟来瞅一眼核心内容思维导图吧:
Note:精华脑图,可以收藏。
公众号内回复“直击本质”可获得高清脑图!
年终总结:Edison的2020年终总结
C#刷题:C#刷剑指Offer算法题系列文章目录
商业知识:IT技术人的底层商业知识兵器库
.NET大会:2020年中国.NET开发者大会收官
????扫码关注EdisonTalk
不变的依旧是分享!