在知乎看到一个问题,如何培养举一反三地能力,虽然我博客上关于思维方面的问题也经常提到举一反三和融会贯通,但是也有必要对这个问题再做一些进一步的思考。对于举一反三的能力,归根到底可以总结为两个方面的能力,一个是对于新领域和新知识的快速学习能力,一个是在已有领域面对新问题的独立分析和解决问题的问题,而这两者本身也属于思维能力培养的范畴。
举一反三本身提法容易给人太多误解,而更多的场景却是举3反N,或者说举10反N,即通用的问题见的多了我们在面对同类或相似性的问题的时候有了相应的解决方法和思路。 即通过大量的实践进行了归纳,然后对于归纳的方法或模型能够进行N种演绎 ,这里面的重点就是现有实践归纳再有后面的演绎,不要简单的任务你拿着别人总结出来的理论,就能够很容易的进行应用和演绎,当一个问题涉及到的知识点单一的时候有可能,但是一旦一个问题涉及到诸多知识点那就相当困难了。
这个清楚了,首先来谈下最简单和最容易的举一反三, 即对你遇到并解决了的问题进行归纳,找到解决该类问题的方法或模型,然后就可以用该模型解决更多的类似问题 。而在归纳的过程中又存在一个重要的能力,即 抽象 ,抽象的核心就是要将实际的东西抽象为理论或模型,要能够找到哪些是模型的核心内容和不变的,哪些又是该模型可变的参数和输入。那么你再遇到相似的问题的时候你就只需要考虑核心模型是否一致的,然后如何定义清楚特定问题的可变参数。
简单来讲类似我们开发代码经常会将经常遇到的共性处理定义为方法或函数,将可变的内容全部抽象到了函数本身的输入参数上并提取出了核心不变内容为函数实现。在面向对象的分析和设计中就更进了一步,即我们能够将我们看到会观察大的事物或实例抽象为类,将他们的行为抽象为类中具体的方法实现,你要做到这一步首先需要的就是大量的观察和实践。
而真正最难的举一反三则是面对新领域和完全没有遇到过的相似场景的新问题的时候独立的分析和解决问题的能力。而这个本身的难度就在于知识点的细粒度匹配上面了,即 首先需要将你实践和大量的经验积累分解为一个个可以复用的知识点,其次是面对新问题的时候你能够将新问题通过问题定义和分析也分解为一个个具体的问题点,然后再更加细粒度的问题点和知识点上进行匹配,最后再将其组合和串联在一起 。
我们可以举一个最简单的例子,你原来做过工程建设类相关业务,后面又转做软件开发和IT项目管理,那么按道理你应该具备了工程项目管理的基础技能。如果你没有工程项目业务积累,那么你需要补充学习的工程建设的业务知识,然后再进行知识的组合和融合。
第一种举一反三地能力只是用到 归纳和抽象 ,然后再进行演绎,而第二种能力则需要用到 分解和组合 ,分解我在前面思维框架的时候已经讲到过,有单一的事物也有事物群,都是采用的不同问题分解和定义的方法;而组合相对来说就更难,对于事物静态层面的分解,在组合的时候需要考虑知识点之间的集成点,而对于事物动态层面的流程分解则需要考虑各个子问题间的前后输入输出和协同。而在分解和组合之间还有一个困难点就是匹配,即为何一个子问题点可以用已有的知识点来解决,如何匹配,这又涉及到模式层面的内容或者说第一种举一反三技能中的内容。
谈了这么多,最最困难的还是对新知识的学习能力,任何举一反三都很难单纯的全部应用你已有的知识和经验,里面一定会存在新知识点和新内容,那么就需要在解决问题的时候快速学习和应用。能够支撑你独立分析和解决问题能力的,一定伴随着你强大的新领域和新知识的学习能力。