源码阅读的意义

241 阅读5分钟

源码实际上是码农技术水平的分水岭

那么阅读和分析源码的意义在哪儿?

(1)技术功底

当你阅读了一个技术的源码之后,你的技术功底会得到大幅度的提升。

比如说spring cloud,你阅读了spring cloud的源码之后,你对微服务技术架构的底层原理、架构设计、核心思想都了如指掌了,那么以后如果再出个啥啥啥微服务的相关的技术,你绝对很快就能上手,而且很快就可以自己去阅读那个细腻技术的源码。你的技术功底决定了你的学习能力,技术功底越深厚,以后不断学习新技术的能力、速度以及深度就越强,扎实的技术功底是保证你不断跟进新技术的基础。

而且技术功底一旦扎实了,比如你阅读了spring cloud的源码,后面你再读zookeeper、kafka、rocketmq其他技术的源码,因为你深厚的技术功底,都会轻松和顺利很多。

否则如果你从没读过什么源码,对每个技术的学习就是仅仅会用,使用,浮于表面,那么以后对其他的新技术,你又是从头再来一遍,你对新技术的学习速度和深度都会很差,学习的很慢,而且对任何技术都无法深入研究。

(2)hold住全场

阅读一个技术的源码,最直接的效益,就是你在公司里,直接会成为这个领域的专家级的人物。因为尤其我们在大公司里,因为访问量和数据量太大了,用的一些技术经常各种出问题,比如说spring cloud框架在每天几百亿次请求下,也许某个地方的一个bug立马暴露出来,导致系统异常。那么此时,就必须要有那种对这个技术精通源码的专家,才可以立马根据异常,从源码级别分析和定位问题,然后从源码角度出发给出问题的解决方案。

如果你不精通源码,一个技术处问题的时候,你就是盲人摸象,在哪儿瞎猜,百度,各种瞎试,有些工作过很多年经验丰富一些的人,可能就可以连蒙带猜把问题给解决了。但是有的时候这问题解决了,你自己心里都心虚,或者自己也有点不知所以然。

所以我们在大公司里,引入一个新技术的流程,就是首先得派一个技术专家级别的人,去研究那个技术,至少核心源码都读一下,一般一个技术专家级别的人,做到这一点,大概一两个月就够了。

一两个月之后,这个新技术就可以投入生产环境使用,如果出问题,那个人可以从源码级别来解决,我们根本不担心。

(3)架构设计能力

首先,要知道,最优秀的那些开源技术,都是全世界最最顶尖的各种技术大牛写的,他们写的框架和系统,都是他们多年的技术积累和功底,才能写出来的。所以如果你去读各种知名开源框架或者系统的源码,相当于就是在学习人家设计框架、设计系统的设计思想,同时可以学习人家设计出来的大型框架或者大型分布式系统的架构设计。

如果你读了大量的开源项目之后,你的系统设计能力会得到大幅度的增强,你会不由自主的今后在自己设计系统的时候,将人家的各种架构设计理念、核心技术实现、复杂实现机制都学习后,应用到你自己的系统中去。

在这个层面上,你自己负责设计的系统,会设计的越来越好,而且你看过大量的别人设计的优秀系统之后,也能够让你有能力去设计优秀的系统。

否则,很多人,如果没读过什么源码,那么最后系统设计能力实际上是很弱的,因为完全凭借自己的很多年自己闭门造车的一些经验和思想在设计系统,那么始终设计不出来什么太好的系统架构。

(4)职场竞争力

看完了一二三点,就会发现,读源码有很多的好处,最近的好处,就是立马可以让你秒变公司里、行业里这个领域的专家,出问题绝对能搞定;远一点儿的,就是以后学习新的技术,绝对会事半功倍;再远一点儿的,以后你设计系统,立马会不由自主吸收人家思想,自己设计的系统会越来越好。

这都是内功,慢慢积累出来的,但是你积累多了,量变产生质变,你的技术实力就跟普通人完全不一样了。你会发现你在公司里顶梁柱,有问题人家都得来找你,公司里公认你是技术大牛;而且你学习新技术特别快,出了新东西,一周熟悉,一个月读完源码,精通;同时你发现你的系统设计能力越来越得心应手,因为你看过人家大量的系统是怎么设计的,自己设计的时候也非常的有章法,绝对不是那些年轻的生瓜蛋子可以比的。

最后一点,就是在职场上,你综合上面的一二三点,是不是发现你在公司里的职场竞争力很强悍?绝对不是一般人可以比的。同时你出去面试,有没有发现你成为了行业里的top 10%?你的简历各种精通和源码,面试的时候跟面试官侃侃而谈,而且人家也会认可你的技术功底。对不对?

这就是你的综合职场竞争力