孙子兵法-研习记

前言 近日工作不忙,偶然看到孙子兵法一书,印象里面应是各种打打杀杀,由无他事就读了一些,发现并不是那么简单。 博主在上下班路上,前后半个月的时间学习了一些。为了加深自己的记忆,理解。就梳理了这篇札记 孙子兵法 是什么 孙子兵法是一本信息熵极高的阐述战争方法论的书,原文仅 6000 余字。经过之后两千多年时间沉淀:注解引申,国内外各大名家的参与,现在已经形成了一个战争理论生态,战争方法论。这里说的战争可以是冷兵器时代的战争,也可以是强调技术装备,信息化的现在战争,也可以是商战,工作职场,学业,投资。现在已经翻译了多国语言,据说在国外也比较流行,认可度极高。 适读人群: 最好是有一定工作生活经验的人,如果是单纯的学生不建议阅读 架构图 注此图引自知乎 首先-不去战争 孙子兵法首要强调的是不战而胜,因为战争成本太高代价太大。特等医生的价值不是体现在治病救人,而是在生病前防疫工作:如何不得病,如何尽早发现病并及时治理。当然这里不是贬低治病救人的技术,只是我们经常忽略准备防疫的重要性,到了生病时候才发现代价真的太大。所以孙子兵法虽然是一本兵书,却比较强调怎么不去战争,规避战争,强调的是:日积月累,有备无患 作战原则 实际中战斗是不可避免的。如何做好呢?战斗就像做事做人。孙子兵法全文里强调三大原则:知己知彼, 先胜后站, 至人而不至于人。很多具体章节里都是为了满足遵循这几个原则的,所以理解透了这些原则思想,一切满足此的都可以称为好兵法。 就像软件架构里的设计模式 solid 原则,很多具体的模式都是为了满足实现solid原则。这些原则是贯穿整体的 工作中需要做参考别的技术,大多是学习了别人的思想,别人的原则,然后根据自己的情况实现一套可行的方案。 基本面 战前准备的方法论:五事七计(具体看上面架构图)。运筹帷幄,庙堂之上充分分析各个因素,最后制定出最有利的战斗计划。 如同我们在做编码设计,或则项目时,基本都是先尽可能做好详设计,而这些又是比较耗费精力的。最后写代码具体工作却是很快的。倘若设计阶段没做好,后面很可能比较被动,代码自量也难以保证,返工之类的。 操作面 有了五十七计,胜负因素方向已定。而战场却又千变万化,影响因素也不计其数。就要因地制宜的去发挥。孙子兵法里提出有行军,九地九变等,都是讲一些具体情况下的做法。 这里我理解我们工作尤其是互联网这种变化较多工作,必须要做好抬头看路的工作。把握政策情况,市场情况,个人成长情况然后做好自己的规划。 个人收获 收获还是挺多:明确了做事的 原则,系统分析法所谓方法论,底层逻辑。以及该做哪些事情,不该做哪些事情的取舍 不要忽略基本面 善战者,无智名,无勇功。 人们往往比较喜欢波澜壮阔的故事,而忽略基本面的作用。比如我们喜欢韩信背水一战的故事,但是从理论来上看是违背 五事七计 的分析。诸葛亮出师北伐的例子也是在基本面上就输了,汉武大帝的传奇一生,却耗费了文景之治的积累,所谓一将功成万骨枯。 古今中外精彩故事也不少,但那是2000多年的历史积累,更多的是默默无闻却又贡献很多的平淡故事 我们每个人也一样,绝大多数都是平凡平淡的。但是能把基础面做好,有一份好的学业,经营一份自己的工作事业,有个好的身体健康素质,已经能达到生活的意义 准备的重要性 这里说的准备更多是: 五事七计。 做管理: 考虑编制是如何的,组织架构怎样设计 带团队: 考虑梯队模型时分析成员画像,如五事里的将的能力模型定义:智信仁严勇 做项目: 考虑项目以来的技术,团队,项目本身的ROI等 知己知彼 难在知己 自己能决定失败,对手才能决定能否胜利。 在势均力敌的时候,对手不犯错一般自己很难胜利。所以说胜利是看对手有没有犯错。对应的,自己的一些准备日常是决定自己能不能失败的。而真的知道自己的实力么,掌握好自己的优缺,了解自己所想要的不?是很关键的也容易被环境带偏 做决策,客观了么? 心里学上 人们选择一个事情,不是这个事情真实客观,而是人们期望他是对的,想要他是对的。 最后生活并没有银弹,养兵千日用兵一时。基本面做的好了,操作面做的再差胜算也大;基本面做的普通,也不要放弃,操作面上还有很多空间。 尽信书不如无书,理论很多,观点很多,说法很多,怎么去选择,怎么去用呢?

<span title='2022-06-17 10:08:36 +0800 +0800'>六月 17, 2022</span>&nbsp;·&nbsp;1 分钟&nbsp;·&nbsp;zhongling

工作合作沟通方式

公司合作沟通 前段时间入职了新公司,说下合作上的感受 这家公司比较传统,人员沟通也特别传统。 传统公司典型的问题 不开放,不分享 爱理不理

<span title='2022-05-15 10:21:59 +0800 +0800'>五月 15, 2022</span>&nbsp;·&nbsp;1 分钟&nbsp;·&nbsp;zhongling

扩展性设计

前言 之前在公司内部做过「扩展性设计」的分享。后面重新整理形成博客形式记录自己的学习。 由于作者长期从事Web前端领域的工作的原因,本文也是基于这些技术领域发出的一些关于应用软件方向上的扩展性总结 什么是扩展性设计 软件架构设计里比较关注的几个要素:扩展性,稳定性,可维护性。很多领域里都会有这方面的考虑。比如:业务架构,产品架构,软件技术架构。那么具体怎么定义呢 Extensibility is a software engineering and systems design principle where the implementation takes future growth into consideration 扩展性是在考虑未来增长发展时所做的一些工程实践和系统设计原则 引用自维基百科的定义 基础理论 这里讨论的理论基础是比较原始的,类似于数学或物理中的定律定理。实践中是要结合具体场景通过组合这里理论,以及基于这些理论做些推导来形成最佳的设计 找到变化的东西 solid原则 分层明确 常用形式 中间件 中间件是一种实践比较成熟的形式了。基本的思想是根据一些约定拦截输入,做一些逻辑,或者修改挂载上下文,然后继续向下流。具体的形式上有 洋葱模型中间件: koa2, redux 管道化模型的中间件:pipe 中间件实践中要考虑的因素是: 中间件收集方式 中间件之间的关系,顺序等 插件 这种形式也比较常见。类似于微内核 + plugin/addon 模型。市面上也存在了很多基于此架构的工具或框架。此模式实践中要考虑的因素是: 隔离性:暴露主应用的那些能力,防止插件的运行影响主应用逻辑 性能:进程模型设计,是否独立进程运行 生命周期:插件加载时机,插件执行时机 插件之间管理:插件之间是否能互相调用,互相影响 插件机制思想很简单,重要的是各种实现细节,实践中有不同形式与细节。这里日后单独写一篇文章来分析 配置 读取配置文件,读取参数都是这种形式。是一种简单但实用的形式。不过多讨论 案例分析 webpack中的扩展性设计 webpack 是一个比较流行的打包工具。其功能的强大,生态的繁荣离不他的插件体系和loader体系。本身作为一个流程控制中心,很多功能都是分散在各个插件里来做的 loader体系 针对特定的文件类型来做处理的,有点类似上一节提到的管道化中间件模型。针对特定类型文件可以提供多个,按照顺序管道化的处理转换。 插件体系 webpack 内部主要的两个概念是 complier主要负责构建整体流程等,compliton主要负责构建里的具体编译工作。这两者都是通过 Tapable 库来完成内部生命周期暴露,Tapable 大体上是一种 sub-pub 模式的实现, 其核心概念 hook 可以与 event系统里的某个 event 等价。在同一个hook下可以绑定很多handler的注册,有点像AOP编程思想。...

<span title='2022-05-11 10:38:36 +0800 +0800'>五月 11, 2022</span>&nbsp;·&nbsp;1 分钟&nbsp;·&nbsp;zhongling

深度思考

深度思考的重要性就不多强调了,该如何做好呢? 如何做好深度思考? 多维度 我这里说的多维度可以理解为多视角。 做一个技术分享,在听众的视角下如何的,主办方的视角如何,分享者的视角又如何,领导视角,同事视角如何…… 多层次 一个事物是处于整体系统里的那一层,与其他层的依赖关系。都是可以考虑的 比如日常技术问题处理,问题本身是如何的,处理及反馈流程是如何的,技术依赖的其他系统大概如何的…… 现象与本质 有哲学基础的都会知道,事物的发展变化都会有表现与本质的区别。这一点有点像我们使用技术框架时,能掌握好框架的使用层以及底层原理,才能以正确的姿势使用。 同样道理,思考问题的表现以及底层逻辑如何,才能做好深度思考。实际中可能会更加复杂:人的关系,系统的关系,技术本身的关系 刻意练习 所谓学而不思则茫,有了理论基础,加上一些刻意练习,才能真正掌握。具体落地点: 多总结 多复盘 多积累方法论 多接触不同系统的案例

<span title='2022-04-18 10:08:36 +0800 +0800'>四月 18, 2022</span>&nbsp;·&nbsp;1 分钟&nbsp;·&nbsp;zhongling

蛙泳学思

最近开始学习蛙泳,其实很早之前下水练习过几次,但是没有系统的整理。最近开始了系统性的练习:看了些视频讲解,纠正了些错误,总算有些小进步。 过程中发现了自己之前很多动作,模式,思考是不对的。但是纠正这些不对的点花费了很久时间。学习效率比较低。而纠正错误的技巧以及思路是一个通用的学习理论,对于工作,生活应该都适用。所以做了此快速学习新技能技巧的总结,或者称之为方法论也好。 学习速度 掌握好正确的路径,学习资料,其余的就是练习了。理论与实践相辅相承。在实践中遇到问题,可能是理论没有吃透,可以多补充。比如不知道动作该怎么连贯(划手蹬腿结合)的时候,可以补充下理论。理论充足不等于实践也厉害,因为都有个人,环境的因素。 所以 理论和实践结合 互相补充 来提速 基础比较关键 最重要的基础点是: 划手 蹬腿 协调 切记欲速不达的道理: 我之前基础练习的不够好,蹬腿,划手导致在完整动作时漏洞百出,出了问题没有头绪,然后再回过头一点一点练习基础才能做好完整动作,这个过程就比较浪费时间了。 在看专业运动员每一个细节都特别好,大概就是基础比较扎实了吧。所以想要快速达到目标,不要忽视了基础。稳扎稳打可能是速度最快的方式 好的老师 个人在实践中总是会有很多点会偏离最优,有些思想也会偏离。有的时候会卡在某个环节出不来,这个时候如果自己有良好的资料可以参考,最好了。 比如我在呼气练习的时候,水下一直是哈气的动作,水上就不能很好的吸气了,知道看到有个解说提醒说水下吐气,才知道,这个环节练习错了。这个哈气矫正为吐气的过程是看了讲解。但是假如有个好教师帮忙点一二,可以快速解围解困惑的。 类似的工作中也比较强调有好的导师,好的领导的重要性,所谓读万卷书不如行万里路,不过阅人无数,不如良师指点。 所以如何发现好老师?正规的学习指南,学习资料是大家当前最合适的,有真人最好了。 最后发现总结的都是些大道理,这些大道理大家应该都懂,但是怎么与实际结合并帮助实践是比较关键的。 总结 本文通过个人蛙泳学习过程中遇到的问题做了些反思,总结了一些快速学习技能的通用技巧方法论。并强调这些大道理如何与实际结合的技巧才是关键。希望对做其他事情有帮助,也不枉这次辛苦练习了。最后学习的过程是没有银弹的,前进吧少年

<span title='2022-04-15 14:34:21 +0800 +0800'>四月 15, 2022</span>&nbsp;·&nbsp;1 分钟&nbsp;·&nbsp;zhongling