14

漫谈核心能力(一):不学则无知

 4 years ago
source link: https://mp.weixin.qq.com/s/DrvNipgEgjG5wVEQjrMK8w
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

这是《漫谈核心能力》系列的第 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

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

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

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

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

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

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

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

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

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

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

原创不易

关注/分享/赞赏

给我坚持的动力

yEfMje3.jpg!web

点在看,给大家好看


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK