技术人员的快速学习能力是非常重要的,以前觉得这个可能更多的体现在刚毕业的学生身上,但慢慢我发现对于各个阶段的技术人,这个能力都很重要,甚至级别越高这个能力越重要。想想一个公司的CTO,事情应该是很多的(而且很多可能还都是非技术方向的),但作为公司的技术风向标,对于技术的掌握,特别是宽度一定要是非常OK的,否则如果方向错了,下面的人再怎么努力,也是事倍功半的。这一点在我的上一份工作中真的是感受颇深。这次要讨论的如何快速学习是一个非常大的话题,相信每个人都有自己的看法;而且在我看来也没有一个适用于所有人的方法,毕竟人是个复杂的动物,个体差异太大。本文谈的都是我自己的一些心得体会,仅供参考,欢迎讨论指正。

先想个问题:现在不管是工作上的需求还是出于你个人的爱好,你想要的快速学习一下Hadoop,请问你会怎么去做?

来个小插曲,记得刚毕业那会做嵌入式的时候,使用的SoC(System-on-Chip,片上系统)是Xilinx(中文翻译为“赛灵思”)刚出的一款产品Zynq-7000(一个集FPGA和ARM于一体的SoC),因为是新技术,国内还没有太多的资料,只能去看官方的英文资料和芯片手册。上大学时,没有双语教学,平时也没有看过英文版的技术书籍,所以刚开始非常不习惯,也尝试过去百度(对,没错,那会还是用百度的,当时就是这么Low),但根本找不到什么有价值的东西,没办法只能又硬啃英文资料,好在自己比较喜欢英语,阅读能力也还可以,所以大概过了几个月,基本上也就习惯了。到后来,还结合官网资料写了一系列关于Zynq-7000的文章发布到自己的博客上面。后来被电子创新网赛灵思社区的编辑发现后转发到了他们的网站上,最后还获得了Xilinx举办的“30年——我与赛灵思FPGA的故事”主题博客的一等奖,奖品是一本书和一套Xilinx开发板。这件事对于当时刚毕业的我来说感触非常深,我一个刚毕业没多久的学生,外加一个FPGA的新手竟然能获得一等奖,这是为什么?先买个关子,文章尾回答。好,前戏似乎有些长了,进入正题。

官网永远是第一且首要的选择

没错,我认为学习一门新技术,官网永远是第一且首要的选择。为什么官网如此重要?主要有几个原因:

  1. 官网永远是最权威的
  2. 官网的知识一定是时效性最高的
  3. 官网的知识价值密度极高

当然还有很多其它优点,但我觉得上面三个是最重要的,这几个我是深有感触。现在是知识爆炸的时代,网络上只有你想不到的东西,没有你找不到的东西。但带来的问题就是假东西多了,东西的时效性低了,价值密度也低了。有些人解决问题的时候看见一个解决方案,拿过来一试,发现怎么不管用,后来一看这都是多少年前的东西了。有时一个难题,在网上搜了好久都没找到解决方案,这是因为你的时间全部花费在那些没价值的东西上面了。所以,我认为如果你能有一套方法快速找到有权威性、时效性高、价值密度高的知识,那就已经胜过很大一部分人了(主要体现在时间和精力这两样非常宝贵且有限的资源上),如果你再把找到的东西学习吸收了,那你又把一大批人甩在后面了。

比如刚开始的问题,学习Hadoop,那你第一个应该去的就是Hadoop的官网:https://hadoop.apache.org/。 这里我截个图:

hadoop.png

在我看来,这个官网首页上面每一个字都有意义,都值得好好看一下。比如上面关于Hadoop的介绍:

The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.

如果你只想花10分钟来学习Hadoop的话,那我会推荐你就花10分钟好好读上面的这段话。我没有见过哪里有比这里这两段话更能简洁明了,且又精确全面的介绍和描述Hadoop了。然后再看看其它地方,最上面的菜单栏可以让你知道你的需求应该去看哪里。下面的“Latest news”让你知道现在Hadoop到哪个版本了,那个“Modules”是对上面那两段话的一个补充,但也非常言简意赅,每个单词都是精华。边上的“Related projects”能让你扩展眼界。如果有已经了解Hadoop的朋友,应该知道这个首页上面的这些知识对于你了解和学习Hadoop是有多重要。现在反过来,如果你要去其它地方找到这些知识的话,我感觉一方面对于一个初学者很难找全,另一方面,你会花很多时间,而且找到的也许还是过时的。这里还只是个开始,对于学习来说,“Documentation”一般是我们最常去的地方,这里面一般也是非常精致的,你可以快速准确的找到你想要的东西。限于篇幅关系,这里就不讨论了。我是做大数据的,所以像Hadoop、Spark、Hive、HBase、Flink、Kafka、Redis、ELK等官网是我经常去的地方,我可以很负责任的说,如果你要学这些,官网绝对胜过任何其它地方。当然,不止于大数据,其它的也一样,比如Kubernetes、Docker、Scikit-Learn、TensorFlow、Golang、Python等很多技术的官网也都是非常棒的,绝对是初学的首选。而且大多数都会很贴心的为新手准备一个“Getting started”或者“Tutorial”之类的快速入门文档。关于优先看官网这一点,我一直在影响周围的人。特别是带团队后,更是如此,我也的确发现这对于一个技术人的快速提高真的非常有用。

最后,想说一句题外话:如果有朋友和我一样喜欢写博客的话,写技术博客的时候一定要说明你软件的版本,操作系统的版本等,而且最好是写在最前面,这是对读者负责。

学会搜索

搜索这个本来之前想单独写一篇文章的,因为我觉得这个很重要,但如果真的去单独写,好像也没太多写的,因为我也只是入门级的水平(甚至还不算入门吧)。我为什么觉得学会搜索如此重要呢?因为技术种类太多,你永远也学不完,但搜索是不分技术的。比如前端问题、后端问题都可以通过搜索去寻找解决方案。也就是你学会了搜索,就学会了一门通用的解决问题的技术,非常的划算。那怎么算是会搜索呢?我一个半吊子实在是不好意思讨论这个话题,但还是说一下,我认为大多数技术人平时遇到的多数纯技术类问题都可以通过Google+Stack Overflow解决,然后剩下的通过Github、官方文档、官方论坛、邮件列表、Google group等方式(当然这些其实就包含在Google搜索的结果里面)又可以解决掉一部分,然后再剩下的一小部分可能才是需要深度学习或者请教有经验的人或者付费等方式来解决的问题。然后另外一个非常重要的就是搜索的时候尽量使用英文搜,比如你要搜关于Hadoop的入门教程,Google的关键字应该是“hadoop tutorial”而不是“hadoop 入门教程”,因为很可能前者搜出来的是官网的tutorial或者是Medium上面的内容,而后者搜出来的是CSDN上面的内容,二者的质量差异,你自己体会(我们往往在买东西的时候精挑细选,不愿意买二手三手、过时的残次货,但在获取知识的时候却没有那么的高要求高标准,为什么呢?大概是因为前者损失的是可见的金钱,大家都看的见。后者浪费的是时间,大家看不见,所以也意识不到。但金钱和时间到底哪个宝贵呢?)。

所以简单概括我这里关于学会搜索的观点:

  1. 用Google搜,不要用其它的搜索引擎,特别是国内的。
  2. 尽量用英文搜。

题外话:如果你不知道怎么能上Google,那你一定不是一个合格的技术人员,至少不是一个优秀的或者有追求的技术人员(最不济一年花一百多一点买个国外的服务器搭个梯子总是比较方便和简单的,如果你和我一样只用搜索,不看视频的话几个人用一个都是完全够用的)

英语能力

不论是上面的官网还是Google搜索都避不开英语这个问题,这个东西怎么说呢,我的观点就是:好的英语能力是成为优秀技术人员的必要条件。特别是如果你是研究新技术的,那英语能力不行就是致命的。因为原生态、高价值的东西你看不懂,吸收不了,只能退而求其次去看二手的知识,时效性、权威性、准确性打了几折就看你运气了。当然就事论事,也不是说所有的东西一定要看英文,因为中文也有他的优点,对于英文能力一般或稍差的人来说,读一本英文原版书可能需要好几个月,而且因为语言问题,吸收的也不好,这时果断第一次要读中文版(但务必注意甄别一下是不是口碑比较好的,可信度高的),后面复读的时候可以考虑读英文版。但不能因此就觉得不用注意英语能力。总之,我的观点就是语言只是工具,我们不是为了学习语言而学习语言,而是因为我们在其它方面要用到这个工具。我的英文能力读我觉得还行,但其它就比较差了,听力简直就是现在幼儿园小朋友的水平(都怪陕西省当年高考不考听力,老师没怎么交。嗯,不错,成功甩锅...)。不过我个人还是比较喜欢学习英语的,准备以后等我娃大一点了,报个在线班,和他一起学习口语和听力。

快速学习不是深度学习

最后要说的一个问题就是:快速学习不是深度学习。我见过一些人刚开始准备学习一个东西,就开始看什么“xxx源码解析”(嗯,我曾经就是这样子的...)。结果既浪费了时间,又没达到比较好的学习效果。所以,关于快速学习,我的观点是有两个优先级最高的目标:1. 学会基本的安装、使用。2. 了解基本的概念、术语,整体的架构。要达成这两个目标还是相对比较容易的,基本上每一个新技术都可以这样去学,既能了解新东西,也不会花太多时间。这样才能让你有时间有精力去多学习一些新技术,拓宽一下知识宽度。深入源码那种是深度学习,而且因为时间、精力等原因,注定不可能每个技术都这样去学。所以,做技术也要务实,千万不要眼高手低,觉得基本的安装使用等都不高端,只有看源码才高端。你不妨去了解那些特赚钱的产品(特别是已经有些年代的产品),都是一小部分的精髓,加上一大部分低端的东西组成的。如果有朋友有维护公司老的产品,应该深有体会,但这并不妨碍这些产品很赚钱。这其实就又涉及到另外一个很大的话题了:很多技术人往往只关注技术了,没有意识到真正让技术产生价值的不是技术本身的高端,而是业务让技术体现和产生了价值。所以技术人除了关注技术外,也应该去了解了解你这个技术所要解决的业务和行业问题。只有好处,没有坏处。特别是如果你想成为合格的架构师等角色,那这个就是必须的要求和技能了。

最后,在结束之前,回到刚开始那个博客获奖的问题,其实我后来想了想,原因也很简单,就是因为当时那个芯片是刚出的,资料基本都在官网,但因为是英文,很多人都不愿意去看。然而我学习了,并写成了中文博客,因为知识源头是官网,所有权威性和准确性有一些保证,而且是中文,所以就吸引了很多读者。所以这个事情给我的启发一方面是认识到官网和英语能力对于学习新知识的重要性;另一方面就是不是所有的(小)成功都一定要是惊天地泣鬼神,都要像小说里面写的那么宏大,那么曲折,那么轰轰烈烈,其实真相往往很简单:就是比别人多努力一点,多坚持一点,日积月累,自然水到渠成。

好吧,这篇文章就到这吧,本来想让自己的文章在说明问题的前提下都尽量保持简短,以节约彼此的时间,但每次一不小心就写成懒婆娘的裹脚布了,大家将就着看吧。虽然文笔不优美,格式不美观,干货稀缺,观点也可能有失偏颇,但都是我自己内心的一些感悟和想法。