读书 | IT人如何直击本质洞察底层逻辑?

【好书共读作者/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

不变的依旧是分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编译AjaxControlToolkit发生错误如何解决?

错误的具体内容是:Error 1 Could not load file or assembly vjslib, Version2.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a or one of its dependencies. TemplateVSI\TemplateVSI.csproj 未能加载文件或程序集“vjslib, Version2.0.0.0, Cultureneut…

内网通mac能用吗_纯干货!小容量Mac装外置硬盘Windows系统最完美的方案!(多图)...

很多用Mac 的同学都会碰到一个很头疼的问题,那就是对 Windows系统的需求,macOS系统虽好,但是很多专业性软件都没有Mac 版本(特别是对国内的用户),这时大家就会对 Windows系统有需求了。这时候很多同学会想到使用虚拟机或者装 Boot…

卖shell看站什么意思_粤语俚语卖咸鸭蛋是什么意思?

点读:卖咸鸭蛋(maai6 haam4 aap3 daan6)点解:就是死了的意思点造句:粤:您搵丧彪啊,佢琴日去劈友唔小心赖咗嘢,宜家已经去咗卖咸鸭蛋啦~~普:你找丧彪吗,他昨天…

asp.net core安全事项(上)

隐藏web服务端信息创建一个asp.net core mcv web项目,运行,F12查看返回信息,如下图,会清晰看到服务端的类型是kestrel.有时安全检测要求不能显示服务端信息,这样在一定程度上能降低被 攻击的风险,具体代码如…

云水画中人,独立一江秋

转载于:https://blog.51cto.com/wuliguo/50014

python是c语言_python与c语言

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python语言调用c语言进行扩展,或者增加程序的运行速度都是特别方便的。 同时还能获得与c或者c几…

aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...

分治算法,顾名思义就是“分而治之”,即把规模较大的复杂问题拆分为若干规模较小的类似子问题,并逐个解决,最后再将各个子问题的解决结果合并,得到原始问题的结果的方法。这个技巧是很多高效算法的基础,例如…

一朝读码深似海,不读源码薪难升!读懂.NET5源码,到底多重要?

谈到源码分析,很多人会有这样的疑问:“.NET5的基本功能我已经掌握了,还有读源码的必要吗?”实际上,阅读源码不仅能够帮你更深刻地理解底层设计原理,提升你的系统架构能力和编码功力,还能让你知道…

使用SQL语句获取SQL Server数据库登录用户权限

返回一个报表,报表中包含当前数据库中某对象的用户权限或语句权限的信息。语法sp_helprotect [ [ name ] object_statement ][ , [ username ] security_account ][ , [ grantorname ] grantor ][ , [ permissionarea ] type ]参数[name ] object_statement是当…

如何在 ASP.Net Core 使用 分布式缓存

ASP.Net Core 提供了多种类型的缓存,除了内存缓存和响应缓存之外,还提供了对 分布式缓存 的支持。在之前的一篇文章中,我讨论了 ASP.Net Core 的内存缓存。在本文中,我们将讨论如何在 ASP.Net Core 中使用分布式缓存,本…

50万数据生成6位数不重复字符串_R语言系列3:高级数据管理

R语言系列3:高级数据管理此文内容为《R语言实战》的笔记,人民邮电出版社出版。从高中电脑课学VB开始,大一课内开始学习C,到后来大二为了数模学习Matlab,到大三为了搞深度学习自学Python,到研究生之初学习St…

ぁ。。。爱。。。ぁ

有一老夫妻年逾50.经济条件不错,理当是安享退休的时候,却一起到律师那要办离婚。原因是自从结婚以来,两人争吵不断,老是意见不合。个性上又南辕北辙十分不和谐。二十多年的婚姻生活,要不是为了孩子着想,早就…

python对象_查找Python对象具有的方法

您似乎可以使用此代码,将“对象”替换为您感兴趣的对象: object_methods [method_name for method_name in dir(object) if callable(getattr(object, method_name))] 我在this site发现它.希望这应该提供更多细节! 对于那些获得AttributeErrors的人&am…

fcn网络训练代码_另辟蹊径,中科院自动化所等首次用图卷积网络解决语义分割难题...

使用 CNN 处理图像问题已经是常规操作,但此类方法会造成局部位置信息的损失。如何解决这个问题呢?来自中科院自动化所和北京中医药大学的研究者另辟蹊径,提出用图卷积网络解决语义分割问题。选自arXiv,作者:Yi Lu等&am…

盘点大厂的那些开源项目 - 小米科技

小米是一家以手机、智能硬件和IoT平台为核心的互联网公司,以智能手机、智能电视、笔记本等丰富的产品与服务。致力于让全球每个人都能享受科技带来的美好生活。“为发烧而生”是小米的产品概念。“让每个人都能享受科技的乐趣”是小米公司的愿景。小米公司应用了互联…

python做一个单项选择题系统_(完整版)python选择题word打印版

Python 单选题库 一、 python 语法基础 1 、 Python 3.x 版本的保留字总数是 A.27 B.29 C.33 D.16 2. 语言保留字的是 Python 不是 , 以下选项中 A while B pass C do D except 3. 以下选项中描述错误的是 , 程序格式框架 Python 关于 A Python 语言不采…

博主应邀参加YOCSEF虚拟化技术论坛

发布日期: 2007-11-18 中国计算机学会青年计算机科技论坛<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />CCF Young Computer Scientists & Engineers ForumYOCSEF于<?xml:namespace prefix st1 ns "urn:schema…

python中truncate的用法_在Python中操作文件之truncate()方法的使用教程

truncate()方法截断该文件的大小。如果可选的尺寸参数存在&#xff0c;该文件被截断(最多)的大小。大小默认为当前位置。当前文件位置不改变。注意&#xff0c;如果一个指定的大小超过了文件的当前大小&#xff0c;其结果是依赖于平台。注意&#xff1a;此方法不会在当文件工作…

聊聊如何构建一支自驱团队(二)

曾经有一位大佬分享他组建技术团队的心得&#xff0c;当时我问了他一个问题&#xff1a;请问你组建的团队是项目型组织&#xff0c;还是职能型组织。但是大佬似乎对于这个问题没有特别直接的回答&#xff0c;所以在这篇博客中&#xff0c;我想跟大家讨论一下这个问题。一&#…

自定义依赖注解无效_最详细的自定义Spring Boot Starter开发教程

1.前言随着Spring的日渐臃肿&#xff0c;为了简化配置、开箱即用、快速集成&#xff0c;Spring Boot 横空出世。目前已经成为 Java 目前最火热的框架了。平常我们用Spring Boot开发web应用。Spring mvc 默认使用tomcat servlet容器&#xff0c; 因为Spring mvc组件集成了spring…