前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术硬实力,我是如何高效的看源码的?

技术硬实力,我是如何高效的看源码的?

作者头像
35岁程序员那些事
发布2022-09-23 18:15:41
3480
发布2022-09-23 18:15:41
举报

学习是一件需要长期投入的事情,尤其是在当下大环境恶劣的背景下,我们程序员必须要多多的投资自己,去加强自己的技术硬实力和软实力。

作为一个技术人,一定学会在有限的时间之内去高效的阅读源码,这个是非常重要的技能。如果你告诉我,你自己压根就不看源码,那么请忽略本篇文章的内容。

一般我会建议大家按照如下步骤来看:

(1)培养看源码的兴趣;

(2)从功能及配置入手;

(3)尝试自己去画架构图;

(4)带着问题去阅读源码。

培养看源码的兴趣

兴趣是所有问题的根源,也就是说只要你有兴趣,剩下的事情就可以交给时间去验证。一般很多人可能会觉得,不就是一个技术吗?我干嘛需要有兴趣呢?又不是物品(比如名牌手表和名牌包包等等),但是这里我想告诉大家的是兴趣真的很重要。

我这里给大家列举一个非常简单的例子,“一般晚上熬夜做事情是不是都会感觉到很累,比如工作或者做家务”,必会感动更累,但是这个时候叫你去“吃宵夜或者是几个小伙伴一起开黑打游戏”,这个时候你应该不会很快感觉到累,因为这些事情都是娱乐性质的事情,并且也是你感兴趣的事情,还有一点你会发现就算是通宵,你也会觉得时间过的很快。

我再给大家举一个比较贴心的例子,假如你跟你喜欢的女孩子在一起,一起去坐船游览杭州西湖的景色,明明已经在船上坐了快三个小时了,但是你会觉得时间过的真快,一瞬间就结束了,然后你也不会感觉到累。

好了,我们在回过头来看看“阅读源码”这是事情,假如你没有兴趣,就算是拿着刀架在脖子上,你也不会主动的去看源码,因为它根本就不会刺激到你的大脑细胞。

假如你对看源码非常有兴趣,你一般会这样来做事情:

(1)碰到技术问题了,第一时间去查阅源码,并记录和总结经验;

(2)利用工作之余的碎片时间去查阅相关核心源码,大致的看一下,看能不能看懂;

(3)利用搜索工具,在网上搜索一下,有没有大V分享一下看源码的经验;

(4)经常去逛技术社区,并解答一些源码性质的技术问题;

(5)查阅开源项目的问题集,并尝试着自己去解决一下。

如果大家在工作中,有上述那些习惯,那么我要恭喜你,你有成为技术专家的潜质。

从功能及配置入手

很多人都在说,项目那么大我怎么才能选择我需要下手的源码呢?其实被这些问题困惑的小伙伴,也不需要害怕看源码,因为笔者也是从小白过来的,那个时候也是碰到过这样的问题,但是当作为过来人,回过头来看这些问题的时候,有时候会觉得非常好笑,这么简单的事情居然还搞的这么复杂。

这里结合我的经验,我就直接告诉大家,要从“功能及对应的配置项入手”,这样你们是不是觉得非常简单呢?但是就是这么简单的方法论,只要你能够坚持下来,我想任何技术你都是可以学会的,你也不用再惧怕说没有现成的技术大咖去指导你。

我列举一个简单的案例,假如你想入门Skywaking,它是一款非常优秀的分布式链路追踪框架,当你拿到这个项目之后呢,你怎么入手呢。又或者你从我的书“Spring Cloud Alibaba微服务架构实战派(上下册)”书籍中得知可以利用Skywalking完成链路告警,那么你需要去梳理链路告警模块,那么你该如何去做呢?

我建议大家按照如下步骤去做,如图所示,是我为大家总结的七步走策略。

如果你按照以上策略去查阅Skywaking告警模块的源码,你会很快的能够搞懂它的原理。

尝试自己去画架构图

为什么要这样做呢,很多人都在说开源框架,人家官方已经画好了,我直接捡现成的不就好了,但是你要去想想,人家开发者画出来的东西,比不一定能够看的懂,人家是站在它们已经熟悉了的视角去画图的,很定会忽略很多细节,但是往往这些细节就会决定你对这些新的框架的认知程度。

那么我们作为一个源码爱好者,我们更应该去认真的揣摩原作者当初的设计思路,并将这些设计思想转换为自己的思维,从而你能够反推出更优秀的解决方案,从而能够反向推动该框架版本的迭代。当你达到这个程度之后,你就会发现,自己去画架构图有多么的重要了。

再比如我们平常在做项目的过程中,很多人觉得架构图根本不重要,其实我是想告诉大家的是,图才是你和别人沟通的一种最快的方式,也是大家都喜闻乐见的形式。你可以尝试的去想一下,当你直接口述的和别人交流之后,自己以为很多事情都沟通的到位了,但是事实证明总会有很多遗漏的地方,这个时候就需要再次去确认,真的很烦。

如果你采用图+额外的文字描述,你会发现这些问题好像都能解决,因为大家更加愿意和你沟通,这些也会精力非常集中的去跟踪这些问题。

比如下面是Skywalking官网给的架构图,你能从中获取到多少对你入门有有用的信息呢?

当你尝试去做转换,比如像我一样你将你理解的画出来呢?这样你就能获得更多有用的信息,是不是呢?

你们还是自己去领悟吧,所谓授人以鱼,不如授人以渔,我这边给大家一个提供的小小的方法论,还是需要大家自己去实践,不然你就会当作是一篇口水文,看了之后就忘记了,或者是嫌弃它太简单,而眼高手低了。

再偷偷告诉大家,其实大厂的技术其实很多都是很简单的实现,也就是说用最 简单的技术去解决最复杂的问题。

带着问题去阅读源码

这里我想说的是不光是阅读源码,其它的也是一样的,只要我们有问题了,我们才会更加有效的去驱动自己去解决问题,从而能够更好的去做自己感兴趣的事情。当然很多自我驱动能力非常强的人,它根本就不需要问题也能够自觉的去学习,这个就是人与人之间的差距。

比如你觉得你自己应该去了解Dubbo源码中负载均衡相关的原理,那么你就应该去查阅源码,而不是一直拖延,从而到最后就把这个事情忘记了。

总结

一定做一名合格的35岁程序员,这样才能够将自己立于不败之地。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构随笔录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 培养看源码的兴趣
  • 从功能及配置入手
  • 尝试自己去画架构图
  • 带着问题去阅读源码
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档