飞道的博客

漫谈核心能力(1) -- 不学则无知

255人阅读  评论(0)

这是《漫谈核心能力》系列的第 1 篇,预计会写 10 篇左右。通过这个系列,我希望和大家分享下一个人的核心能力是什么,以及怎么去提高自己的核心能力。扫描文末二维码,关注公众号,不再错过精彩。也欢迎转发朋友圈分享给更多人。


上一篇系列开篇里面,我尝试区分了知识、能力和经验这三者。虽然做了区分,但这三者是有着非常紧密的联系的,详情可以翻看上一篇文章。

比如,今天要讲的学习能力,就是获得知识的主要途径。

 1

为什么要学习?

尤其是当我们已经具备了一定的知识,掌握了不错的经验之后,为什么还要继续学习?

谁都知道,学习是很累的。如果靠着已有的知识和经验,就足以应付工作,那干嘛不去吃喝玩乐呢?说好的「人生得意须尽欢」呢?

原因很简单:

  • 要么你的知识和经验不足以让你得到想要的东西。人都是被欲望驱使的,尤其是你的欲望还处在比较初级的时候,这个驱动力会更强。比如你想升职当经理多赚点钱,但却完全不懂怎么做管理。这是欲望驱使的主动学习。

  • 要么你的知识和经验只能保证你现在能应付局面。比如前端技术层出不穷,现在的主流框架过几年可能就边缘化了。这是环境驱使的被动学习。

所以只要你不是三和大神,得过一日就且过,温饱之外别无他求,那就只能不停地学。

以我所在的大数据行业为例,Spark 才刚为撼动了 Hadoop 的统治兴奋不已,那边 Flink 就气势汹汹逼过来了。你不学?还没到 35 岁就危机了。

当然,我不想宣扬危机和传播焦虑,只是陈述事实,并且下面就要分享些我的应对经验。

 2

好了我知道要学,也愿意学,那要怎么学?

我到现在还能清晰地记得,高三的时候,班上有不少同学,学习非常非常刻苦。标准时间不说,别人午休的时候在做卷子,下了晚自习还在做卷子。但最后考试分数出来,虽然也还不错,但远不如他们的努力程度,总是比不过头部那些人。

那时候,除了替他们惋惜,我就在想,是他们不够聪明吗?是,他们确实不如班上最聪明的三五个人,但大部分分数比他们高的人并没有比他们聪明多少,更不用说没他们努力了。

问题就出在学习方法上。 下面我会分享几个我觉得比较好的学习方法。

 3

带着疑问和目的去学 。

我在学习一个新技术的时候,通常都会问几个问题:

  • 我为什么要花时间学这个东西?

  • 这个东西解决了什么问题?

  • 这个东西相对于它的竞品都有什么优势?

然后在学的过程中,也会随时问自己,得到这些问题的答案了吗?

程序员都信仰代码比天大,学习新技术就免不了要看别人的代码。但现在的开源项目,尤其是比较有名的项目,复杂度和代码量都是很夸张的。

我的习惯是,带着目的挑着看。

比如在最开始学习 Spark 的时候,我就很好奇,Spark 既然说自己是基于内存的,比 Hadoop 快几十上百倍,那它究竟是怎么使用内存的呢?

于是我就专门去看了 Spark 内存管理模块的代码。很快知道了 Spark 把内存分哪些区,内存装不下了怎么处理,又有哪些参数可以调等等。

看完就完了。要搞懂 Spark 是怎么管理内存的,就只看内存相关的代码。后面再有别的需要,就再针对性看对应的代码。

像这样,带着疑问和目的,就能保证不会奔着一个类似「我就是要学会这个东西」这样缥缈的目标去学。

随着自己的疑问的解答,目的的达成,学习效果就是非常具体和有效的。同时也是非常高效的,因为时间和精力都用在直接解决自己的问题上,而这些问题都是因人而异的。

 4

系统地学。

所谓系统地学,就是把这个东西主要的内容都学到。

这个看起来和上一节带着疑问和目的去学是矛盾的。其实不然。

对一个刚接触的新技术,更适合带着问题和目的去学,不能盲目投入时间。

而对一个已经有了一些了解,也实际会经常用到的东西,就可以考虑投入更多的时间系统地学。

原因有几点:

  • 经常用的东西,有了比较全面的了解,才能知道什么时候用这个虽然可以,但用另一个会更好。

  • 知识之间都是有共性的,当掌握的面足够广后,才有可能重叠(overlap),这样就能逐步建立起知识图谱。而知识图谱是一个人解决开放式问题和攻克难题时的基础保障。

早些年,我在体会到 Python 的好处后,就系统的花时间好好学了下,从官方文档上列的主要模块,到 PEP,到主流网络框架等等。这些都对我后来在大数据领域再去学其他 python 栈的技术,起到了非常大的帮助作用。

后面有次在工作中接手了一个 golang 的程序,那是我第一次写 go。在大规模重构的过程中,不可避免的去了解了 go 的设计思想。而在学习 goroutine 的时候,当时在学习 python 的时候接触到的协程的知识,就很好的帮助了我去理解。

 5

对比着学。

其实前面两节已经提到了,但因为这个操作层面的方法实在太有效,还是想单独说一下。

相似的东西,对比着学,能帮助我们更好的理解,从而更好的判断。

以大数据领域的两个最流行的计算框架 Spark 和 Flink 为例,虽然都支持批处理和流处理。但设计上的选择,导致了各自非常鲜明的特点。

Spark 是基于批去做的流,所以吞吐量会很好,但由于不是来一条处理一条,所以延迟会相对高些。

而 Flink 是原生的流(native stream),所以延迟会低,但是吞吐量相对也低点。

两相对比,我们就对 Spark 和 Flink 的流处理有了更加深入的理解。当面对一个实际的流处理问题时,就能做出更合适的选择。

 6

输出倒逼输入。

有没有觉得很多东西看了就忘?

有没有觉得有些东西,本来以为懂了,仔细一想发现没懂?

类似问题,当然可以多花时间、反复记忆来提升效果。但还有更有效的方式,那就是用输出来倒逼输入。

所谓输入,是指学习吸收知识;所谓输出,是指给别人讲解自己掌握的知识。

为什么说这个方法会更直接有效呢?

  • 一方面,需要对别人讲的东西,就算为了面子,你也会多花点时间去研究得更清楚点。

  • 另一方面,对别人讲解的过程,就是一个检查和思考的过程,有些问题,讲着讲着就发现原来自己还没理解透;有些问题和听的人边讲边讨论就有结论了。

有些人肯定要说了,可是我没啥好对别人讲的呀。这就是倒逼的含义所在,厚积才能薄发,不输入哪有输出。

而为了让这个输出的效果更加稳定和持久,我一直坚持两个形式:

  • 写博客/公众号, 这也是你能看到这篇文章的原因。并且是有计划地写,写成系列文章。

  • 在部门内组织技术分享。包括我在内的所有人,每周轮流做技术分享。虽然是强制的,但几个月才轮到一次,也没什么压力。


TL,DR

  • 学习是获得知识的主要途径

  • 但凡有追求的人,都必须持续学习

    • 要么你的知识和经验不足以让你得到想要的东西

    • 要么你的知识和经验只能保证现在你现在能应付局面

  • 带着疑问和目的去学,能让学习更有针对性

  • 系统地学,能让学习更加全面,帮助形成知识图谱

  • 对比着学,能让理解更加深刻,选择更加合适

  • 输出倒逼输入地学,能借助外界反馈督促学习

学习能力,是我认为一个人核心能力里面最重要的一个。所以放在了这个系列的第一篇。

学习,本质上是不断引入增量,这当然是进步的重要手段。增量的另一面就是存量,下一篇,我们一起看下怎么优化存量。

关联阅读

漫谈核心能力(0) -- 知识,能力和经验

技术管理到底管什么

谈谈技术深度和广度

原创不易

关注/分享/赞赏

给我坚持的动力

点在看,给大家好看


转载:https://blog.csdn.net/ShadyXu/article/details/103590699
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场