ata id:140720
有哪些重要的思考力
- 原理性思维-找出知识背后的原理
掌握了知识背后的原理,带来的好处是:
- 软件系统的复杂度越来越高,我们所面对的场景越来越多,掌握原理实际上可以大幅度降低我们对于知识的记忆量,知识量是爆炸的,但是原理绝对是可控的!
- 原理性的东西比直接的知识有更强的复用度!记住最核心的原理,当你面对新的场景时,你会惊喜地发现,你的理解速度大大加快!这个点大家应该有体会,比如可能之前我们都学习过dubbo等底层的RPC通信框架的基本原理,但是你如果仅了解了他的基本用法,你会发现对你现在做业务系统没有什么帮助! 但是,当你了解的是dubbo如何寻址?如何做容灾?如何做扩展,你会发现现在我们去做业务系统,其实设计的原理是一样的,并没有本质区别!这样你之前研究中间件的设计思想就可以快速用到业务系统上面。
- 另外探求原理的过程,本身很有乐趣!这是一个非常有价值的思维训练过程,不断对系统设计思想、业务设计思想、做事情的工作方式,追寻背后的原理,并找到他们之间的共性,在我看来非常有乐趣,一段时间训练以后,你会发现你看透本质的能力越来越强!
2.结构化思维-构建自己的知识树(这点xmind很好用)
总结一类问题的解决思路/方案:
项目中测试MM提了一个bug,我总结出来的比较标准的问题定位步骤:
确认刚才是否有过代码变更和部署,因为有比较高的概率是刚才变更的代码又搞坏了……
追踪链路日志看链路是否有异常;
通过RPC的控制台调用看接口输入输出是否符合预期;
追踪关键方法的入参和出参,看是否有问题;
定位到方法细节后,推理逻辑是否有问题;
如果无法通过推理,那就最后一招,回放异常流量debug,这样肯定能够找到原因;
3.扩展性思维-举一反三,拓展思维
(1)举一反三:解决同类型的N个问题
当发现某个系统的jvm参数配置存在一个错误配置,不是仅仅修复这个系统的jvm配置,而是把负责的几个系统都检查一下是否需要统一修改;
(2)寻求更多的可能性:拓展解决问题的不同手段
拓展思维常见的手段是:是否能够换更多的理解方式,或者更多的解法,举一些案例:
产生故障的时候,快速止血除了回滚以外,还有哪些方案?如果故障处理经验丰富的人一定知道,除了回滚,其实还有系统降级,运营活动降级等多种方案;
4.抓重点思维-提升效率,方便记忆和传递
如果每件事情都按照知识树方式做,效率可能不会特别高,有更快的办法么?在对外沟通表达的时候,要表达核心思想,否则别人会很难理解你的表达内容;比如大家再晋升答辩、项目汇报的时候一定会有体会。
解决这两类困惑,核心思路是要抓住重点和脉络。
但是抓住重点和知识结构化之间并不矛盾,而且我认为是有先后次序的,一定要先建立知识结构化,然后才能从里面筛选出重点,否则知识的体系是不完整的。
5.反思性思维-思考哪里可以做得更好
有个问题我查了2个小时,师兄只花了10分钟,这是为什么呢?是他的业务比我熟悉?思路比我清晰?还是知道某个我不知道的工具?一定要找到关键的差异点,然后弥补掉这个差距;
反思是一种习惯和潜意识,可以再不经意之间经常进行,其实不需要很形式化地花很多时间,有时候做完一个事情,习惯性思考一下就可以;
如何实践
- 意识觉醒:意识觉醒是提升思考力最重要的一个点,我认为。只要形成了这种意识,就已经成功了一半。
- 保持信心:现在知道思考力的重要性了,很多同学可能认为自己是一个不够聪明的人。为什么我努力了,还是不行?
**给大家一个信心:有位大师说过:在相同的文明程度和种族背景下,每一个正常人的潜意识与意识相加之和,在精神能量意义上基本上是相等的。
我几乎接触到的很努力但是成长速度不快的同学都是因为没有没有掌握正确的方法;
只要掌握了正确的方法并坚持训练,思考力绝对可以提升。**
- 空杯心态
4.思考的时间从哪里来?
常见的借口是“我连需求都做不完,哪来的时间思考”?
训练思考力其实并不需要太完整的时间,我的口诀是:“1.利用碎片时间;2.抓住工作的过程”。
利用碎片时间,比如上下班路上的时间,吃饭的时候,可以把刚才或者今天的事情想一想,想通了,然后定期汇总一下就可以;
抓住工作的过程,注意,每次每次出技术方案,优化代码,排查问题,处理故障,准备晋升……都是一次训练的机会。在做事情的过程中就可以思考并快速实践;
7.一定要相互分享
8.技术Leader在训练大家思考力中的职责