【Be Humble】搜索引擎能解决问题,但我劝你读源码

一、前言

1.把异常信息复制粘贴到搜索引擎里,回车,按照搜索结果中说的方法步骤解决问题;

2.把没见过的API复制粘贴到搜索引擎里,回车,找一篇写的清楚的帖子,按照里面的使用方法写逻辑。

以上两个场景,在日常的工作中占有极高的出场率,仅从技术工作角度来讲,以上内容是大部分程序员解决问题、完成工作的主要方式之二,这无可厚非,在信息获取成本越来越低的大环境下,这是在最短的时间内完成任务的最有效的方式。

没有人愿意浪费时间,即便是完美主义者,也会选择先把任务完成,再回头去仔细研究,这也是最合理的工作方式。然而绝大部分人并不是难能可贵的技术狂热者,对技术的追求度不够、自律性差、遇到困难浅尝辄止,成为了阻碍自身进化速度的拦路虎。工作中拥有一个引路人,拥有一个负责任的引路人,拥有一个良好的技术工作氛围,是需要运气的,可能你的运气并不好,那么以上三点就是你甩开别人、取得巨大进步所必需的性格和品质,因为你没有好的环境,就必须要自己创造出好的环境。

这里需要提到一个你自己都可能不曾发觉的前提,你所拥有的资源,远比你意识到的多,正因如此,你也并没有好好利用他们。

如何以自己为出发点,通过使用能够轻松获取到的资源,来提升自己呢?

最基本的方法就是。

读  源  码。

二、为什么要读源码

1. 使用工具不读源码,就像玩游戏不读技能说明

玩的都是同一个游戏,同一个职业,同一套装备,为什么你只能看着大神的背影艳羡?因为你对你玩的角色没有充分的认知,无法将能力最大化,你无法做到顺风局中砍瓜切菜,掌控全场,也无法做到逆风局中冷静稳定,绝境翻盘。

对于程序员来说,你使用的技术和工具,就是你的技能,而这些技术的官方文档、源码,就是她们的技能说明,并且就放在官网、Github等触手可及的地方。

2. 源码才能让你跟别人有最有效的交流

“XXX详解”、“XXX原理解析”、“XXX快速上手”……新手看无数篇类似的帖子,也只能感叹大神们都“各怀心腹事,尽在不言中”,你似懂非懂。

废话!那是人家对源码的精炼,再结合自己的理解,升华出来的通俗易懂的内容,这些具有教学意义的技术帖,就像一个个将底层高度封装后的框架、中间件,你能看懂,但其实你还是不懂,你觉得你会了,但其实你还是不会,这种落差犹如海浪般不断冲刷着你的自信,而你的焦虑就像礁石上产生的青苔……

当且仅当你仔细研读了源码之后,你才有可能产生共鸣。

3. 好的歌曲值得单曲循环,好的代码值得反复推敲

源码中体现的设计思想,使用的设计模式,对细节的处理方法,值得反复学习,每读一遍,都会有新的心得体会,都会对你的思维有着积极的影响。

也许你能轻松默写出各种算法,也许你能不假思索背出各种概念的定义,但是你无法把心法转换成招式,运用在实际中,阅读源码吧,那里充斥着教科书般的技能运用方式。

4. 深度掌握技术,才是自信的源泉

技术革新的速度令人咋舌,新技术对底层的封装越来越严密,框架使用的学习成本越来越低,后来者似乎更容易追上你的脚步了。业务固然极其重要,但技术的深度决定了你打遭遇战的能力,以及职业生涯抗风险的能力。

能将业务场景转换为技术集成是一个技术人的核心能力之一,也是最具价值的能力,多精通一项技术,就意味着多一个选择,选择多的人总是比选择少的人更加处变不惊,自信外溢的。

三、如何读源码

那么,如何读源码呢?

1. 选择项目很重要

首先,要选择一个应用范围广、存活时间长、有较多版本更迭的开源项目

应用范围广,说明她的功能和性能都受到了业界的肯定,是一款优秀的产品,也许你也正在使用,能让你更有亲切感,提高阅读兴趣。

存活时间长,意味着网络上会有大量的分享资料,使用心得,踩坑经验,能够帮助你更好的了解和理解。

有较多的版本更迭,代表她在不断的成熟完善,喻示着大量的技术人才对她升级改造的帮助,无论从代码结构、架构设计,还是功能逻辑,都已经获得了较好的优化。

开源,使你能够轻松的获取代码、文档。

2. 高屋建瓴,由面到点

选择好之后,你要对选择的项目所针对的功能进行了解,她为何而生,完成了什么使命。

阅读源码向来不是一件容易的事,需要你耐心、细心的一步一步跟代码,如果你能将代码下载到本地,使用IDE跑起来最好,这样能更有效率的跟踪代码。选择一款你最顺手的IDE吧。

你需要先将整个流程走一遍,不要过早关注细节,否则容易陷入钻牛角尖的死循环,心中有一个大致的全局认识,然后再去针对各个细节逐一击破。这个过程中,你可以借助代码中的注释,通过绘制业务流程图的方式来把握整体,同时记录下关键类、关键方法等内容。

对整体有了大概的了解之后,你就可以开始细化每一步的逻辑,这个阶段你需要关注的是各个接口和抽象类的具体实现,配置文件的使用等。这个阶段是最耗时,也是最难的,越优质的项目越复杂,有可能你跟着跟着代码,就把自己绕晕了,好脑子不如烂笔头,勤记录,多画图,把逻辑结构体现在肉眼可见的地方,更容易理解,同样的,代码中的注释非常有帮助。

3. 点面结合,模块化

结合最初总结出来的整体流程,试着将其拆分成多个模块,按照各个模块去整合细节,要确认每个模块都完成了哪些任务,是如何完成这些任务的,模块之间是如何承上启下的。

如果前期准备工作做的好,到了这一步你已经开始渐渐对整个项目有了清晰的认识,也有了更深的理解,将会有质的飞跃。

4. 多读几遍,多读几遍,多读几遍……

简单粗暴的解释:一遍不够。

5. 检验成果

有的人容易忽略这一步,其实这是升华的关键,个人认为,没有什么比自己完整的写一遍更好的成果收割方式了。

建议大家不要只动眼,一定要重写,因为只有在写的时候,才能真真切切的落地,否则即便你看了很多遍代码,自认为掌握的不错了,但是也可能只是空中阁楼而已。

四、结尾

源码的魅力,只有读过的人才能体会,而你的魅力,只有读过源码后才展现。希望大家戒骄戒躁,不要急功近利,大部分技术的迁移性是很强的,只是你从来没有迈出过探索的第一步。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值