阅读源码(III)
往期系列: 《由阅读源码想到》 《由阅读源码想到 | 下篇》
Medium上有一篇文章Why You Don’t Deserve That Dream Developer Job,由一位漂亮的程序媛所写。文章不免贩卖了些焦虑,但也谈到些无法回避的问题:无论对于职业人士想在原有路线上继续发展、还是想要转行另寻它路,其中所蕴含的辛苦和挣扎,都不会有半点减少。
如果你认为自己的当前处境是在一个大坑里,那估计你就得再拼一些,再拼命一点才能够逃出四面埋伏的危地。对这时的你来说,“拼命”已经不是一种崇高的自我感动,而是再现实不过的对恐惧剧烈的回应。并且,你还不能简单地把拼搏交给情绪,你还需要用清晰系统的方式,把一个个横在眼前的障碍清扫干净。
如果需要夯实语言基础,就好好啃文档。
需要提高code技艺,就好好读源码。
需要增加实战经验,就好好积累代码。
不断练习,像学生时期做练习册那样去按部就班地练习。
阅读源码,容易着急。还没做好事情的准备工作,就急着深入细节,读得晕头转向。磨刀不误砍柴工,往往,我们会不由自主地跳过“磨刀”的过程,直接抡起斧头就开干。
那么,阅读源码的磨刀,应该是怎么样的呢?
首先,要伸展性地去解剖每一个概念。例如,对ss这个梯子项目来讲,一上来就陷入到各种网络协议之中,是极其不合适的。你应该先跳出来,从它的最终输出作用开始考察:跨过围墙。然后,根据这一概念不断地细究其功能和联系:例如什么叫做跨越?跨越的方式是什么?为了实现这个跨越动作,还需要什么功能做支撑?进而需要什么模块的实现?再进一步这个模块是由哪些类来实现的?
就这样从最直观的基本点出发,逐渐添加层层深入的细节,一步步去把握这个项目。而不是反过来,一开始就迷失到细节中去。
所以,阅读源码之前,其实需要花费大量功夫去查阅和理解那些宏观的视角,在宏观视角下,理解基建设施模块的必要性和原始考虑是什么,再层层深入。好的研究者,如同好的数学证明的阅读者,会花大力气在前期的宏观概念打磨、动机理清、出发点的明确与思路的连接。之后再进入到细节,有的放矢地施展精湛的技术。
这个漫长的对来龙去脉的探索,还可以再深入一些。你可以把这些零碎的东西,精心整理为slide或者文稿,在写作的整理中,进一步巩固自己在这方面系统而深入的认知。
甚至,就算你在这一过程中,还没有获得足够的正确理解,你也该好好归纳整理自己的所得、所失和当前处境。力求写出一份详尽的状态描述报告。你完全可以期望,在撰写这个总结性的报告中,获得思路的理清与灵感的迸发。
否则,你只会被细节带入到无底洞,既获得不了真知灼见,又会被无尽的挫败感包围,丧失信心。
近期回顾
《2018年03月写字总结》
《再探羊、猪、狗》
《稀缺的时间与守恒的烦恼》
如果你喜欢我的文章或分享,请长按下面的二维码关注我的微信公众号,谢谢!

更多信息交流和观点分享,可加入知识星球:

VIP赞赏专区

阅读源码(III)的更多相关文章
- 阅读源码(IV)
往期系列: <由阅读源码想到> <由阅读源码想到 | 下篇> <阅读源码(III)> Eric S.Raymond的写于2014年的<How to learn ...
- 【转】使用 vim + ctags + cscope + taglist 阅读源码
原文网址:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找 ...
- Spring源码解析——如何阅读源码(转)
最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...
- Spring源码解析——如何阅读源码
最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...
- How Tomcat works — 一、怎样阅读源码
在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法.一直想阅读一些开源项目,可是没有合适的机会开始.最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的s ...
- 使用 vim + ctags + cscope + taglist 阅读源码
转自:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找到合 ...
- 转载~Linux 平台下阅读源码的工具
Linux 平台下阅读源码的工具 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码在Windows下有sourceinsight这 ...
- Linux 平台下阅读源码的工具链
原文:http://blog.jobbole.com/101322/ 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码. 在Win ...
- Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(集群版)
上篇文章Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(单机版)讲了在 idea 里以单机的方式启动zookeeper,这篇介绍一下以集群的方式启动. 集群方式启动,才会真正 ...
随机推荐
- JavaEE EL & JSTL 学习笔记
1. EL表达式(特别重要)
- Java-NIO(五):通道(Channel)的数据传输与内存映射文件
通道(Channel)的数据传输(采用非直接缓冲区) @Test public void testChannel() throws IOException { FileInputStream file ...
- JavaScript实现图片轮播图
<!DOCTYPE html><html> <head> <script > var time; function init(){ //设置定时操作 t ...
- Spring Cloud学习笔记-007
声明式服务调用:Spring Cloud Feign Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两 ...
- JAVA如何实现深拷贝
protected 域(或方法)微妙的规则 protected 域(或方法)对本包内的所有类可见(当然包括子类),那么,子类可以获得访超类受保护域(或方法)的权利,但是,若子类和超类不在同一个包下,就 ...
- 拥抱开源,Office 365开发迎来新时代
前言 作为全球最大的开放源代码托管平台,Github在上周迎来了它的十岁生日.自从2008年正式上线以来,Github上面汇聚了数以千万计的开发人员和各种项目,它几乎成为了开源的代名词和风向标,各大软 ...
- [LeetCode] Kth Smallest Number in Multiplication Table 乘法表中的第K小的数字
Nearly every one have used the Multiplication Table. But could you find out the k-th smallest number ...
- [LeetCode] Squirrel Simulation 松鼠模拟
There's a tree, a squirrel, and several nuts. Positions are represented by the cells in a 2D grid. Y ...
- [LeetCode] Maximum Vacation Days 最大化休假日
LeetCode wants to give one of its best employees the option to travel among N cities to collect algo ...
- IDEA2017.3.4破解方式
下载jetbrainsCrack-2.7-release-str.jar包 下载地址: https://files.cnblogs.com/files/xifenglou/JetBrains.zip ...