程序员的底层思维
抽象思维是区分普通和高级程序员的关键特征
具备良好的抽象思维能力,可以体现出程序员强大的分析,推理和总结能力。
所谓抽象即从具象的物体中抽离出来其本质特征。
抽象具备层次性。层次越高,概念越泛,越难以理解;层次越低,概念越具体,语义越清晰。实践中应该仔细推敲抽象的层次,要做到,既抽象又清晰。
逻辑思维,逻辑即关系
逻辑思维基本包含3个方面的要素: - 概念:概念是思维的基本单位,是反映事物本质属性或特有属性的思维形式,是指一些关于抽象事物的思考和定义 - 判断:通过概念对事物是否具有某种属性进行肯定或否定的回答,就是判断 - 推理:由一个或几个判断推出另一判断的思维形式,就是推理。可以细分为演绎推理,归纳推理,溯因推理。
演绎推理:因为,所以 归纳推理:从特殊到一般 溯因推理:大胆假设,小心求证。与演绎推理的不同在于,溯因是知道结果的前提,尝试去寻求其原因。
逻辑思维的要义在于正确运用概念、判断、推理的思维形式。
逻辑链
有些人具有深度思考的习惯,他们的逻辑链比普通人的要长,他们更擅长深度思考,因此他们可以挖掘出事物的根本原因,推断事物的深远发展结果。
在现实世界中,不是所有的逻辑链路都是简单的因为,所以,而是还包括在因,果两个方向上的拓展。
延长逻辑链的方法
-
5why 思考法 是指对一个事情的原因进行连续多次追问,直到找出问题的根本原因。这里5why,不是指要问5次,而是说利用延长逻辑链的思维方式强制进行深度思考,从而找到问题的根本原因。
-
5so 思考法 是指对一个事情的结果进行连续多次追问,从而来探求事务对未来可能造成的影响。跟 5why 类似,凡是多问几个“所以呢”来强制进行深度思考,从而探求到事务对未来的影响范围。
逻辑谬误
所谓谬误,是指推理中的欺骗手段,包括以下分类:
-
偷换概念 当一个关键词在论证中反复出现时,就要警惕其含义的变化,如果其含义前后不一致,那么就要警惕出现偷换概念的谬误。偷换概念是一种常见的诡辩手法。
-
错误假设 错误假设常常受到人们的认知,价值观,信念的影响,那么这些认知,价值观,信念等会参与到人们提出一个假设的过程中,那么基于这种错误的假设,很多谬误就很难被发现。
-
循环论证 即结论会自己证明自己,只不过是措辞的改变,这也是一种谬误。
-
以偏概全 以偏概全是使用归纳法时常见的谬误,即通过小样本或者不具备代表性的样本,归纳得到一个错误的结论。
-
滑坡谬误 是指不合理的使用一串因果关系,这和深度思考有些类似,但是根本不同之处在于在这种谬误中,它的逻辑链是逻辑关系不严密的,或者是不合理的。
金字塔原理是思考,表达和解决问题的逻辑
结构化思维以逻辑思维为基础,是一种从无序到有序,从混乱到清晰的思维能力,可以帮助我们以一定的逻辑顺序从繁杂的信息中整理出清晰的结构,从而使写作和表达更清晰和易于理解。
结构和架构
在系统论中,系统是处在一定环境下的各个组成部分的整体,那么组成系统的各个部分,就被称为系统的要素。显然,系统不只是要素的简单叠加,还包括其内在的用以实现各要素间的普遍联系。
因此,我们常常把各要素的组织形式(要素之间的联系),称为结构。
架构的核心也是结构,所谓架构就是要素+结构。
要素是不稳定的,可以随时被替换。
结构化思维
结构化思维是一种以逻辑(事务内在规律)为基础,从无序到有序搭建结构的思维过程,其目的在于降低复杂度和认知成本,因为大脑更喜欢概念少,有规律的信息。
结构化思维的具体表现形式:金字塔结构,推荐深入阅读《金字塔原理》一书。
我们常说的构建自己的知识体系,实际上就是在构建这个巨大的金字塔结构。
一个好的金字塔结构,需要在纵向关系上满足结论先行,以上统下;在横向关系上,满足归类分组,逻辑递进;这4个原则。
- 纵向关系:纵向是层次关系,上层是对下层的概括,下层是对上层的解释
- 结论先行:就是要先抛出结论,不管是沟通还是写代码,都是先抛出结论,然后在后续或者子方法中对结论或者主方法进行结构化分解
- 以上统下:金字塔是层次结构,上层是对下层的统领和抽象
- 横向关系:横向是关联关系,分组关系,每组中的思想必须属于同一逻辑范畴,并按照逻辑顺序组织
- 归类分组:将内容相似的归为一类,为进一步归纳抽象做准备
- 逻辑递进:分组中的思想需要具有逻辑关系,即首先他们属于同一个逻辑范畴,且满足一定的逻辑顺序
纵向逻辑关系,主要运用演绎逻辑和归纳逻辑。 横向逻辑关系,包括: - 时间顺序 - 空间顺序:是一种化整为零的分解,在划分时需要遵循 MECE 原则 - ME(mutually exclusive):各部分之间相互独立,没有重叠,没有排它性 - CE(collectively exhaustive):所有部分应该完全穷举,没有遗漏 - 能否满足MECE原则的关键在于划分维度和维度属性的选取 - 程度顺序
如何搭建金字塔结构
- 自上而下:分解问题
- 自下而上:概况总结,面对一堆零散的元素或者信息,通过向上聚合成一个金字塔结构,最后形成一个清晰的思维结构。
- 上下结合,逐步迭代:自上而下的分解和自下而上的归纳,二者不是一个有你无我的关系,在构建结构的过程中,通常会同时运用这两种方法,反复迭代优化。
构建金字塔结构时的思维框架
- 2W(Why - 为什么,What - 是什么)1H(How - 怎么做) 是构建结构时最常用,也是最有用的框架之一
- 5W(Why, Who, When, Where, What)2H(How, How much)
- 竞争力分析(SWOT)模型
- 目标制定(SMART)模型
维度思维:多维度思考
思考的维度数量决定了我们思考的深度和全面性。
多维度辅助思考工具:矩阵分析法 --- 参考《设计模式解析》一书中的“分析矩阵”章节。
矩阵分析法实践之RFM模型
RFM模型是衡量用户对企业价值的经典度量工具,依托于用户最近消费时间(Recency, R),消费频率(Frequency, F),消费金额(Montary, M) 3个维度进行评估。
把上面模型中的每个组成部分或者要素再分割成不同的等级之后,所有的这些要素之间的关系转化成矩阵之后,我们就能得出一个非常精确的针对不同人群的定向营销策略。
矩阵分析法实践之推理矩阵
推理是从已知的前提推出结论的过程,当一个推理问题很复杂的时候,构建一个由各种可能的备选项构成的矩阵,则非常有助于逻辑清晰的分析问题。
设计模式中的维度思维
设计模式中常说“组合优于继承”,这就是一种典型的维度思维的体现,因为组合会带来更多的灵活性和可扩展性,也就是可以向更多的维度扩张,而继承则只是单一维度上的延申。
简单思维
在《简单:设计,技术,商务,生活的完美融合》一书中提出了一个 SHE 简化法则,即 S - Shrink(简化),H - Hide (隐藏),E - Embody(赋予)。
隐藏复杂可以让用户管理自身的期望,降低理解成本
成长型思维
决定你成长的第一步不是你是否努力,而是你是否相信努力。
成长美学的特征就是相信积累的效应。相信发展,相信改变,就容易形成正反馈,以微弱的优势聚沙成塔。
程序员特有的思维能力
- 解耦思维
- 契约思维
- 模型思维
- 工具化思维
- 量化思维
- 数据思维
- 产品思维