=Start=
缘由:
整理总结一下最近看的《系统之美》这本书,收获不少,但还需不断重读、思考、实践。
正文:
参考解答:
前言
- 管理者所遇到的问题通常都不是彼此孤立的,而是相互影响、动态变化的,尤其是在由一系列复杂系统构成的动态情境之中。在这种情况下,管理者不能只是解决问题,而应善于管理混乱的局势。
- 只要懂得系统原理,就可以在恰当的地方施加干预措施,从而获得期望的转变。
- 不能只通过了解系统的各个构成部分来认识系统整体的行为。
第一部分 系统的结构和行为
第1章 系统之基础
- 总体大于部分之和
- 对于一个系统来说,整体大于部分之和。任何一个系统都包括三种构成要件:要素、连接、功能或目标。它具有适应性、动态性、目的性,并可以自组织、自我保护与演进。
- 从关注要素到透视游戏规则
- 理解系统行为的动态性
- 反馈:系统是如何运作的
- 自动洄游的鱼:调节回路
- 脱缰的野马:增强回路
- 增强回路是自我强化的。随着时间的变化,增强回路会导致指数级增长或者加速崩溃。当系统中的存量具有自我强化或复制的能力时,你就能找到推动其增长的增强回路。
第2章 系统大观园
- 单存量系统
- 系统1.1:一个存量、两个相互制衡的调节回路的系统
- 系统1.2:一个存量、一个增强回路以及一个调节回路的系统
- “主导地位”是系统思考中的一个重要概念,当一个回路相对于另外一些回路居于主导地位时,它对系统的行为就会产生更强的影响力。虽然系统中经常有好几个相互矛盾的反馈回路同时在运作,但只有那些居于主导地位的回路才能决定系统的行为。
- 模型的价值不取决于它的驱动情景是否真实(其实,没有任何人能够对此给出肯定的答案),而取决于它是否能够反映真实的行为模式。
- 系统1.3:含有时间延迟的系统
- 总之,经济是一个无比复杂的系统,充满了各种调节回路和时间延迟,它们本质上具有波动性。
- 双存量系统
- 系统2.1:一个可再生性存量受到另外一个不可再生性存量约束的系统
- 任何真实的实体系统都不是孤立存在的,其外部环境中都有各种相互关联的事物。因此,任何物理的、成长的系统,或早或晚都会受到某种形式的制约。
- 事实上,以后每当我们看到一个成长的系统,不管是人口、一家公司,还是一个银行账户、一则谣言、一种流行病,或者新产品的销售,我们都可以找出驱动其增长的诸多增强回路,也必然能找到最终限制其增长的调节回路。即使尚未占据主导地位,似乎还看不到它们对系统行为的影响,但这些调节回路肯定存在,因为没有任何真实的物理系统可以永无止境地成长下去。
- 如果你构建的资本存量依赖于一项不可再生性资源,那么它增长得越高、越快,下跌得就可能越深、越快。在资源开采或应用以指数级增长时,若不可再生性资源储量翻番或扩大4倍,只能稍微延长一些开发的时间而已。
- 对于不可再生性资源的管理,真正需要做出抉择的是快速致富、“过把瘾就死”,还是无须那么富有,但可以持续的时间更长。
- 系统2.2:有两个可再生性存量的系统
- 可再生性资源主要受限于流量。
- 到底可再生性资源能否在过度开发之后“劫后余生”,取决于在资源严重衰竭的那段时间里发生了什么情况。
- 在这里,我们可以看到可再生性资源系统的行为模式有三种可能性:
- 过度开发,然后逐渐适应、调整至相对稳定的平衡状态,并长期保持;
- 过度开发,超出了均衡状态,之后上下振荡;
- 过度开发,之后导致资源的枯竭,产业崩溃。
- 实际会出现哪种结果,取决于两方面:第一,关键转折点是否被突破。一旦关键转折点被突破,资源的种群数量实现再生的能力就会被破坏;第二,在资源逐渐衰减的过程中,抑制投资增长的调节回路的力度。如果该调节回路可以在关键转折点到来之前,快速起作用,控制资本的增长,那么整个系统就能平滑地达到均衡状态;如果该回路速度比较慢,不足够有效,系统就会振荡;如果该回路非常弱,或者起作用的速度很慢,这样一来,即使资源已经降低到难以再生的水平,但资本仍在持续增长,最终的结果是,该资源和产业都将崩溃。
- 对于所有复杂的系统来说,判断系统未来行为走势的诀窍在于,了解什么样的系统结构包含哪些可能的行为,以及什么状况或条件可以触发这些行为。换句话说,如有可能,我们可以调整系统结构和相关条件,从而减少破坏性行为发生的概率,增加有利行为出现的概率。
- 系统2.1:一个可再生性存量受到另外一个不可再生性存量约束的系统
第二部分 系统思考与我们
第3章 系统之美:系统的3大特征
- 适应力
- 系统之所以会有适应力,是因为系统内部结构存在很多相互影响的反馈回路,正是这些回路相互支撑,即使在系统遭受巨大的扰动时,仍然能够以多种不同的方式使系统恢复至原有状态。
- 适应力总是有限度的。有适应力的系统可能是经常动态变化的。相反,一直保持恒定的系统恰恰是不具备适应力的。
- 自组织
- 系统所具备的这种使其自身结构更为复杂化的能力,被称为“自组织”(self-organization)。
- 尽管以法律和维持秩序的名义,自组织能被长期压制、残酷打压,但它不可能被彻底消灭,而会顽强地持续下去。
- 科学本身也是一种自组织系统,它倾向于认为,这个纷繁复杂的大千世界,往往生成自一些简单的规则。当然,究竟是否如此,科学到现在为止仍然未能给出答案。
- 层次性
- 在新结构不断产生、复杂性逐渐增加的过程中,自组织系统经常生成一定的层级或层次性。
- 生命起源于单细胞细菌,而不是一头大象。层次性原本的目的是帮助各个子系统更好地做好其工作,不幸的是,系统的层次越高或越低,越容易忘记这一目的。因此,很多系统因为层次的功能失调,而不能实现并预定的目标。
- 要想让系统高效地运作,层次结构必须很好地平衡整体系统和各个子系统的福利、自由与责任。这意味着,既要有足够的中央控制,以有效地协调整体系统目标的实现,又要让各个子系统有足够的自主权,以维持子系统的活力、功能和自组织。
第4章 系统之奇:系统的6大障碍
- 3项启示:
- 我们认为自己所知道的关于这个世界的任何东西都只是一个模型。每一种语言、每一个字,都是一个模型;所有的地图、统计数据、图书、数据库、方程式和计算机程序,也都是模型;包括我们头脑中认知和描述世界的方式,即心智模式,也是模型。所有这些都不是真实的世界,永远也不可能是。
- 我们的模型通常是与现实世界高度一致的。这就是我们为什么会成为这个星球上最为成功的一个物种的原因。尤其是我们经由对周围世界的直接观察、深入体验所建立起来的心智模式,包括对自然、人和组织的认知,是非常复杂而精密的。
- 然而,与第二点相反的是,我们的模型仍远远达不到能完整地描绘世界的程度。这就是我们为什么经常会犯错误、会感到出乎意料的原因。在同一时间里,我们的大脑只能跟踪少数几个变量。哪怕基于正确的假设,我们也经常会得出不合逻辑的结论;或者依据错误的假设,得出看似符合逻辑的结论。例如,对于一个指数级增长过程所引发的增长量的变化,我们大多数人都会感到惊讶;而对于复杂系统中的振荡,只有很少的人能够凭直觉从容应对。
- 6大障碍:复杂表象、非线性世界、划分系统边界、看清各种限制因素、无所不在的时间延迟、有限理性。
- 别被表象所迷惑
- 在非线性的世界里,不要用线性的思维模式
- 恰当地划定边界
- 看清各种限制因素
- 无所不在的时间延迟
- 有限理性
第5章 系统之危与机:系统的8大陷阱与对策
- 政策阻力:治标不治本
- 当各个子系统的目标不同或不一致时,就会产生变革的阻力。
- 结果是,一方的努力成果会被抵消掉。事实上,某一方的成果越大,反方向的抵消力量往往也会越大,导致存量与以前的状况没有太大的差别,而这同时也是每一个人所不希望看到的。
- 安静下来,可以为人们提供更深入地审视系统内部反馈的机会,让我们理解人们行为背后的有限理性,发现更加符合系统各种参与者目标的方式,使系统的状态逐渐迈向更好的方向。
- 应对“政策阻力”最有效的方式是,设法将各个子系统的目标协调一致,通常是设立一个更大的总体目标,让所有参与者突破各自的有限理性。如果每个人都能为了同一个目标而和谐地相处,其结果将令人惊奇。对此,人们最为熟悉的例子就是战时的经济动员,或者战后或灾后的重建。
- 陷阱1:政策阻力——当系统中多个参与者有不同的目标,从而将系统存量往不同方向拉时,结果就是“政策阻力”。任何新政策,尤其是当它恰好管用时,都会让存量远离其他参与者的目标,因而会产生额外的抵抗,其结果是大家都不愿意看到的,但每个人都要付出相当的努力去维持它。对策——放弃压制或实现单方面的目标。化阻力为动力,将所有参与者召集起来,用先前用于维持“政策阻力”的精力,去寻找如何实现所有人的目标,实现“皆大欢喜”,或者重新定义一个更大、更重要的总体目标,让大家愿意齐心协力去实现它。
- 公地悲剧
- “公地悲剧”之所以产生,一个重要原因是资源的消耗与资源的使用者数量增长之间的反馈缺失了,或者时间延迟太长。
- 防止“公地悲剧”有以下三种方式: 方式一:教育、劝诫。帮助人们看到无节制地使用公共资源的后果,号召并激发人们的美德品行。劝说人们有所节制,以社会舆论谴责或严厉惩罚来威慑违规者。 方式二:将公共资源私有化。将公共资源分割给个人,每个人都要对自己行为的结果负责。如果某些人缺乏自控力,对资源的使用超出了其所拥有的资源的承载能力,他们也只能自食其果,伤害不到其他人。 方式三:对公共资源进行管制。哈丁将这种选择称为“达成共识,强制执行”。管制可以采取很多种形式,从对某些行为的严格禁止,到配额制、许可制、税收调控以及鼓励措施等。要想奏效,管制必须有强制性的监管和惩罚措施。
- 陷阱2:公地悲剧——当存在一种公共资源时,每个使用者都可以从这种资源的使用中直接获利,用得越多,收益也越大,但是过度使用的成本却需由所有人来分担。因此,资源的整体状况和单个参与者对资源的使用之间的反馈关联非常弱,结果导致资源的过度使用及耗竭,最终每个人都没有资源可用。对策:对使用者进行教育和劝诫,让他们理解滥用资源的后果。同时,也可以恢复或增强资源的状况及其使用之间的弱反馈连接,有两类做法:一是将资源私有化,让每个使用者都可以直接感受到对自己那一份资源滥用的后果;二是对于那些无法分割和私有化的资源,则要对所有使用者进行监管。
- 目标侵蚀
- 对于目标侵蚀,有两个对策:一是不管绩效如何,都要保持一个绝对的标准;二是不断地将目标与过去的最佳标准相对照,而不是和最差的表现相比。如果感知到的绩效比较乐观,而不是相对悲观,或者将最佳结果作为标准,而视最差结果为临时性的挫折,那么同样的系统结构就能把系统状态拉向越来越好的绩效。下行的增强回路,即“破罐子破摔”的恶性循环,将逐渐变成一个向上的增强回路,“事情越好,我就越努力工作,把事情做得更好”。
- 陷阱3:目标侵蚀——绩效标准受过去绩效的影响,尤其是当人们对过去的绩效评价偏负面,也就是过于关注坏消息时,将启动一个恶性循环,使得目标和系统的绩效水平不断下滑。对策:保持一个绝对的绩效标准。更好的状况是,将绩效标准设定为过去的最佳水平,从而不断提高自己的目标,并以此激励自己,追求更高的绩效。系统结构没有变化,但由于运转方向不同,便能成为一个良性循环,做得越来越好。
- 竞争升级
- 应对竞争升级陷阱的一种方式是,单方面裁军,也就是一方主动地让步,降低其系统状态,从而引导竞争对手的状态也随之下降。但是,按照系统通常的逻辑或规则,这一选择几乎是不可想象的。但实际上,它确实奏效,只要一方真有这样的决心,并且他没有被竞争对手因其单方面的让步而击倒在地。
- 应对竞争升级系统的另一种更为优雅的方式是,谈判达成裁军协定。这是一种结构性的改变,是关系到系统设计的活动。它将引进一组新的平衡控制回路,使竞争能够被控制在一定程度内。
- 陷阱4:竞争升级——当系统中一个存量的状态是取决于另外一个存量的状态,并试图超过对方时,就构成了一个增强回路,使得系统陷入竞争升级的陷阱,表现为军备竞赛、财富攀比、口水仗、声音或暴力升级等现象。由于竞争升级以指数级形式变化,它能以非常令人惊异的速度导致竞争激化。如果什么也不做,这一循环也不可能一直发展下去,最后的结果将是一方被击倒或两败俱伤。对策:应对这一陷阱的最佳方式是避免陷入这一结构之中。如果已经深陷其中,一方可以选择单方面让步,从而切断增强回路的运作;或者双方进行协商,引入一些调节回路,对竞争进行一些限制。
- 富者愈富:竞争排斥
- 在生态学领域,富者愈富是一个普遍存在、广为人知的概念,也被称为“竞争排斥法则”。按照这一法则,争夺完全相同的资源的两个不同物种,不能共生于同一个生态小生境之中。
- 在任何存在同质化竞争的市场中,都存在或曾经存在这样的现象,即从系统上看,市场竞争的本质是消除市场竞争。
- 陷阱5:富者愈富——如果在系统中,竞争中的赢家会持续地强化其进一步获胜的手段,这就形成了一个增强回路。如果这一回路不受限制地运转下去,赢家最终会通吃,输家则被消灭。对策:多元化,即允许在竞争中落败的一方可以退出,开启另外一场新的博弈;反垄断法,即严格限制赢家所占有的最大份额比例;修正竞赛规则,限制最强的一些参与者的优势,或对处于劣势的参与者给予一些特别关照,增强他们的竞争力(例如施舍、馈赠、税赋调节、转移支付等);对获胜者给予多样化的奖励,避免他们在下一轮竞争中争夺同一有限的资源,或产生偏差。
- 转嫁负担:上瘾
- 戒除上瘾,回到非上瘾的状态固然是值得肯定的,但更理想的状况是:提前预防,防止上瘾。
- 要想防止陷入上瘾的状态,需要以适当的方式干预,即增强系统自身应对负担的能力。“帮助系统改进自身”这一观点,可能比接管并运作系统成本更低,也更容易,但一些自由派政治家却似乎无法理解。秘诀在于,不要以英雄式的接管开始,而是从提出一系列问题开始。这些问题包括: ●为什么自然的纠正机制不奏效呢? ●如何移除影响成功的各种障碍? ●如何让推动成功的各种机制更为有效?
- 陷阱6:转嫁负担——当面对一个系统性问题时,如果采用的解决方案根本无助于解决潜在的根本问题,只是缓解(或掩饰)了问题的症状时,就会产生转嫁负担、依赖性和上瘾的状况。不管是麻痹个人感官的物质,还是把潜在麻烦隐藏起来的政策,人们选择的干预行动都不能解决真正的问题。
- 规避规则
- 如果选择并实施的干预措施,导致系统原本的自我调适能力萎缩或受到侵蚀,就会引发一个破坏性的增强回路。系统自我调适能力越差,就需要越多的干预措施;而这会使得系统的自我调适变得更差,不得不更多地依赖外部干预者。 对策 应对这一陷阱最好的办法是提前预防,防止跌入陷阱。一定要意识到只是缓解症状或掩饰信号的政策或做法,都不能真正地解决问题。因此,要将关注点从短期的救济转移到长期的结构性重建上来。
- 只要哪里存在规则,哪里就存在“规避规则”(rule beating)的可能。规避规则意味着,采取一些迂回或变通措施,虽然在名义上遵守或不违反规则的条文要求,但在本质上规避了系统规则的原本意图。
- 规避规则通常是下级对上级制定的刻板的、有害的、不切实际或不明确的规则的反应。
- 陷阱7:规避规则——“上有政策,下有对策”。任何规则都可能会有漏洞或例外情况,因而也存在规避规则的机会。也就是说,虽然一些行为在表面上遵守或未违背规则,但实质上却不符合规则的本意,甚至扭曲了系统。对策——设计或重新设计规则,从规避规则的行为中获得创造性反馈,使其发挥积极的作用,实现规则的本来目的。
- 目标错位
- 如果用GNP来定义社会的目标,社会就会尽全力去创造GNP。除非你在目标中明确设定并定期衡量、报告有关福利、权益、正义或效率等指标,否则就无法产出它们。
- 与规避规则恰恰相反,追求错误的目标、陶醉于错误的指标是系统扭曲的另一个特征。
- 陷阱8:目标错位——系统行为对于反馈回路的目标特别敏感。如果目标定义不准确或不完整,即使系统忠实地执行了所有运作规则,其产出的结果却不一定是人们真正想要的。对策——恰当地设定目标及指标,以反映系统真正的福利。一定要特别小心,不要将努力与结果混淆,否则系统将只产出特定的努力,而不是你期望的结果。
- 系统寓言:帆船设计的目标
- 过去,人们进行帆船比赛,不是为了赢取百万美元大奖或国家荣誉,只是为了享受这项运动的快乐。 他们用自己已有的船只来进行比赛,这些船都有其日常的用途,比如钓鱼、货物运输或周末环游。 但人们发现,如果比赛船只能在速度和机动性上基本一致的话,比赛会更加有趣。于是,规则改进了,人们根据长度、受风面积以及其他一些参数,将船只划分为不同的等级,规定选手只能在同一级别上进行比赛。 很快,专门为比赛而设计的不同类别的帆船就出现了。这些船尽可能地提高了单位帆面积的推进速度,减轻了标准尺寸船舵的重量。这些船往往奇形怪状、很难操控,根本不像是你想去海钓或周末出游时驾驶的那一类帆船。随着比赛变得更加严肃,规则也愈发苛刻,船只设计也更加怪异。 现在,比赛的帆船都非常快速、高度灵活,但是几乎不适于航海。它们需要专业的运动员和船员来管理。除了去比赛,没人会觉得那些美洲杯帆船赛上的赛艇有任何其他用处。围绕现有规则,那些船只是被极度优化了,以至于失去了所有适应力。只要规则发生任何一点变化,它们都将变成一堆废物。
第三部分 改变系统
第6章 系统之杠杆点:系统的12大变革方式
- 复杂系统的特征之一是“违反直觉的”,而寻找和撬动杠杆点也通常不能靠直觉。
- 复杂的系统就是复杂的系统,对其进行一般化的归纳是十分危险的。
- 12. 数字:包括各种常数和参数
- 11. 缓冲器:比流量力量更大、更稳定的存量
- 10. 存量-流量结构:实体系统及其交叉节点
- 9. 时间延迟:系统对变化做出反应的速度
- 8. 调节回路:试图修正外界影响的反馈力量
- 7. 增强回路:驱动收益增长的反馈力量
- 6. 信息流:谁能获得信息的结构
- 5. 系统规则:激励、惩罚和限制条件
- 4. 自组织:系统结构增加、变化或进化的力量
- 3. 目标:系统的目的或功能
- 2. 社会范式:决定系统之所以为系统的心智模式
- 1. 超越范式
第7章 与系统共舞:系统的15大生存法则
- 跟上系统的节拍
- 把你的心智模式展现在阳光下
- 相信、尊重并分享信息
- 谨慎地使用语言,并用系统的概念去丰富语言
- 关注重要的,而不只是容易衡量的
- 为反馈系统制定带有反馈功能的政策
- 追求整体利益
- 聆听系统的智慧
- 界定系统的职责
- 保持谦逊,做一名学习者
- 庆祝复杂性
- 扩展时间的范围
- 打破各种清规戒律
- 扩大关切的范围
- 不要降低“善”的标准
附录
- 系统术语表
- 系统原理概要
- 常见的系统陷阱(8个常见陷进)
- 采取干预措施的杠杆点(12个杠杆点)
- 系统世界生存法则(15个生存法则)
参考链接:
=END=
《 “[read]系统之美” 》 有 7 条评论
如何在项目管理中进行「系统思考」之一
https://tech.youzan.com/introduction_of_thinking_in_systems_a_primer/
系统动力学(System Dynamics)
https://wiki.mbalib.com/wiki/%E7%B3%BB%E7%BB%9F%E5%8A%A8%E5%8A%9B%E5%AD%A6
降低软件复杂性的一般原则和方法
https://mp.weixin.qq.com/s/-Gu_XkY2bZq9Lf2ZCJZPtQ
`
本文是作者阅读John Ousterhout的《A Philosophy of Software Design》之后,结合自己的工作经验,对“降低复杂性”做了详细总结,希望给读者朋友们带来不一样的思路。
一、前言
本篇文章是围绕着“降低复杂性”这个主题展开的,很多重要的结论来源于John Ousterhout,笔者觉得很有共鸣,就做了一些相关话题的延伸、补充了一些实例。虽说是“一般原则”,也不意味着是绝对的真理,整理出来,只是为了引发大家对软件设计的思考。
二、如何定义复杂性
子模块的复杂度Cp是一个经验值,它关注几个现象:
1.修改扩散,修改时有连锁反应。
2.认知负担,开发人员需要多长时间来理解功能模块。
3.不可知(Unknown Unknowns),开发人员在接到任务时,不知道从哪里入手。
造成复杂的原因一般是代码依赖和晦涩(Obscurity)。其中,依赖是指某部分代码不能被独立地修改和理解,必定会牵涉到其他代码。代码晦涩,是指从代码中难以找到重要信息。
三、解决复杂性的一般原则
首先,互联网行业的软件系统,很难一开始就做出完美的设计,通过一个个功能模块衍生迭代,系统才会逐步成型。对于现存的系统,也很难通过一个大动作,一劳永逸地解决所有问题。系统设计是需要持续投入的工作,通过细节的积累,最终得到一个完善的系统。因此,好的设计是日拱一卒的结果,在日常工作中要重视设计和细节的改进。
其次,专业化分工和代码复用促成了软件生产率的提升。比如硬件工程师、软件工程师(底层、应用、不同编程语言)可以在无需了解对方技术背景的情况下进行合作开发;同一领域服务可以支撑不同的上层应用逻辑等等。其背后的思想,无非是通过将系统分成若干个水平层、明确每一层的角色和分工,来降低单个层次的复杂性。同时,每个层次只要给相邻层提供一致的接口,可以用不同的方法实现,这就为软件重用提供了支持。分层是解决复杂性问题的重要原则。
第三,与分层类似,分模块是从垂直方向来分解系统。分模块最常见的应用场景,是如今广泛流行的微服务。分模块降低了单模块的复杂性,但是也会引入新的复杂性,例如模块与模块的交互,后面的章节会讨论这个问题。这里,我们将第三个原则确定为分模块。
最后,代码能够描述程序的工作流程和结果,却很难描述开发人员的思路,而注释和文档可以。此外,通过注释和文档,开发人员在不阅读实现代码的情况下,就可以理解程序的功能,注释间接促成了代码抽象。好的注释能够帮助解决软件复杂性问题,尤其是认知负担和不可知问题(Unknown Unknowns)。
四、解决复杂性之日拱一卒
4.1 拒绝战术编程
4.2 设计两次
五、解决复杂性之分层
5.1 层次和抽象
5.2 复杂性下沉
5.3 异常处理
六、解决复杂性之分模块
6.1 深模块和浅模块
6.2 通用和专用
6.3 信息隐藏
6.4 拆分和合并
七、解决复杂性之注释
7.1 注释的误区
7.2 使用注释提升系统可维护性
7.3 使用注释改善系统设计
八、后记
John Ousterhout累计写过25万行代码,是3个操作系统的重要贡献者,这些原则可以视为作者编程经验的总结。有经验的工程师看到这些观点会有共鸣,一些著作如《代码大全》、《领域驱动设计》也会有类似的观点。所以本文中提到的原则和方法具有一定实操和指导价值。对于很难有定论的问题,也可以在实践中去探索。
关于原则和方法论,既不必刻意拔高,也不要嗤之以鼻。指导实践的不是更多的实践,而是实践后的总结和思考。应用原则和方法论实质是借鉴已有的经验,可以减少我们自行摸索的时间。探索新的方法可以帮助我们适应新的场景,但是新方法本身需要经过时间检验。
`
OD必读书|《系统之美》精读笔记(一):了解系统
https://mp.weixin.qq.com/s/S36WUtI6pgks1WkjI3Zftg
OD必读书|《系统之美》精读笔记(二):系统的特征及障碍
https://mp.weixin.qq.com/s/gztIV04Agk4riUTEz9v4pg
OD必读书|《系统之美》精读笔记(三):系统的8大陷阱与对策
https://mp.weixin.qq.com/s/f61kDCOzouDCddkvEzcQMQ
OD必读书|《系统之美》精读笔记(四):系统的12大变革方式
https://mp.weixin.qq.com/s/x-3PfxHwMTcBZQVY3W5-3w
OD必读书|《系统之美》精读笔记(五):系统的15大生存法则
https://mp.weixin.qq.com/s/iwH13ncWQ4pvxss4mOt_zA
1.《系统之美》10000字思考笔记,遇见新世界(一)
https://mp.weixin.qq.com/s/To_wsGC5B1AzqMq814FyDQ
2.《系统之美》10000字思考笔记,遇见新世界(二)
https://mp.weixin.qq.com/s/DRSywIF9R7npC9QW1oFOsg
3.《系统之美》10000字思考笔记,遇见新世界(三)
https://mp.weixin.qq.com/s/-esw_tNCVPoEnquEZmBlag
4.《系统之美》10000字思考笔记,遇见新世界(四)
https://mp.weixin.qq.com/s/vlMu6Fge2sLE-ts9xNyH8Q
解决复杂问题时,深思熟虑未必管用
https://mp.weixin.qq.com/s/f8OIp2UsZKXQeSoQ9Bp6GQ
`
人们经常发现,做出最佳决策的时机往往并不是主动做决策的时刻。相反,这些瞬间通常发生在洗澡或者锻炼的时候。因为出乎意料的解决方法通常在我们放松的状态下出现,叫做“产生灵感的瞬间”。有时候,这些突如其来的想法是解决复杂问题的唯一办法,如果你有意识地进行思考,反而可能无法得出结论。
灵光乍现并非看起来那么偶然,而是能够在特定条件下被捕捉到的。数年来,我们一直在关注一项研究,提出了获得更多灵感的“四步法”。其中的每一步,都能帮助你意识到大脑中新的活动,而那些富有创造力的时刻正是来源于此。
# 注意安静的信号
不管你有多忙,尽最大的努力在会议间隙放松一下,给自己留一段独处的时间。你可以找一间空会议室,或者离开自己的办公室到外面走走。(科学家发现,散步很有可能给你带来下一个灵感。)
# 看清事物的本质
为了营造最好的“白日梦”氛围,永远不要将你的日程排得满满当当。相反,你应该有规律地安排一些的“停工期”——即使是很短的间隙,也能产生极大的影响。
你可以试着每天将你的电子设备关闭几个小时——如果可能的话,你也可以每周关闭几天。这样,你的意识就能自由地神游,你的大脑也就不会错过任何灵光一现的时刻。
# 保持积极的状态
如果你在进行一个复杂的决策时感到脾气暴躁,那么就应该做些其他事情来释放你的情绪。跟好友聊聊天,去外面吃顿饭,或者读一本书……这些都能带来你急需的突破性进展。
近期的研究也表明,小睡是一个缓解挫折感的好方法。因此,可以日常小睡片刻,以维持最好的状态——睡醒之后,你忙碌的大脑可能会催生出一个完美的解决办法来向你致谢。
# 避开深思熟虑
记住,在任何决策过程中你都应该稍稍休息一下。并且,当你在休息时,一定要将思维专注在其他事情上。
运动是一种万无一失的休息方式,它能让你的大脑得到充分的休息,所以,就像安排公司会议一样,你可以将每天的锻炼时间也放到日程规划中去。
简而言之,任何能帮助你注意到大脑中安静的信号——也被称为“弱活动”——的事情,都能增加你产生灵感的可能性。
通过训练自己:1.为宁静留出空间;2.保持内在专注;3.采取积极办法;4.不要太过主动,我们能在每一天的生活中收获更多灵感。
更多的灵感与洞见,意味着更快地解决复杂问题,无论这个问题是进行营销活动、解决客户挑战,还是改变世界,我们都将从中获益。
`
如何从容应对复杂性
https://mp.weixin.qq.com/s/FlBRFQjErM7fUdh9wH_pUA
`
软件的复杂性,是一个很泛的概念。
但是一直都是开发过程中的一个难题,本文旨在探讨如何去从容应对复杂性。
01-软件的熵增、构造定律
熵的概念最早起源于物理学,热力学第二定律(又称“熵增定律”),表明了在自然过程中,一个孤立的系统总是从最初的集中、有序的排列状态,趋向于分散、混乱和无序;当熵达到最大时,系统就会处于一种静寂状态。
软件系统亦是如此, 在软件系统的维护过程中。软件的生命力会从最初的集中、有序的排列状态,逐步趋向复杂、无序状态,直到软件不可维护而被迫下线或重构。
自然界是如何应对这复杂性?
这在物理中被称为构造定律 (Constructal Law), 是由Adrian Bejan于1995提出的:
For a finite-size system to persist in time (to live), it must evolve in such a way that it provides easier access to the imposed currents that flow through it.
对于一个有限大小的持续活动的系统,它必须以这种方式发展演进:它提供了一种在自身元素之间更容易访问的流动方式。
02-如何应对软件系统的复杂性?
Ousterhout教授在《软件设计的哲学》书中提到:软件设计的最大目标,就是降低复杂度(complexity)。
就是设计符合业务的构造定律的演进方式,一种可以以最小的开发维护成本, 使业务更快更好的流动发展的方式。
03-软件复杂性来自哪里, 如何解决?
# 不确定性的来源
1、业务的不确定性
2、技术的不确定性
3、人员流动的不确定性
# 如何面对不确定性
面对外部的确定性,转化为内核的确定性。
面对外部的不确定性,找到稳定的内核基础。
1、专注问题域
Robert C. Martin提到的BDUF,永远不要想着在开始就设计好了全部的事情(big design up front),一定要避免过度设计。除非能够十分确认的可预见变化,业务边界,否则专注解决当前1-2年内业务变化设计, 讲好当下的用户故事,专注解决眼前的问题域。 面向不确定设计,增量敏捷开发。
2、确认稳定的系统内核
随着业务的变化、系统设计也要持续演进升级。没有一开始就完美的架构,好的架构设计一定演化来的,不是一开始就设计出来的。
一个健康公司的成长,业务横向、纵向会发展的会越来越复杂,支持业务的系统也一定会越来越复杂。
系统演进过程中的成本,会受到最开始的设计、系统最初的内核影响的。面对外部业务的不确定性,技术的不确定性,外部依赖的不确定性。一个稳定的内核应该尽量把外部的不确定性隔离。
# 如何面对规模膨胀带来的复杂性
1、业务隔离, 分而治之
2、专注产品核心竞争力的发展
3、场景分层
# 认知成本
是指开发人员需要多少知识才能完成一项任务。
在引入新的变化时,要考虑到带来的好处是否大于系统认知成本的提升,比如:之前提到的BPM流程编排引擎,如果对系统带来的好处不够多也是增加认知成本的一种。
不合适的设计模式也是增加认知成本的一种,前台同学吐槽的中台架构比较高的学习成本, 也是认知成本的一种。
# 如何降低认知成本
1、系统与现实业务更自然真实的映射,对业务抽象建模
软件工程师实际上只在做一件事情,即把现实中的问题搬到计算机上,通过信息化提升生产力。
2、代码的含义清晰,不模糊
3、代码的整洁度
4、系统的有序性, 架构清晰
5、避免过度设计
6、减少复杂、重复概念, 降低学习成本
7、谨慎引入会带来系统复杂性的变化
04-应对复杂性的利器
领域驱动设计——DDD
1、对通用语言的提炼和推广
2、贫血模型和充血模型
* 贫血模型是事务脚本模式
贫血模型相对简单,模型上只有数据没有行为,业务逻辑由xxxService、xxxManger等类来承载,相对来说比较直接,针对简单的业务,贫血模型可以快速的完成交付,但后期的维护成本比较高,很容易变成我们所说的面条代码。
* 充血模型是领域模型模式
充血模型的实现相对比较复杂,但所有逻辑都由各自的类来负责,职责比较清晰,方便后期的迭代与维护。
面向对象设计主张将数据和行为绑定在一起也就是充血模型,而贫血领域模型则更像是一种面向过程设计,很多人认为这些贫血领域对象是真正的对象,从而彻底误解了面向对象设计的涵义。
3、对业务的理解和抽象
4、结构与防腐层
5、让隐性概念显性化
简单设计原则——《Clean Code》
1、保持系统最大可测试
2、避免重复
3、更清晰的表达开发者的意图
4、尽可能减少类和方法
`
《系统思维的艺术》(The Art of Thinking in Systems: Improve Your Logic, Think More Critically, and Use Proven Systems to Solve Your Problems – Strategic Planning for Everyday Life)
https://index.pmthinking.com/The-Art-of-Thinking-in-Systems-Improve-Your-Logic-Think-More-Critically-and-Use-Proven-Systems-to-6e6ebc0d1caa49b583a79430abf6f233
`
第一讲:线性思维和系统思维
抓住反馈回路,你就抓住了解决系统问题的关键。
第二讲:坏政策和好政策
要想改变一个系统,可以有上中下三种政策 ——
* 下策是直接命令。想要什么就直接要,反对什么就直接禁止。
* 中策是间接刺激。找到系统中的一个平衡反馈回路,让回路松弛一下。
* 上策是寻求一个新的共识。在这个新的共识上,把全社会团结起来去做一件事。
第三讲:负反馈和正能量
1. 平衡回路的作用是把当前系统的表现和系统的目标进行比较,一旦发现其中有差距就采取行动;
2. 因为坏消息和好消息的不对称,各种意外会使得我们对系统的印象,比系统的真实情况更差;
3. 更差的印象会降低我们心目中的系统目标,降低了的目标会让平衡回路的工作变得无效,结果就是恶性循环,系统逐渐走向衰败。
你的系统没有你想的那么差。所以该吃药得按时吃药啊!别忘了,一匹正在倒下的骆驼会吸引很多把刀。
第四讲:好系统的三个特征
好系统首先要不怕打击;为了不怕打击,系统就要自己更新自己学习,这就要求自组织能力;为了更好地实现自组织,协调好自组织和大系统的关系,就要有健康的层级结构。有了稳定的层级结构之后,系统的抗打击能力又会进一步增强。
这样的系统充满活力,能适应各种新局面。它会变得越来越复杂,越来越强大。
咱们今天说的似乎都是企业和国家这样的大系统,但是这三条对个人的学习和发展系统也很重要 ——
* 想要有**抗打击能力**,你就不能依赖单一的技能,不能指望一成不变的稳定工作,要建设好自己的负反馈回路。
* 想要发展创新,你就得有**自组织能力**,你要不断探索新事物,尝试新做法。
* 想要做大做强,你就不能事无巨细全靠自己,你要善于利用现有的工具,善于跟别人模块化地对接和合作。
死气沉沉、整齐划一、令行禁止,那不叫好系统。活力、自由、赋能,这才叫好系统。
有关系统思维我们暂时就讲到这里。系统论说起来并不难,真正用好可不容易,我们讲的这些可以说都是纸上谈兵。但是只要你脑子里有了这根弦,以后看问题,必然就多了一个角度!
`