龙空技术网

思维框架和逻辑-事物认知和问题解决-2015

人月聊IT 12428

前言:

当前姐妹们对“动态规划背包问题ppt”大概比较讲究,大家都想要知道一些“动态规划背包问题ppt”的相关知识。那么小编同时在网上搜集了一些对于“动态规划背包问题ppt””的相关知识,希望大家能喜欢,同学们一起来了解一下吧!

注:今天整理下思考框架逻辑,问题分析解决,事物认知,思维和意识方面的文章,在重新整理的时候对原有文章内容进行缩减,仅突出重要观点和内容。在1月13日我写过一篇《对思维框架和逻辑架构的完整梳理》一文,这篇文章作为一些关键 PPT页的展开阐述。

思维的框架

前面谈思维方面的文章写了很多,始终没有绕出一个圈子,即一直在强调有哪些思维方式?思维有哪些具体的方法等。而忽视了一个关键的内容即思维本身的框架,最近在知乎上看各类问题,给了自己一些启示。

对于知乎上的各类问题,在进行降噪处理后,对从剩下的问题进一步抽象分类,可以初步列出一些思维框架。在经过初步思考后暂时将上述思维分为四种类型的思维模式,即如下:

第一类:认识和看待事物

这类常见的提问方式包括了一个知名人物或历史事件如何评价?如何看待一个产品? 你对某个事物是如何理解的?如何看待或分析一种行为或热点等?

对于看待或分析事物类的思维,则是我们前面一篇思维的逻辑里面讲到的很多内容,即事物本身应该结合外部环境+时间线+事物核心维度进行全面的分析,事物的外在交互关系,事物的内部结构和衔接,事物本身动态展现的行为特征等。这些首先分析清楚,即对事物本身有一个全面和客观的认识。

这类思维的一个核心即辩证思维,在这里我不太喜欢用批评性思维这个词,辩证思i维更加体现了这类思维的重点是全面,客观,以数据说话同时减少主观偏颇看法。对于这类问题你不一定要去表面自己的主观感受,而更加重要的是把事实和道理讲清楚,有理有据。

在真正分析清楚后,后续才过渡到这类问题的演进,即如何评估或评价一个事物,其前提仍然是分析清楚客观数据,但是数据本身不是评价或评估指标,因此一谈到评估自然会想到需要建立或参考一个评估体系。

比如一个历史帝王有政治,经济,外交,军事和民生各种评价体系。对一辆车可能有动力,舒适性,油耗,操控等各种评价体系。一个产品本身有功能满足度,易用性,性能,价格等各种评价体系等。

对于任何评估,则首先是找到现成可用的科学评价体系,然后将对事物分析后的数据映射到具体的评价体系上,即任何评估指标值的得出一定有事物本身内在数据和运作机制进行支撑的。

这些都想清楚后,即这类思维的重点是事物的分解和集成分析,事物的行为或活动分析,事物相关的内外环境因素分析,事物本身的关键属性维度分析和评估体系确定,事物各关键指标特性间的相互制约和促进力分析(类似系统思维中的正负循环)等。

第二类:决策类思维

这类问题在知乎的提问里面也相当多,最常见的就是两个或三个选择我选择哪个?我做的某一个决策究竟对不对?我应该选择哪些事物形成一个组合?还有则是类开放性的决策问题,即类似国庆究竟去哪里玩比较好等等。

对于决策类思维和第一类分析和看待一个事物或产品最典型的区别就是,决策类思维可以理解为科学的看待一类中的多个事物或产品,并根据自己的目标意愿选择最佳的结果。对于科学决策最重要的就是找到多个事物的共通属性,并对这些属性设计评估指标值或权重,以方便后续的结构化决策。

对于引入了一组事物后,对应的方法自然就不是局限在事物内部的分解,组合和集成分析。而在于同类的多个事物本身的排序,筛选,组合,抽象共通属性提取等。决策时也会引入决策树,层次分析判断等方法辅助进行科学结构化决策。

谈到决策一定就涉及到目标,如果本身是单目标决策往往相当简单,比如购买手机最大的考虑因素是照相效果最好,购房时候必要条件是哪个学校的学区房。有这些目标后本身选择和决策范围就会大幅缩小。还有一些决策本身属于多目标决策,对于产品的购买常用的就是性价比,而性价比本身就是一个多评价指标共同组成的目标,同时目标最终又转化为多个评估指标的权重值,只有明确了目标和权重,往往才能够得出科学决策,而不是完全凭借自己的直观经验。

在单一决策后,还会引入组合决策,类似基金购买的股票组合就是比较典型的组合决策的例子,组合决策是多个选择事物组合在一起以满足目标多个维度的要求。对基金组合来说往往则满足了收益和风险两方面的要求。在项目管理里面也会有组合管理,即更加公司的战略目标,来决策究竟应该立项哪些项目形成一个最优组合。

对于系统思维,往往用的最多的地方就是决策性思维,即要意识到任何一个决策都会会导致内部的诸多因素之间相互的正反作用力。一个餐厅涨价那么单独看每单收益增加了,但是往往导致客流降低了,那么究竟应该涨价多少才是最佳选择?这就涉及到通过系统思维去决策,这种决策不是解单目标的题,而是一种最适合的方法,其核心是模拟和反馈,而非理论推导。

第三类:学习和实践方法论

这类是我们平时最常用的一种思维,在知乎里面可以看到大量类似问题,即如何学习,如何掌握一门技能?自己的职业如何规划?工作多年自己能力为啥没有提升? 如何读书?如何系统的了解某一段历史等等。对于这类我将其统称为学习和实践方法论。

谈到这类思维,有一些附属的工具,即个人自我管理,时间管理,个人知识管理等。知识体系是这类思维的一个核心,基于知识体系构建的方法论和最佳实践是这类思维的呈现。

学以致用,学习往往最大的作用就是最终要实践,学习后实践,实践后反思和总结,多次迭代持续优化即最基本的学习和实践方法论。任何学习如果脱离实践,最终都难以真正内化为自我的经验和模式。

学习之本质即是理论或前人方法论-》学习-》自我实践-》自我经验或实践模式。

当我们谈学习方法的时候,最离不开的就是个人自我评估,即当前自己在什么水平或能力?自己期望达到一个什么目标或水平?如果没有这个前提,任何学习方法或建议都无法成立,即以我们成功的最佳实践来强制推广到不同环境和不同背景的他人,脱离了诸多的前提假设往往直接导致结论不成立。

谈到学习层面,最重要的就是首先确定自己的目标,根据目标和前人的经验分析,逐步清楚目标域的知识结构体系,例如你想成为产品经理,那就首先要理清楚产品经理应该具备的知识结构体系。这个理清楚后再结合自己的实际情况来规划学习路线,同时在学习和实践过程中不断地纠正自我学习路线。

工作后的学习往往是问题或实践驱动性质的,因此脱离实践的学习往往很难真正沉淀和深入。今天刚好在知乎看到一个问题即3年的架构和10年经验的架构究竟本质有哪些区别?我们先不谈具体区别,如果10年的架构本身也没有参与任何大项目实践的机会,没有大团队沟通讨论和相互促进的机会,即使你再肯学能力也无法提升。真正持久化的学习驱动力都来自于实践和目标驱动,来自于创造价值的持续乐趣。

第四类 分析和解决问题

在学习和实践中当然也会大量地面对问题,分析和解决问题,但是对于这类还是想把其单独拿出来谈。因为在分析和解决问题中是你最重要的思维能力体现,是多年学习实践后经验的体现。独立分析和解决问题能力一直以来我都认为是个人最重要的能力。

对于分析和解决问题而言,谈到的方法论就相当多了,大家最为熟知的还是麦肯锡的问题解决七步法,但是从定义问题和分析问题,再到具体的解决计划和验证,里面最难的还是分析问题,分析问题又会涉及到我们第一类看待和分析事物的一些最基本方法。

分析问题其一是理解清楚问题本身的内容和子问题的分解,其二是洞悉问题具体产生的过程,只有结合问题本身的结构静态分析和动态行为分析,才能够对问题有完整的了解。

任何问题的解决又涉及到第三类学习和实践方法论的积累,经验和模式的积累,正是由于经验的积累和潜移默化,对于问题的解决转化为一种结构化+非结构化结合的模式。即对于问题在搞清楚问题定义后,首先则是根据历史经验提出假设,然后再通过科学的实验去验证假设。

思维的逻辑

逻辑狭义上既指思维的规律,也指研究思维规律的学科即逻辑学。广义上逻辑泛指规律,包括思维规律和客观规律。逻辑包括形式逻辑与辩证逻辑,形式逻辑包括归纳逻辑与演绎逻辑,辩证逻辑包括矛盾逻辑与对称逻辑。对称逻辑是人的整体思维(包括抽象思维与具象思维)的逻辑。

对于具体的归纳和演绎方法,形式逻辑和三段论等内容,在这里不再展开。

归纳和演绎两者相互依赖,相互作用和相互补充。这两者构成了我们最基础的思考逻辑,而且正是由于两者的相互作用,往往在解决复杂问题的时候会形成一个完整的推理链条。整个解决问题的过程就变成了由特殊到一般,再由一般到特殊相互不断迭代和演进的过程,而正也正是思维或者说明模式匹配的核心逻辑。

解决问题的逻辑难点

归纳和演绎只是方法,而实际解决问题我们看到当我们脑子里面已有的经过前人证明的公理或定理越多,同时我们自己在实践中经过自身归纳证悟的逻辑越多,那么往往我们解决问题的能力越强。但是这些还不是最主要的,任何解决问题的逻辑难点不是由于你知道的定理少了,而是你不知道在什么场景下应该选择什么公式或定理来解决特定的问题,即还是我们思考框架里面谈到的如何进行模式匹配的问题。

对于解决问题的通用方法论,特别是基于非结构化的解决问题的方法,即从问题的定义,到假设的提出,到问题或结论的验证层层迭代再次就不再进行展开描述,而只是进一步总结解决问题逻辑思考的难点或关键点。这部分思考还不算特别成熟,但是有必要先进行点上的记录。

一种对问题解决逻辑的通用描述

问题即是期望值和实际值之间的差距,有差距就产生了问题。而期望值和实际值本身都是输出,任何问题的产生往往都是有多个条件或信息作为输入,然后经过机器或大脑多步骤加工处理后形成的一个实际结果和期望结果的比较。

如果遵从这个简单的描述,那么问题的产生只有两个原因:

01 - 输入的某个X发生了错误或误差

02 - 加工中的多个步骤或某个步骤出现的错误,导致最终输出没有得到我们期望的值。

还是拿考试来举例,如果我们某一道题目做错了,那么只可能是两个原因,一个是我们对于已知输入条件看漏了或理解错了,要么是我们在进行计算的时候某个分解的步骤出现了计算错误,最终导致了题目做错了。当我们的写的一个计算机程序出现故障或Bug也一样的道理,要么是我们的输入出现的错误或遗漏,要么是我们的算法中的某个步骤出现的错误导致了问题。

正是由于这个原因,我们对问题的解决思路应该包括两个方面的内容:

1. 对输入进行信息正确性,完整性的校验。类似我们在思考框架里面讲到信息去噪和清洗。

2. 对处理过程中的算法和逻辑安装步骤进行检查,确保每步的中间输出都是正确的。(当然可以二分查找)

而基于非结构化问题解决的核心逻辑则是将上述诸个或逐步检查转换为基于经验的假设式检查,如上面框架当出现问题的时候,如果我们已有经验是

a. 当最终输出有问题的时候,90%的可能都是x3输入缺失或x3输入数据有质量问题。

b. 当输入都没有问题的时候,最大可能出现问题的原因是S2这个步骤的逻辑处理。

那么我们解决问题的逻辑就变成了根据经验提出最优假设,再去验证假设本身的正确性,即优先检查x3,没问题再检查步骤s2。当我们头脑里面的这种经验越多,越准确,那么我们匹配和解决问题的速度就越快。

模式匹配的两个关键

模式匹配可以说是解决问题逻辑中的核心,在前面已经谈到我们可以利用已有的经验进行模式匹配,而提出优先假设并验证。而实际上问题解决过的模式匹配包括了如下关键内容:

01 问题的转化,未知问题到已知问题

对于面对的新问题能够将其转化为一个我们头脑里面已知的旧问题,而对旧问题的求解方法我们驾轻就熟。举例来说对于小学应用题,我们会考虑的是如何通过设置参数,将其转化为一个方程式的问题,而对于如何解一个方程式就简单了。类似的对于八皇后问题,我们首先要知道的是能将其转化为一个回溯算法去解决的问题,对于背包问题我们想到将其转化为一个运筹学里面的动态规划问题。

能够将未知问题映射到一个已知的方程式求解或算法问题,是解决问题的关键,如果不能转化或映射,那么你知道再多的算法和公式也没有用。

这不得不让我回顾下中学乃至大学的教育,很多时候教会我们的是公式或算法,而并没有去教我们在看到一个新问题的时候如何快速的映射和匹配到算法或公式上。如果这个点上没有解决,那一定就只有陷入题海战术,比谁见过的题型多,练习的题库多,这显然已经脱离了我们学习和思维的本意。

02 问题的细粒度匹配,从分解到映射

我在很早的一篇解决问题的思路中谈到过的,要想进行匹配,对于复杂的问题首先需要对问题进行分解,分解为细粒度的问题点,然后再将细粒度的问题点和解决方法进行匹配,最后再进行整合。要知道粒度越粗越难以匹配,完全一模一样的问题出现的概念是相当小的,但是将新问题分解后我们发现子问题往往都是我们见过的和可以解决的。

要提升这块的能力,则包括了两个方法,其一是我们接收到的新问题要懂得如何去定义,如何去分解;其次是对于我们实践后吸收的知识或经验,我们应该懂得将经验细粒度化为可复用的经验点,这些经验点往往才是可复用的。

还是拿做一道数学四则运算题来说,任何四则运算题目都可以分解为加减乘除四种计算方法,而我们已有的经验或算法库也只需要知道这四种计算方法的知识点就可以了。那么再遇到任何运算问题都可以通过分解,分解后匹配完成计算和处理。而实际在现实生活中,我们面临的新问题,其分解过程和匹配过程都远远比一道计算题复杂的多。

事物分析和认知的核心逻辑

思维如果简单说成思考,就少了很多意境,思维这个词本身就很好的体现了动静两个重要属性,思即是动态的一种脑力活动,而维则维度,事物静态的维度和内在结构。现在谈思维的词很多,包括逻辑思维,逆向思维,批判性思维,辩证思维,系统思维等,而任何思维方式都无法脱离最基本的静态维度和动态线索。

对任何一个事物的分析都包括两个方面的内容,一个是静态结构,二个是动态呈现。静态所呈现的结构和关系最终往往又影响到事物外在的动态表现和行为。静态看待事物的维度是多维的,但是更科学的理解应该理解为N+1维,即静态的N个维度再加上关键的时间线这个动态维度,两者相互结合形成对事物的完整理解。

看任何一个事物,从静态层面一般会划分为多个维度,而这些维度往往是事物所呈现出来的影响到我们分析和决策目标的关键属性特征。同时要把事物理解清楚又必须得进行解剖,搞清楚事物的内部结构特征,在内部结构中构成事物的各个组成部分之间的相互关系。

看待任何一个事物的时候如果一开始就进入到事物的内部构造,往往容易一叶障目而不见泰山,因此更好的方式则是首先应该把事物本身看待为一个黑盒,先不要去打开它,而是应该首先看待事物和外部事物之间的关系,正是因为任何事物都不是一个孤立的个体,才使事物在和外在协同中体现出来不同的行为特征和动态属性。

观察一个人,你首先观察的是这个人本身的外表特征,家庭背景和学历,这个人本身的外在社交关系等,其次才是观察这个人动态所体现出来的行为和言语特征。如果要完整了解一个人,那么就必须重视时间线索,了解这个人详细的学习经历和工作经历,成长过程。

分析一辆车,你首先看到的是车辆本身的外观,内饰,舒适性等静态熟悉特征,或者更加深入的该车详细的内部构造,但是这些都是静态的内容,最终你还关心这辆车本身动态驾驶时候体现出来的动力和操控性。即使静态的排量和马力等体现出了动态性能,但是最终还是得经过动态驾驶验证。

要进入一个新的行业,往往得首先分析刚行业和岗位所应该具备的知识体系结构,同时还得分析这些知识结构之间本身的内在关系和相互影响,其次才是结合目标规划动态的学习方法和实践路径。即知识间的这些相互依赖关系最终会体现到动态时间线索上。

对事物的深入了解一定要分析到事物的内在结构和它们之间的相互影响和关系,因为任何事物外在呈现出来的动态行为特征往往都是内部多个子系统间相互作用而产生的效果。

比如一辆车最终动态行驶最终产生的驾驶感受来源于车辆本身的底盘,悬挂,发动机,变速箱,座椅和隔音设备等诸多内在子系统相互配合而产生出来的最佳效果。当你理解了内在各个组件直接的配合协同方式后,往往可以对动态呈现性能有更加深入的理解。

静态事物分析,不能脱离环境,环境可以是组织群体,可以是政策法律,也可以是社会契约,可以是经济形势。脱离了当时的环境特征,那么很多时候我们的分析无法找到内在根源或失去意义。

如果考虑环境,对事物的完整分析可简化为N+E+T,即N为事物的多个维度,E为静态环境,T为动态时间。

事物表现的特性和事物内在构造往往是两个层面的概念,即事物的特性往往通过静态构造+动态呈现所展现出来的能力,比如前面说到的车辆的动力性能等。特性往往是影响到我们进行目标决策的关键关键因素,但是特性最终表现出来的分数往往则需要静态+动态的组合分析。

要展现出事物的内在结构,最简单的树状模型或矩阵表格化模型展现,这往往是结构化里面最常谈到的模型展现方式。但是事物的静态分析往往是多维的,因此我们可以理解为找到任何一个单维逐层分解为树模型,从多个维度中找到两个关键的维度组合为矩阵或表格化模型。

但是任何事物的静态分析都不可能如此简单,任何事物的复杂度往往都体现在事物内在的各个子系统间相互交错和作用的关系上,因此在考虑这些关系后事物的内在结构往往变化为一种相当复杂的网状结构图。对于事物内在网状关系图,有两种方式进行呈现,一种是类似系统思考里面经常用的系统循环或动态建模图,一种则是类似咨询规划里面常用的各个组件之间的集成关系呈现图。

只有理清楚了事物内在的集成关系和相互作用,才可能更好的做动态分析。

对于动态分析,我原来的文章里面往往只强调了时间线的发展线索来理解事物发展和演进的完整过程,而没有太强调事物本身体现出来的外在行为特征。一个人把他从小学到工作整个经历和发展过程拿出来分析是动态分析,同时对这个人在这个时候说的一句话,表现出来的行为举止分析也是动态分析。

首先说事物本身的行为特征分析,任何事物表现出来的动态行为,往往都来源于内部各个子系统或组成部分的相互作用力和配合。因此要详细分析事物外在的行为和能力表现,就必须能够搞清楚最终这个动态特征是如何产生出来的,事物从接受到一个输入或请求,在内部究竟经过了哪些组成单元,相互之间究竟完成了哪些相互作用最终才表现出来了这种行为特征,只有这样你才可能对动态特征进行完整分析。

一辆车的动力特性不如人意,那么优化前就必须搞清楚最终的动力感受是如何一步步产生出来的?一个系统本身的性能低下,那就必须搞清楚从客户发起请求到最终产生输出在系统内部究竟进行了哪些交互?

只有深入到系统内部,往往才可能分析事物内部运行机制而得出有价值的分析结果。你虽然可以根据你以往的经验提出合理的假设,但是最终的验证过程还是必须到事物内部交互和运行分析。

一个事物动态行为特征往往受到事物内部各个组件间的相互作用和影响;而一个事物本身的静态特征往往又由该事物长期的时间线的发展过程所积累呈现。如果说人的性格是一种静态属性,那么要搞清楚某个人为何是这种性格特点,往往除了外在环境和关系分析外,最重要的就是这个人从小到大的动态时间线活动和经历分析,这种长时间线的动态活动最终都沉淀到个人的性格积累上。

对于动态分析,最容易想到的呈现就是流程图,对于阶段,步骤,活动图等往往都是流程图的一种变种。如果最简单的理解流程图那应该就是一个维度是时间线,一个维度是事物和外在事物,而两个维度中间的内容则是事物本身的活动内容。

基于事物时间线的动态活动分析,对于任何一个活动都必须要结合当时静态时点事物所面临的外在环境,所面临的外部事物关系进行展开,即动态分析的时候任何一个阶段点或截面仍然是静态的,还得结合静态分析。如果静态分析是解决know-what层面的问题的话,动态分析则重点解决know-how的问题。静态分析可以让你依葫芦画瓢,而动态分析洞悉机理后让你可以持续改进和举一反三。对事物的分析往往都是基于我们期望的研究目标出发,从事物的维度,动静结合,而最终呈现出来的事物动态立体的完整形象。

最后简单做下总结,即:

1. 对事物的分析应该是N+E+T,形成动态立体的事物完整呈现和理解。2. 只有洞悉了事物内在机理,组成要素之间的关系,才能够更好的理解事物外在行为表现。3. 分析过程应该是自顶向下逐步展开,不要一开始就落入细节,跳出事物了解宏观在进入事物理解微观。4. 动静分析并相互结合是事物分析最普适的分析方法。5. 分析过程是将复杂逻辑转化为简单可理解的过程,即尽量降多维复杂空间转化为切面下的平面结构。6. 分析始终要围绕目标和关键要素,既剔除和目标无关的缠枝末节,又在关键点上尽量深入和取证。
事物认知-单事物分析

要把一个事物描述清楚,在现实生活里面我们最容易理解的还是平面化的结构化图形或者形象图形,而对于立体模型本身理解起来相对更加困难。我们可以看下立体几何和平面几何,对于立体几何本身的学习困难度大于平面几何,同时对于立体问题我们首先是期望将其转化为平面问题,那么难点就在于立体如何转到平面。

要理解和分析一个立体多维的事物,首先就要考虑将其转化为一个平面容易理解和阐述的事物,即图1想描述的内容,一个立方体你要研究清楚那么首先要将其6个面研究清楚,再来考虑6个面如何组合和集成为一个完整的立体图形,6个面之间究竟是什么关系?即:

立体多维-》二维或单维分析-》各个维度集成分析

大学对于理工科往往会开设机械制图课,那么可以看到对于一个立体结构,我们比较容易输出3个视角的投影图,但是第二个问题来了,如果给你三个视角的平面图,你能否快速的构想出来具体的立体形象?即很多时候对于事物的分析,分解容易而集成难,那一个完整的闭环应该是:

立体多维-》二维或单维分析-》各个维度集成分析-》聚合还原并闭环

这个思路理清楚后可以看到对于工作中很多场景都基于该分析思路。那一个软件系统来说,当我们对其架构进行分析和设计的时候,可以看到架构本身就存在多个维度和视角,业务流程,数据,技术,物理部署,运行机制等都可能是架构关键的视角。那要把架构描述清楚,就必须首先对这些单个维度逐一地进行分析和描述,类似在架构设计中经常谈到的4+1视图就是一种架构设计的常见思路。

但是如何才能给算一个完整的架构,其核心不在于单独的每个架构视图描述清楚,而是在于各个架构视图之间是如何集成的?用例视图和逻辑视图是什么关系?具体的实现视图最终如何映射到部署视图?各个架构视图如何能够整合为一个完整的架构。架构的难点已经不在单架构视图,而真正在于对单视图的整合能力,只有理清了如何整合,才能给更好的从静态分析到动态分析,拿架构来说即静态模型到架构内部的动态运行机制。

对于维度之间的关键分析,则到我上面的图2里面,即在分析各个维度之间的关系和集成的时候,我们最常用的方法和工具就是矩阵分析,对于矩阵分析后面还要讲,特别是在一组事物的组合分析中更是被大量的采用。虽然矩阵分析的方式有很多变种,但是无论怎么变,关键就是矩阵的两个维度,维度里面放的内容。

立体多维-》选择关键的两个维度-》构造矩阵-》集成点分析

矩阵分析一定要注意,其关键不是你选择出来的两个维度,而是矩阵里面真正有可放的东西。对于在事物群分析的时候,矩阵里面放的就是事物相对来说容易些。类似在企业战略分析里面经常看到的波士顿矩阵,GE矩阵,安索夫矩阵等,其矩阵类似图2中的第一种矩阵分析图,即矩阵里面是具体的产品或战略点。

而在单事物分析里面,具体的矩阵分析场景更类似第二种场景。我们还是拿IT企业架构规划里面的一些实际场景来说明矩阵分析的使用。

对于企业架构,我们往往在前期通过多维转平面的时候,会具体分析业务架构,数据架构,应用架构和技术架构等。在这些架构都分析清楚后还得进行架构之间的集成分析,在这里我们可以分析业务流程或功能和数据对象之间的集成点,这就是在架构分析中我们谈得比较多的CRUD矩阵分析,当然我们也可以分析流程和功能架构之间的矩阵,即看看我们一个流程的支撑具体是落到系统里面的那些功能点上。通过这些矩阵分析可以帮助我们更好的理解和整合还原原始的架构,也更加容易理解架构内部的机理。

多维转平面后,还得分析平面本身里面的一些分析和思考方法。对于平面也一样,也是我前面很多文章已经谈到的,即首先应该分为静态和动态分析,而在静态分析中核心又是分解,即通过分解会形成平面图形中的两种重要结构,一种是树结构(典型代表是思维导图),一种是二维的表结构(典型常用是excel表)。

事物-》静态分解-》树结构+表结构-》进一步的分解后集成分析

拿IT系统中的应用功能架构来说,对于功能架构常用的还是静态分解,即形成具体的功能点,你可以用树状结构和思维导图工具进行描述。但是在功能架构展示的时候往往少用,更多的我们会用功能架构图,功能架构图本身是一种架构化的图形展示方式。在功能架构图后还得分析各个功能模块之间的集成关系图等。

在静态架构分析和展示中,存在一些树状和二维表结构常见的一些变通图。其中对于功能架构图是一种常见的,即大方框套小方框,中间可能还进行分层。也可以是由表格演进的矩阵图,中间放具体的映射内容。而对于树,本身也还可以类似组织机构图方式呈现,而不局限于仅仅是思维导图。

结构和呈现,重要的首先是要把结构分析和梳理清楚,再来考虑通过什么方式去呈现,而不是拿着呈现的形去反推结构。这也是在我原来一些ppt文章里面谈到过的,当你做ppt到一定阶段的时候一定要抛弃掉ppt模板的约束,模板本身不是促进你思维,而是约束和僵化你的思维。

任何静态事物的分解在分解的时候都必须考虑层级的概念,不同的level层级下应该具备相同的粒度,在分解的时候最容易犯错的两个地方,其一是不符合MECE法则,其二就是分解层级粒度问题。这两个问题都解决好了才是一个完整的结构分解,这种分解才能给更好的根据金字塔原理的思路去做最终的呈现。要明白最终呈现本身的不清楚核心原因在于分解时候的结构不清楚,演绎本身的模糊也在于最终归纳上的错误。

静态事物的分解和呈现最终都是无法真正理清事物的内在机制,因此对事物本身的动态和运行机制分析往往才是更加重要的内容。对事物的动态分析一个是把事物看为一个整体,根据时间线去研究事物本身的发展演进过程。当你做了这一步后,会衍生出第二个问题,即是什么推动了事物的这种动态变化?任何事物的动态发展变化一个方面是外在环境和事物的推动,一个则是事物内部各个组件之间的相互作用力导致。

事物-》静态分解-》动态分析-》静态分解组件支撑动态发展

静态和动态分解容易,但是动静结合分析难,即在静态分解完成后,还需要考虑事物本身的动态变化究竟是静态组件之间如何相互作用推进的。从事物发展演进的动态观来看,事物的各个静态组件本身不是死的,而是活的,正是由于事物动态发展将静态组件之间衔接起来了。

还是回到IT系统建设层面来举些例子来说明。一个软件系统在设计实现的时候会分解为多个组件,但是一个业务流程和功能究竟如何流转的?那就存在组件之间要进行交互,即对于拿到的动态业务流程需要去分析,组件之间如何进行交互,从获取到一个需求最终完成闭环并产生一个输出。这个想清楚了后系统的具体实现才能够想清楚。即回到我前面一直谈到的一个点,静态分解往往本身不是目的,静态分解后的组件如何交互和集成,完成和实现一个动态的目标,或者说最终完整聚合成最初的事物才是最关键的。

你研究的目标-》事物-》静态分解-》动态分析-》动静结合分析-》回归目标实现

任何思维层面的事情,任何分析和决策,都不要忘记了你最初的目标,否则你将会越走越远。特别是在思维中越是分解和分析,越容易不断地深入和陷入到细节。勿忘初心,方得始终,思维中的目标驱动并形成闭环是思维过程中必须时刻意识到的事情。

事物认知-事物群分析

上一篇思维的框架主要阐述了单事物分析,这篇阐述事物群分析。静态分析+动态分析,单事物+事物群分析基本就构成完整的思维框架。而具体的思维方法基本都会体现在以上四种类似的分析当中。

对于事物群分析更多的会使用在决策上面,即面对一组事物或产品,需要根据目标选择多个形成组合,最终在平衡多个目标属性后达到一种组合最优化的效果。在产品研发和战略管理里面,对于IPD集成开发有组合管理和组合分析,在公司战略规划里面有大量的战略分析和产品分析是基于事物群分析,我们平时经常看到的基金投资组合本身也是事物群分析和组合管理决策。

事物群-》分类-》抽象

面对一个事物群的时候,首先要考虑的是分类,即可以根据事物的哪些关键属性首先对事物进行初步的分类整理。拿投资理财的来说,你可能会面对诸多的产品和选择,如果从风险和收益考量你可以初步分类为银行理财产品,信托,债券,基金,P2P理财等几个大类。对于基金类可能又可以分为保守类的债券投资基金和激进的股票基金,而任何一个基金产品本身又是多个最终股票形成的股票池的产品组合。

分类是第一步,在进行分类后即可以根据事物本身的关键特征和属性,选择关键的两个维度属性进行矩阵分析,如投资理财,风险和收益及可以作为关键的矩阵两个维度。

在完成初步的分类后,要研究一个完整的事物群还需要进行进一步的抽象,对于抽象也可以理解为归纳,即找寻不同事物的共同特征和属性,从最终的产品和事物转化为抽象的思维表达。当你在研究封闭图形的时候,如上面图的例子,最底层可能是三角形和四边形,最终向上可以抽象为多边形;而对于椭圆和圆向上可以进一步抽象为曲线封闭图形等;最终再抽象到根节点即是我们要研究的封闭图形。

抽象的目的是研究事物的共性特征,而从具体事物归纳和提炼出抽象的表达,当有了这种抽象的表达后才可能后期对研究的新事物进行演绎和拓展。即抽象的过程是归纳的过程,而解决问题和决策的过程是演绎的过程。

比如一个企业存在研发,销售,流程优化等各类项目运作,但是在研究完后我们会发现不论哪种类型的项目,对于计划,任务跟踪,里程碑,汇报机制等项目管理关键属性都是共通的,那么即还需要进一步抽象为公司级的基础项目管理方法论和标准规范体系。

同类事物群-》关键属性矩阵分析-》结构化决策

如果我们本身研究的已经是同类事物,则可以直接过渡到关键属性的矩阵分析,这个在公司战略和产品规划里面采用得相对多。比如公司准备研发新的产品,究竟应该选择哪个产品或哪几个产品形成一个组合进行研发,以满足公司的战略目标。

这种决策本身的难度即在于公司的战略目标本身是一个综合评估目标,任何公司的战略目标都需要考虑短期和远期,规模和利润,客户和内部,项目和产品等多个维度的平衡。如果前期本身的战略目标就没有思考清楚,本身就很难真正进行组合分析和决策。

就类似我们做理财投资一样,首先要明确你的收益目标和能够承受的最大风险是如何的?其次才能给进行产品选择和组合。对于收益,风险和流动性构成了我们投资的核心目标体系,任何最终的组合选择往往都是对这三个子目标综合考量后的一种平衡。

在战略管理中,波士顿矩阵方法会从市场占有率和需求增长率两个维度来对产品进行分类和矩阵分析,真正找出公司产品体现里面的金牛产品和明星产品。安索夫矩阵则从产品和市场本身的新旧属性角度来考量一组产品体系,在分析过程中去考量既要进一步的巩固新市场,又要通过考量新产品和新市场来提升企业差异化竞争的能力。而对于GE九象限矩阵则从市场吸引力和企业本身的竞争优势两个维度进行分析,以评估哪些市场要保守进入,而哪些市场应该全力以赴。

不论是哪种矩阵分析方法都可以看到,对于矩阵里面放到的是我们待选择和决策的事物,而对于矩阵的维度属性则是影响到我们决策最关心的因素。这个维度可以是事物本身的关键属性,同时也可以是外部市场或环境因素。矩阵分析最关键的作用仍然是对同类事物根据关键维度和不同的视角进行分类,然后找到我们最关心的内容。

一个企业内部的IT项目规划建设和实施也常用到矩阵分析的方法,因为对于项目建设的优先级需要考虑诸多的因素,即对于项目本身的成本投入,业务收益,实施难度,建设周期等都可能影响到项目的选择。那实际综合决策的目标往往也很简单,即在有限的资源和预算投入下,希望选择实施的项目能够发挥出最大的业务收益,那么在这个目标下就需要如何去规划和演进。

你可以从成本,收益,难度,周期中任意选择两个关键维度来构造相应的矩阵,通过矩阵方式进行更加形象化的定性产品关键特性评估。最终作为产品选择的参考。

当进行了初步的矩阵分析后,我们还可以进行进一步的结构化决策分析,即对于同类的产品,我们选择出需要综合考虑的决策维度,同时评估每个维度对应的权重,然后对各个维度进行定性+定量结合的方式进行打分,最终得出产品群中的综合得分排序。例如上面的项目选择例子,当我们更加强调短期见效的时候,我们可以把项目实施周期这个维度的权重评估得更大些。

结构化决策很难做到完全定量,但是这种决策方法给我一个重要的思考架构和方法,即进一步科学全面的评估一个事物的整体能力,而不是单纯的陷入某一个关键决策属性而忽视了全局。我们可以看到当前在一些大型项目的招标评标方法中,基本采用结构化决策的方式进行,即需要对供应商的业务和技术能力,对于技术可能有包括了产品本身,售后团队,实施能力等多个维度进行综合评分排序。这些都是典型的结构化决策应用场景。

最后简单总结下一些重点:

单事物讲分解,分解后集成;事物群讲分类,分类后聚合。

单事物矩阵往往分析事物内部的集成和交互,而事物群矩阵则是强调对事物本身的决策分类。

事物群分析的重点是分类和抽象,其次才是优先级和排序。

事物群决策往往选择的是一个组合,而不是单个事物,决策的目标往往也是组合目标而不是单一目标。

从思维到意识

学习意识

这个在过去的文章里面谈得最多,强调的重点是兴趣驱动的主动式学习。但是我们要看到碎片和点滴知识的学习可以是零散的时间随时吸收和完成,而完整的总结和经验提取往往才是需要大块时间和系统化的进行。任何找理由说没时间学习都是本身惰性而已,包括你平时工作实践和他人沟通时刻都是在进行学习和信息采集。

那为何有的人学习了吸收了,有的人本身没任何知识学习上的进展,这个在学习意识上的差异就体现在很多事情都是单纯的工作任务驱动,目的是单纯完成工作,而不是本身兴趣和长远个人发展目标驱动,目的是完善自我知识结构。在做任何事情上都能够突破传统工作任务本身边界,留意身边的事和物,相关资料和知识的外延,凡事都能够深入和朝前走一步,才可能获取和吸收到足够的知识量,这些知识积累在当前工作中可能不会用到,但是往往在后续的工作实践中会发挥巨大的作用。

举个例子来说,如果你本身是一个绘画爱好者,接到一个工作任务是要到一个知名的画展去取一副画,从单纯的任务完成来说取到画交付即可,而实际如果真有自身兴趣驱动,往往一定会停驻在展厅学习和欣赏其他各个大师的画作。如果本身工作任务有时限要求,你也可能第二天或周末再单纯去参观这个画展。

而实际工作和实践中可以看到大部分是第一类人,有只有少量是第二类或第三类人。这就是学习意识上的差异,这个差异本质还是兴趣驱动,个人长远规划驱动的,这个意识难以落地,原因还是在于学习成本投入是当下,但是价值兑现是远期或未知。这种学习不是被动的而是主动的,没有任务,没有指标,没有短期利益,没有绩效考核,全靠自我驱动。少去抱怨没有培训,没有学习氛围,没有环境,只要自己多留意,想去学,在当下信息如此发展情况下就不可能没有途径。一个人如果这个意识没有,兴趣没有,去沟通再多的学习方法和工具都是徒劳的。

风险意识

对于风险也是我谈得比较多的一个话题,任何事情或项目的执行,如果没有风险那就一定会取得成功,一个项目的执行过程往往就是一个风险识别,分析和解决的过程。但是今天谈风险却要转谈责任和纪律,因为很多时候不是没有风险意识的问题,而是没有责任和纪律感的问题。

举个例子来说,我出门的时候看到天气阴沉,我意识到可能会下雨,风险应对措施是需要回去带雨伞,但是很多时候我并没有返回去,原因不是没有意识到要下雨的风险,而是即使下雨了也无所谓,我能够承受这个风险转问题的损失。

其次,有时候不是没有风险意识,而是责任感和态度缺失。

再举个例子,你去参加一个同学聚会可能会迟到,但是你要去拜访一个关键大项目的领导你会迟到吗?两件事情我们都会意识到交通堵塞可能导致的迟到的风险,但是我们会选择性地应对。同学聚合迟到点无所谓,但是大领导找你觉得不能迟到。

所以很多时候不是风险无法识别问题,而是责任感和纪律问题,有可能公司并没有严格的惩罚措施情况下,自己能否保存高标准自我要求和严格一致的行为准则。我们很多人往往就是小的事情上不做好,老是出问题,本质还是自我不足够重视,所有的小事都做不好,到了真正有大项目或大事情的时候,你会发现自己想做好也力不从心了,到了这个时候往往才是已经真正无能力识别风险了。

做事情,我们是经常按100分高标准要求去做而保持都能在90分以上的水准,还是说按着60分要求,而经常出现不及格情况,这就是一个重要的意识问题,一个专业态度和严谨性的问题。

换位思考和服务意识

在意识里面谈这个内容可能会觉得比较奇怪,因为其不仅仅是意识,也包括了做人和做事的态度,个人性能和习惯的改变等。今天谈这个意识就是在工作和实践过程中,需要考虑让你的下游团队成员,让你的客户感觉足够的舒服。是站在客户或下游的角度再考虑如何把事情做好,如何更好地交付,而不是自我立场来考虑和判断问题。你能想到的我都帮你想到了,你没有想到的我也帮你想到了,给出了建议,如果都是这个方式做事情不可能让对方不满意。自己可能天天在那抱怨接受到的输入质量差,导致自己花了数倍的时间完成后续事务,但是却从来不会意识到自己输出给下游和客户的成果同样差,然后还可以心安理得地归咎到上上游的责任,如果每个人都是这种做事情方法事情不可能做的好。

举个例子来说,一个客户请我去出差去做一次培训,前面经过一次沟通后发现,包括机票的预定,酒店的安排,机场的接送,培训教室和设施的准备都提前安排的妥妥当当。你会发现到了你这环节的工作开展十分顺畅,中间并不需要太多的频繁的沟通,你能够想到的别人都已经安排好了,因为对方是站在我的角度去想问题不断提升服务水平。

天下难事必作于易,天下大事必作于细。所有细节和小事多做到位,多留意多观察,凡事都深入和扩展一点,不断持续地随时随地的实时积累,定期的总结和系统化,才逐步能具备做大事情的能力,具备自我终生受益的专业和严谨的态度。

编程思维的两个核心

在前面我专门写过一篇编程思维的文章,这篇文章谈到两个关键点,其一就是问题域分解后与算法模型匹配,核心是匹配逻辑;其次是面向对象的分析和思考,核心是抽象和复用能力。在这里摘录部分内容供参考:

问题域和算法间的模式匹配能力

从编程本身来说最核心的还是算法和数据结构。这也是任何程序最重要的两个基本要素。既把问题域本身涉及到的数据映射到合适的数据结构,把通过程序解决问题的过程映射为具体的算法逻辑。那么编程实际的难点在哪?不是算法本身或数据结构本身,而是当你拿到问题域的时候知道如何理解和分解问题,并将其映射到最适合的算法或数据结构上。这个映射其实本身不是程序解决的问题,还是人脑在思维,程序本身仅仅是在实现自动化的过程。

那么程序在算法实现过程中最基本的是什么?我们看不同的程序片段可以看到的还是if/else,或者for/while,然后才是数据或数据类型定义。而前者即写任何一个程序中最重要的控制逻辑。那么编程里难的实际上不是控制语句本身,而是在把问题域分解后知道如何理解判断逻辑,如何将问题域中重复的东西抽象为循环,如何从问题域中抽象出数据结构。一个人编程能力本身的好坏,或者说编程思维能力,重点其实是体现在这种映射能力,也可以称这种映射能力为数学建模能力。

举个例子来说,如果一个问题你已经知道了可以映射到构建二叉树,然后通过遍历的方式来解决了,那么可以说然后一个掌握了语言语法的人都可以写出程序来。那么实际编程思维或能力的强弱则在于前面谈到的映射和建模。

现实世界的抽象和复用能力

面向对象思想和面向对象编程语言的出现,可以说也是编程思维本身的第二次重大提升。既原有的编程语言可以看到我们关注更多的已经是抽象后的解决方案,而面向对象的编程语言则首先关注的是通过对象和类,通过继承,通过接口定义等首先对现实世界进行很好的抽象描述,其次才是如何去解决问题。现实世界中所有的一切都是对象,而面向对象语言中的类本身就是对现实世界中对象的很好的抽象。

对于面向对象的核心特征谈得比较多的是封装,继承和多态。这些可能比较偏技术词汇,那么再简单点来说面向对象编程思维其核心则是找到问题域中的对象,将其抽象为类,识别类应该有的属性和方法特征,同时去理清类和类之间的关联和交互关系,将问题本身的解决过程映射到类和类之间的方法交互上。

如果从这个意义上来说,好像也不是很复杂,那么实际面向对象编程的难点实际在为了保持代码足够的健壮性,可维护性,可扩展性而做出的各种抽象,包括接口的提取和组合,控制或逻辑类的增加等,这些本质已经转换到技术域类本身。

除了上面谈到的,再谈下其它的一些内容。编程里面有一个重要的思想即是复用,从最简单的函数,到模版库,类库,再到更上层的公共组件等,都在体现复用的思想,而复用本身的目的则主要是提升开发效率,提升可维护性和代码的可读性等。复用可以理解为编程过程中的编程思想更加恰当。

编程的思想是自动化,程序中体现的一个重点我更喜欢把它理解为循环,从抽象中去发现和发掘一种可自动化的循环,这种循环的处理正是程序的强项。任何人都应该有这种自动化的编程思维,即懒人思维,重复的事情一定不要自己手工重复完成。

标签: #动态规划背包问题ppt