又是一年的校招季,最近有几个学弟学妹过来询问我关于校招的许多事情,诸如校招到现在没有offer怎么办、校招该如何准备等等一些这样的问题。我向来不喜欢好为人师,主要是我觉得我的阅历还远远不够,给别人提供不了什么有价值的建议,但是诸如此类的问题倒是确实引起了我的思考,那就是我们技术人员到底该如何提高自己呢?

带着这样的思考,我阅读了不少大牛的博客、帖子,试图从他们身上看到一个技术大牛的发展之路,有耗子叔出品的练级攻略和一系列的学习方法论,也有云风一路发展的记录,这些都让我有了不少的思考,于是你看到了这篇文章。需要特别说明的是,我本身没有特别丰富的人生经验和阅历,此文也仅代表我的一些阅读思考,并且这篇文章讨论的更多是技术人员在技术层面上的提升,如果你希望在这篇文章寻找捷径或者想在非技术层面上和我交流,那么这篇文章可能不适合你,就没有必要读了。

我将从以下四个方面来表达我的观点。

关于学习态度

我经常看到有人说:今天开始我一定要好好学习,这个月我要学完xxxx,一般这样的口号喊出来以后,没过两天就好像泄气了,再也没有再听他说关于学习的事情,是的,曾经定下的宏伟目标,99%的人都没有坚持下来;我还看到过这样的情况,前两天才学完的知识,到今天又忘了,于是乎干脆不学了。诸如此类的例子还有很多,那么如何会产生这样的现象呢?

我认为第一个问题产生的原因主要在于目标不明确,也就是说你在学习前没有一个清晰的目标,这种情况下可能一时兴起学习几天,等那股劲儿过去便没有下文了。我认为长期坚持学习一定不能只靠心中的那股劲儿,需要有一个具体而清晰的目标,例如说我要在一个月内读完一本书,或者我要在一个星期内学会某项技术并且在我的项目中应用它,这样以来,你坚持学习的动力便不再只是靠着心中的那股劲儿了,你有了具体而清晰的目标,并且这个目标对你来说是能够在付出时间的情况下可以实现的,于是乎你就有了长期坚持学习的动力来源,并且以此不断的获取正反馈,没错,当你学会某项技能时,心中的成就感和满足感是会给你带来积极的反馈。

关于学习态度,这里我还想阐明主动学习和被动学习的观念。上面第二个例子,我们经常遇到说学完一个知识过几天就会忘掉的情况,其实我认为这主要是我们大多数时间的学习是被动。1946年美国学者埃德加·戴尔提出了学习金字塔的理论,这个理论将人的学习分为主动学习和被动学习两个层次:

  • 被动学习:如听讲、阅读、试听、演示,学习内容的平均留存率为5%、10%、20%和30%。
  • 主动学习:如通过讨论、实践、教授给他人,会将原来被动学习的内容留存率从5%提升到50%、75%和90%。

学习金字塔

所以通过这个理论我们知道,我们应该更多的做一些主动学习,并且主动跟他人交流和分享,这样才能提高知识的留存率,最终转化为自己的知识。

关于学习态度,我要表达的就是这些了,需要再强调的就是学习是一个应当长期坚持的事情,我指的不仅仅是我们专业领域的学习,而是泛指整个人生的学习,我们应该端正学习的态度和转换对学习的认知,制定一个清晰的目标,并且尽可能做到主动学习。没错,你不需要特别的努力,也远远没到拼天赋的地步,你只需要做到这些并且长期坚持下去,你就能超过98%以上的大多数人,因为我们周围绝大多数的人都坚持不下去。

去哪儿学

接着我们再来讨论去哪儿学习的问题。

毫无疑问,我们身处一个快餐文化的时代,大多数人心态都比较浮躁,总想着急于求成,所以你总是能看到各种“速成”培训班或者是“7天精通xxxx”这样的书籍,这种质量参差不齐甚至错误百出的学习资料,正是抓住了我们的这种心理,开始在各种市场上泛滥,而那些真正的质量好、需要花大量的时间去慢慢消化的书籍等反倒无人问津,这是一个很怪的现象。

与此同时,现如今大多数人的信息渠道都被微信公众号、知乎、微博、抖音、B站占据着,这些信息渠道中有营养的知识少之又少。我们所处的时代,网络很发达,随便动动手指,我们就能获取到巨大的信息量,所以我们不再面临过去那样无东西可学的状态,反而是有太多的东西可以学,那么就需要我们对这些信息进行过滤,筛选出来有价值的信息学习,这就是涉及到我们去哪儿学、去哪里筛选信息的问题。

我认为,就计算机领域而言,其诞生于西方世界,并且计算机世界的基本规则基本都是西方制定的,所以我们应该深入到信息的源头去,去看官方文档、去看英文文档,这样我们获取的就是的未经别人咀嚼的第一手资料,应当减少摄入经过别人消化理解后的二手资料,因为别人的理解未必比你好,你可能有更好的见解,在英文阅读有障碍的前提下,应当尽可能阅读英文文档或者英文书籍的中译版,并且不断地提高英语阅读能力。

你看,还是回到上个章节的结尾,在这种情况下,你不需要特别努力,你只需要静下来看好书,阅读原版英文资料,你就能超过绝大多数人。

学什么

最后我想谈论的是技术人员学哪些知识的问题。

在谈论这个问题之前,我想表达的是我们应该抓住技术的本质。纵观技术发展的几次大变革,无外乎是以下几个阶段:

  1. 1990年-2000年,这个阶段是MB时代,是搜狐、网易、新浪、雅虎这些门户网站的时代,这个时代是一些互联网提供商整合一些咨询发布到网上。
  2. 2000年-2010年,这个阶段是GB时代,上网开始变得简单了,人们可以在互联网上上传照片,听音乐,被称为多媒体时代。
  3. 2010年-2020年,这个阶段是TB时代,也就是我们常说的移动互联网的时代,在这个时代,智能手机成了流量的载体和信息的入口,被称为数字化时代。
  4. 2022年open AI的chatGPT横空出世,我把它叫做人工智能的时代……

但是你看,不管我们所处时代信息化如何变革发展,技术本质的东西变化了没有?其实是没有变的,操作系统原理还是那样,只不过硬件变好了,网络协议还是之前制定的,只不过有一些修改和优化,其本质还是没变的。所以抓住技术本质,我们要学的就是这些原理性的东西,才能以不变应万变,更重要的是,有了这些原理性的知识做支撑,不管出现再多种类的技术栈,我们都能快速上手。

另外一方面,我来说说编程语言的问题,我始终认为,一个高手不能只仅限于某个特定的语言,语言只是解决问题的工具,要抱有开放的心态,去掉对语言的偏见。那么,你可能就有另外一个问题了,现如今有这么多语言,我需要着重于哪些呢?我认为我们要学的无外乎就是及其成熟的工业级语言和具有巨大前景的热门语言,它们应当具备这样的特点:

  1. 社区活跃,能解决许多场景的问题
  2. 在具体的领域有杀手级的应用

我举个例子,C/C++一直都被认为是最接近操作系统的高级语言,并且历史悠久,经过了几个时代的检验;再比如说Java,应该是当今世界最成熟的工业级语言,在web开发等诸多领域,不仅有Spring全家桶这样的超级杀手级别框架,而且社区活跃,你在开发中几乎所有的场景在这里都能找到对应的解决方案;再来说Golang,社区里有docker和k8s这样杀手级的应用,golang事实上已经成为云原生领域的标准语言。

所以,至少C你应当是一定要学的,对于做偏后端领域的来说,Java是你一定要学的,Golang也应该学习,最近Rust的兴起,你也应该关注。对于前端领域这里就不做推荐了,筛选标准同上。

好了,再学完上述原理性的知识和编程语言以后,你就已经是一个不错的技术人员了,下面就要根据自己的兴趣爱好具体在某一个或者某几个领域深耕了,比如说常见web后端开发、前端开发、分布式系统开发、数据库内核研发、架构师、软件测试、云原生等领域,我想你有了上面的基础和方法论,继续坚持下去,一定会成为某个领域的技术大牛,这一点,也是我正在努力的方向,希望我们可以一起提高进步。

小结

最后习惯性的来个总结,这篇文章主要结合我自身的思考讨论了技术人员如何提高的问题,我分为了三个方面,首先我们应当端庄学习态度,改变认知,这是为什么学的问题;接着我们需要找到优质的信息渠道,尽可能阅读第一手的资料,这是去哪里学的问题;最后我们需要抓住技术的本质,从复杂繁多的技术中抽离出那些不变的东西出来,这是学哪些内容的问题。

当然本篇文章属于输出本人观点的文章,你可以不同意我的观点,或者对于我的观点有什么更好的看法,欢迎与我交流。

(全文完)