技术

对容器云平台的理解 Prometheus 源码分析 并发的成本 基础设施优化 hashicorp raft源码学习 docker 架构 mosn细节 与微服务框架整合 Java动态代理 编程范式 并发通信模型 《网络是怎样连接的》笔记 go细节 codereview mat使用 jvm 线程实现 go打包机制 go interface及反射 如何学习Kubernetes 《编译原理之美》笔记——后端部分 《编译原理之美》笔记——前端部分 Pilot MCP协议分析 go gc 内存管理玩法汇总 软件机制 istio流量管理 Pilot源码分析 golang io 学习Spring mosn源码浅析 MOSN简介 《datacenter as a computer》笔记 学习JVM Tomcat源码分析 Linux可观测性 MVCC 学习存储 学计算 Gotty源码分析 kubernetes operator kaggle泰坦尼克问题实践 kubernetes自动扩容缩容 神经网络模型优化 直觉上理解机器学习 knative入门 如何学习机器学习 神经网络系列笔记 TIDB源码分析 《阿里巴巴云原生实践15讲》笔记 Alibaba Java诊断工具Arthas TIDB存储——TIKV 《Apache Kafka源码分析》——简介 netty中的线程池 guava cache 源码分析 Springboot 启动过程分析 Spring 创建Bean的年代变迁 Linux内存管理 自定义CNI IPAM 扩展Kubernetes 副本一致性 spring redis 源码分析 kafka实践 spring kafka 源码分析 Linux进程调度 让kafka支持优先级队列 Codis源码分析 Redis源码分析 C语言学习 《趣谈Linux操作系统》笔记 docker和k8s安全机制 jvm crash分析 Kubernetes监控 Kubernetes 控制器模型 Prometheus 学习 容器日志采集 容器狂占cpu怎么办? Kubernetes资源调度——scheduler 时序性数据库介绍及对比 influxdb入门 maven的基本概念 《Apache Kafka源码分析》——server Kubernetes objects之编排对象 源码分析体会 《数据结构与算法之美》——算法新解 Kubernetes源码分析——controller mananger Kubernetes源码分析——apiserver Kubernetes源码分析——kubelet Kubernetes介绍 ansible学习 Kubernetes源码分析——从kubectl开始 jib源码分析之Step实现 kubernetes实践 jib源码分析之细节 线程排队 跨主机容器通信 jib源码分析及应用 为容器选择一个合适的entrypoint kubernetes yaml配置 《持续交付36讲》笔记 mybatis学习 程序猿应该知道的 无锁数据结构和算法 CNI 为什么很多业务程序猿觉得数据结构和算法没用? 串一串一致性协议 当我在说PaaS时,我在说什么 《数据结构与算法之美》——数据结构笔记 PouchContainer技术分享体会 harbor学习 用groovy 来动态化你的代码 《深入剖析kubernetes》笔记 精简代码的利器——lombok 学习 编程语言的动态性 rxjava3——背压 rxjava2——线程切换 spring cloud 初识 《深入拆解java 虚拟机》笔记 《how tomcat works》笔记 hystrix 学习 rxjava1——概念 Redis 学习 TIDB 学习 分布式计算系统的那些套路 Storm 学习 AQS1——论文学习 Unsafe Spark Stream 学习 linux vfs轮廓 mysql 批量操作优化 《自己动手写docker》笔记 java8 实践 中本聪比特币白皮书 细读 区块链泛谈 比特币 大杂烩 总纲——如何学习分布式系统 hbase 泛谈 forkjoin 泛谈 看不见摸不着的cdn是啥 《jdk8 in action》笔记 程序猿视角看网络 bgp初识 calico学习 AQS2——粗略的代码分析 我们能用反射做什么 web 跨域问题 《clean code》笔记 硬件对软件设计的影响 《Elasticsearch权威指南》笔记 mockito简介及源码分析 2017软件开发小结—— 从做功能到做系统 《Apache Kafka源码分析》——clients dns隐藏的一个坑 《mysql技术内幕》笔记2 《mysql技术内幕》笔记1 log4j学习 为什么netty比较难懂? 回溯法 apollo client源码分析及看待面向对象设计 学习并发 docker 环境(主要运行java项目)常见问题 Scala的一些梗 OpenTSDB 入门 spring事务小结 事务一致性 javascript应用在哪里 《netty in action》读书笔记 netty对http2协议的解析 ssl证书是什么东西 http那些事 苹果APNs推送框架pushy apple 推送那些事儿 编写java框架的几大利器 java内存模型 java exception Linux IO学习 network channel network byte buffer 测试环境docker化实践 netty(七)netty在框架中的使用套路 Nginx简单使用 《Linux内核设计的艺术》小结 Go并发机制及语言层工具 Macvlan Linux网络源代码学习——数据包的发送与接收 《docker源码分析》小结 docker中涉及到的一些linux知识 hystrix学习 Linux网络源代码学习——整体介绍 zookeeper三重奏 数据库的一些知识 Spark 泛谈 链式处理的那些套路 netty(六)netty回顾 Thrift基本原理与实践(二) Thrift基本原理与实践(一) 回调 异步执行抽象——Executor与Future Docker0.1.0源码分析 java gc Jedis源码分析 Redis概述 机器学习泛谈 Linux网络命令操作 JTA与TCC 换个角度看待设计模式 Scala初识 向Hadoop学习NIO的使用 以新的角度看数据结构 并发控制相关的硬件与内核支持 systemd 简介 异构数据库表在线同步 quartz 源码分析 基于docker搭建测试环境(二) spring aop 实现原理简述 自己动手写spring(八) 支持AOP 自己动手写spring(七) 类结构设计调整 分析log日志 自己动手写spring(六) 支持FactoryBean 自己动手写spring(九) 总结 自己动手写spring(五) bean的生命周期管理 自己动手写spring(四) 整合xml与注解方式 自己动手写spring(三) 支持注解方式 自己动手写spring(二) 创建一个bean工厂 自己动手写spring(一) 使用digester varnish 简单使用 关于docker image的那点事儿 基于docker搭建测试环境 分布式配置系统 JVM内存与执行 git spring rmi和thrift maven/ant/gradle使用 再看tcp 缓存系统 java nio的多线程扩展 《Concurrency Models》笔记 回头看Spring IOC IntelliJ IDEA使用 Java泛型 vagrant 使用 Go常用的一些库 Python初学 Goroutine 调度模型 虚拟网络 《程序员的自我修养》小结 VPN(Virtual Private Network) Kubernetes存储 Kubernetes 其它特性 访问Kubernetes上的Service Kubernetes副本管理 Kubernetes pod 组件 使用etcd + confd + nginx做动态负载均衡 如何通过fleet unit files 来构建灵活的服务 CoreOS 安装 CoreOS 使用 Go学习 JVM类加载 硬币和扑克牌问题 LRU实现 virtualbox 使用 ThreadLocal小结 docker快速入门

标签


《原则》笔记

2018年10月14日

简介

感觉这本书像现代版的《论语》

进化是生命最大的成就和最大的回报

生活原则

认识事

  1. 尽管赚钱很好, 但拥有有意义的工作和人际关系比赚钱好得多。对我而言, 有意义的工作是指一项我能全身心投入的使命。有意义的人际关系是指我既要深深地关心对方,对方也深深地关心我。
  2. “我怎么知道我是对的”,回答这个问题的最好方式是找到其他思考者,他们与我肩负共同的使命,但对问题的看法与我不同。通过以一种深思熟虑的方式与他们交流,我就能理解他们的推理,并让他们对我的推理进行压力测试。我们都可以通过这种方式降低犯错的可能性。换言之,我的目标只是让自己正确——我并不关心正确的答案是不是来源于我,所以我学会了让自己保持极度开明的心态。
  3. 逐步归纳永恒和普适的原则,对其进行测试,将其系统化。
  4. 世界上最重要的事儿就是理解现实如何运行, 以及如何应对现实。面对这一过程的心态至关重要。我在“游戏过程”中会产生很多情绪,这些情绪可能帮助我也可能伤害我。如果我能调和我的情绪和逻辑, 只有在二者相符时才行动, 我就能做出更好地决策。
  5. 当你达到更高一层的境界,你就会发现,你原来只因为境界低才觉得之前包围你的那些纷至沓来的东西令人头疼,但其实并没有那么糟。生活中大多数东西都不过是“同类情况的重演”。你的层次越高,你就能越有效地应对现实,塑造符合你目标的结果。PS:就好比一个跑过10km的人,并不觉得每周跑个6km有多么难以接受。

善于概念思考的人自然而然地以提纲方式看待问题,而且知道如何切换。他们知道是否在进行“线上”讨论以及适当关注细节,他们也知道如何在两种模式之间切换。不善于概念思考的人常常会感到困惑,因为他们将事物看做一大堆信息,从中随机选取数据点。

没有原则,你就会被迫应对突然遭遇的现实,无法仔细思考你最看重什么以及如何决策才能获得你要的东西。这会阻止你实现人生最大价值。

选择一个目标通常意味着放弃你想要的一些东西,以得到另一些你更想要或更需要的东西,有的人还没起步,在这一步就失败了。他们害怕为了更好的东西而放弃好东西,试图同时追求太多目标,最终却几乎一个都不能实现。

成功有两条路:1. 自己拥有成功所需的要素;2. 从其他人那里得到成功所需的要素。第二条路需要你谦逊,谦逊和你自己有能力一样重要,甚至比你有能力更重要。

自然界的一项根本法则是,为了赢得力量,人必须努力突破极限,而这是痛苦的。

从自我中跳出来客观地俯视所处形势,权衡自己和其他人对形势的看法,抱着一种真诚的担忧,担心自己可能看不到最好的决策方式,从而以极度开放的心态看待问题。阻碍我们做好这一点的最大障碍是自我意识障碍和思维盲点障碍。诚恳的相信你也许并不知道最好的解决办法是什么,并认识到,与你知道的东西相比,能不能妥善处理“不知道”才是最重要的

认识人

较可信的观点可能出自以下两种人:

  1. 至少曾经三次成功解决过相关问题
  2. 对所得结论的因果关系分析很有道理

很多人都会和你产生分歧,但你不应考虑所有人的观点,跟任何人都头脑开放不一定有好处,你应该花时间和你能找到的最可信的人探讨观点。

如果你不了解人(包括你自己)的特性就对他们抱有期待,你肯定会遇到麻烦

  1. 描述人的形容词:概念性强、可靠、有创造性、坚定
  2. 人的行为:坚持观测落实
  3. 个性测试使用的术语:外向型、判断型

人脑由不同的部分组成,它们会对同一事物产生不同的反应,进而产生矛盾和斗争。其中情绪和理性思考之间的斗争是最大的斗争。情绪主要是由潜意识性的杏仁核控制的,而理性思考主要是由意识性的前额皮层控制的。如果你放任自己做出本能反应的话,你就很可能会反应过度。

我们可以用25~50种特征很好的描述一个人,每个特征的强度可以有高有低,如果你知道了一个人的所有特征并合理的综合在一起,就能基本绘出他的全貌。在任何生命历程中,了解人的特性都是必要的第一步。你做什么并不重要,只要你做的符合自己的个性和人生理想。

你最大的挑战是让深思熟虑的较高层次的自我管理情绪性的较低层次的自我。

做决策

影响合理决策的两个最大的障碍是你的自我意识和思维盲点。

  1. 自我意识,要有效行事,你就绝不能允许“想要自己正确”的需求压倒“找出真相”的需求。如果你对自己掌握的知识和擅长的事情过于自豪,你学到的东西就会变少,决策质量就会变低,也将难以充分发挥自己的潜力。你是在寻求最好的答案,而不是你自己能得出的最好答案。就算你拥有最好的答案,在未经其他人考问之前,你也不能如此确信。
  2. 思维盲点,人们无法理解自己看不到的东西。也不善于探求其他人的想法, 一心只想告诉对方自己认为正确的想法。

认识到决策应当分成两步:先分析所有相关信息,然后决定。不要担心自己的形象,只关心如何实现目标。大多数人的情况是,与“吸纳”(学习)相比,“产出”(表达想法和制造东西)的热情似乎要高得多。不吸纳的话,产出也不会好。

当被要求计算38*12时,大多数人是以缓慢费力的方式计算,而不是简单的把38当成40,12当成10,然后快速的确定答案在400左右。

用“基线以上”和“基线以下”来确定谈话位于哪一层。基线以上的谈话关注要点,基线以下的谈话关注分点。当一段分析混乱、令人迷惑时,通常是因为谈话者陷于基线以下的细节之中,而没有重新把细节与要点联系起来。基线以上的谈话应当以井然有序的方式走向结论,只有在有必要说明某个要点的细节时才可以走到基线以下。谨记

  1. 任何问题都存在很多层次
  2. 针对一个问题,明白你分析的是哪一个层次
  3. 有意识的在不同层次之间转换,而不是把问题视为一堆没有内在区别的、可以随意考察的事实。

除非你意识到你的潜意识,否则潜意识将主导你的人生,而你将其称之为命运(PS:很多人的人生并不成功,竟然还要“follow your heart”,最后就是能懒则懒,能不干就不干罢了)。更重要的是,当多个群体合作时,决策应当基于证据、符合逻辑,否则决策程序将不可避免地被最强大而不是最明智的成员主宰,这不仅不公平而且质量较低。

把每个决策都视为一个押注,押对有一个概率,有相应的奖励;押错有一个概率,有相应的惩罚。会赢的决策通常是具有正向预期价值的决策(预期价值=奖励 P赢 - 惩罚P输),预期价值最高的决策就是最好的决策。

计算机要复制人脑的很多功能, 如想象力、综合分析能力和创造力,要经过很长时间,甚至永无可能。这是因为人脑天生就存储着亿万年生物进化培育的各种能力(比如“突变”,一些名人都有轻微的自闭症)。在最重要的决策方面,人类依然比计算机做的好。你只需要看看最成功的人是什么样的人就明白了,软件开发工程师、数学家和博弈论研究者并不是最成功的, 最具有理性、想象力和毅力的人最成功。

计算机可以统计、计算你的时间耗费,但无法告诉你与亲人共处的时间价值几何,我们的很多思考来自于自己无法理解的潜意识,所以把人类思考彻底模型化是不可能的(因为人自己也无法说清楚自己的潜意识)。

数据开采是近年来机器学习发展最快的领域,是指功能强大的计算机消化大量数据,从中寻找规律,而不需要理解这些规律背后的逻辑。数据是过去产生的,在未来的事物发展范围和格局与过去相同的情况下, 它对决策很有帮助(比如规则严格的棋类游戏)。但在没有深刻理解的情况下, 你弄不清楚过去发生的情况是否真有价值,即使有价值,你也弄不清楚其价值是否已经消失,甚至走向负面。常见的情况是,一些决策规则变得非常流行, 以至于对价格产生很大影响,从而使反向操作成为更合理的做法。

工作原则

处理分歧

在很多情况下, 人们面对分歧时, 做事总是毫无章法,或者是因为他们不知道该怎么办,或者不去思考该怎么进行得更有效率,他们只是不假思索的表达观点、参与辩论。

在任何情况下,要能换位思考,通过对方的眼睛看问题,从而了解事实。任何一方都要记住,辩论的目的是找出事实的真相,而不是去为了证明谁是谁非,每个人都应当有意愿基于逻辑和证据而转变想法。

学生(可信度低的人)理解老师(可信度高的人)比老师理解学生更重要,尽管二者同样重要。经常出现,可信度较低的人(学生)坚持要求可信度较高的人(老师)去体谅自己的想法,甚至在尚未听到老师表达意见时,就企图证明为什么老师是错的。

用对人

任何观点都由两个东西构成:数据以及你对数据的处理或推理逻辑。

千万不要向无关的人员提出问题, 更不合适的做法是把问题没有特别指向的散发出去。对你自己也是如此:如果有人问你一个问题,你首先要想想你自己是否合适回答这个问题。安排面试官也是如此,如果你想招一个有远见的人,那就找个有远见的人来进行面试。如果你想寻求综合素质高的人,那就组成一个面试团队,这个团队要具备所有那些素质。

比做什么事儿更重要的是找对做事儿的人。给那些无法称职的人赋予责任是徒劳的,那只会使各方沮丧、愤怒。要考虑你寻找的人应该什么样的价值观、能力和技艺(按此排序)。

我相信,一个人能够取得成功,最重要的因素是客观的自我评价,包括对自己缺点的认识。在一家健康的机构中,应该是员工与其低层次的自我进行竞争, 而不是员工与员工相互竞争。你的目标是找到懂得这一点的人,给他们配备能使得他们在岗位上施展才华的工具和信息,而不是事无巨细的对他们进行微观管理。选用那些能客观认识自己的人, 要记住人一般不会随岁月有太大变化。多数人想当然的认为,一个人如果做错了事儿,他会吸取教训和做出改变,这未免太天真了。

在学校里, 决定成功的能力在于记忆力和调取记忆内容的速度,因此学习成绩是体现这些素质的绝佳标杆。学习成绩还是衡量一个人追求成功的决心,以及坚守志向的意愿和能力的良好标准。但是,当评估一位应聘人的常识、创造力和决事能力时,学习成绩的价值就很有限了,但这些品质才是最重要的。

聪明人总能问出最优思想的问题,而非对凡事都能给出答案。

如果一个人工作干得不怎么样,管理者常见的错误是无法区分是学习不够还是能力不足。帮人获得技能很容易,缺乏经验或训练造成的缺点可以弥补,通常只要给他们提供适当的培训就行,要想提升能力却很难,尤其是右脑能力,但这对长此以往有能力承担更大责任来说至关重要。想都别想改变一个人的价值观。

像操作一部机器那样进行管理以实现目标

出色的管理者既不是哲学家、演艺人士,也不是实干家或艺术家,他们是工程师。他们把机构当作机器看待, 兢兢业业进行维护和改进。他们设计出流程图,展示机器如何运作,如何对设计进行评估。他们开发出量化工具来评价每个独立的机器部件(最重要的是人)和整部机器的运转情况。他们不断对设计和人员进行完善以便更好发挥作用。当然,你在机构中职位越高,你的想象力和创造力就越重要,但你仍然必须具备必要的管理/协调技能。

要注意别把精力过多用于应付各种事务,而忽视你的机器,别被突发事件分散注意力。应对每一个问题的手段都要服务于两种目的:让你与目标更接近;能够对机器进行培训和测试。第二个目标比第一个目标更为重要

如果出现问题,要在两个层面进行讨论:机器层面(为什么);案例层面(怎么办)。不要仅仅就如何具体应对进行案例层面的讨论,因为这是微观管理(你是在做你收下员工该做的工作,他们会错误地觉得没什么大不了)。要进行机器层面的讨论,弄清楚事情应该怎样才是正确的,并探究为什么没有朝着正确的方向发展。

出色管理者的标志就是他不必亲自做任何事,管理者应视自己陷入细枝末节为不良信号。同时,根本不了解那些重要而缺乏管理的事务,只想着授权给别人做事挺危险的。若没有这种了解,你就会轻信别人讲给你的故事和各种借口。

要消除含糊的预期,让每个人意识到假如他没有达成目标或完成任务,那是他个人的失败。最重要的人是这样的人:他们对完成使命负总体责任,他们知道应该做什么,并有确保任务完成的纪律。总有人无法履行自己的责任,即便一个公司的高层有时也会表现的像一个正在学习踢球的孩子, 只会跟着球跑,努力提供援手,却忘记了自己的本职工作。

你应当非常熟悉你的员工, 定期和员工交流反馈,进行高质量的讨论。你的工作设计中必须包含做这些事情的时间。对关键员工进行详细了解,敦促其将困扰自身的问题说出来。这些问题可能是你所忽略的,或者是他们对其存在误解。

假想一下你要对没有嗅觉的人描述玫瑰花的香味会怎么样,不管你的描述有多准确,都不会产生效果。思维方面的差异也是如此,解决这些差异需要很大的耐心和开放心态,还需要与其他人互动验证,以便行成完整的图景。

一个基本的事实是,如果你不受你行为结果的影响, 那么你就不会为行为负全责。如果你只是一个员工, 老板付钱给你让你上班取悦他,那么你的思维就不可避免会被这种因果关系牵着走。如果你是一个管理者,要确保你设计的激励和惩罚措施能够让员工对自己的行为负全责,而非部分责任。

区分两种不同的失败情况,一种是没有遵守约定, 第二种是根本没立约定。如果你没有明确表达你的预期,你就不能让下属为没有达到预期而承担相应的责任。不要假定有些事情虽然不明说也能理解,常识在实际中并没有那么常见。

当心那些混淆目标和任务的人,因为如果他们分不清楚,你就不能信任他们并给他们委派职责。很多人在流程中只关心完成任务,而对目标是否达成评估不足。PS:对目标负责和对任务负责

未识别的出的问题导致最坏的结果(正因如此,发现问题既困难又重要);已发现但没有既定解决方法的问题稍好一些,但非常打击士气;已发现也有良好的既定解决方法也是好的;把问题解决掉是最好的结果。 在分析问题时,要非常具体,不要泛泛而谈。不要说“客户没有跟我们的分析师好好沟通”,要具体的说哪些客户做的不好, 哪方面做的不好。以具体示例开始,然后观察规律

在某些情况下, 员工会容忍不可接受的问题, 因为觉得要解决问题过于艰难。然而,如果不解决,会导致更多压力,导致工作量增多,持续出现更多不良后果。因此要记住管理的第一条原则:需要了解涉及你的机器机器运行的反馈, 或者把问题解决掉, 或者提交上一级解决,如果形势需要,要一遍又一遍的解决。要把问题提出来,交给问题解决能手去处理,没有比这更简单的其他方法。

问题诊断

为了做好诊断,要先问以下问题

  1. 结果是好是坏?
  2. 谁对结果负责?
  3. 如果结果不好, 是因为责任人能力不够还是机器设计有问题?

头脑中装着这些重大问题并时时反思,通过一系列简单的是/否问询得出每个步骤的综合印象。

要记住管理者通常处于以下5个原因而失败或未能达成目标

  1. 他们离问题太远
  2. 他们在辨别素质、低质量方面能力欠缺
  3. 他们已经感受不到问题的严重性, 因为他们对问题已经习惯了
  4. 他们对工作太自负(或自我意识过强),不愿意承认解决不了自己的问题
  5. 他们对承认失败的不利后果感到害怕