往期系列: 《由阅读源码想到》 《由阅读源码想到 | 下篇

Medium上有一篇文章Why You Don’t Deserve That Dream Developer Job,由一位漂亮的程序媛所写。文章不免贩卖了些焦虑,但也谈到些无法回避的问题:无论对于职业人士想在原有路线上继续发展、还是想要转行另寻它路,其中所蕴含的辛苦和挣扎,都不会有半点减少。

如果你认为自己的当前处境是在一个大坑里,那估计你就得再拼一些,再拼命一点才能够逃出四面埋伏的危地。对这时的你来说,“拼命”已经不是一种崇高的自我感动,而是再现实不过的对恐惧剧烈的回应。并且,你还不能简单地把拼搏交给情绪,你还需要用清晰系统的方式,把一个个横在眼前的障碍清扫干净。

  • 如果需要夯实语言基础,就好好啃文档。

  • 需要提高code技艺,就好好读源码。

  • 需要增加实战经验,就好好积累代码。

不断练习,像学生时期做练习册那样去按部就班地练习。

阅读源码,容易着急。还没做好事情的准备工作,就急着深入细节,读得晕头转向。磨刀不误砍柴工,往往,我们会不由自主地跳过“磨刀”的过程,直接抡起斧头就开干。

那么,阅读源码的磨刀,应该是怎么样的呢?

首先,要伸展性地去解剖每一个概念。例如,对ss这个梯子项目来讲,一上来就陷入到各种网络协议之中,是极其不合适的。你应该先跳出来,从它的最终输出作用开始考察:跨过围墙。然后,根据这一概念不断地细究其功能和联系:例如什么叫做跨越?跨越的方式是什么?为了实现这个跨越动作,还需要什么功能做支撑?进而需要什么模块的实现?再进一步这个模块是由哪些类来实现的?

就这样从最直观的基本点出发,逐渐添加层层深入的细节,一步步去把握这个项目。而不是反过来,一开始就迷失到细节中去。

所以,阅读源码之前,其实需要花费大量功夫去查阅和理解那些宏观的视角,在宏观视角下,理解基建设施模块的必要性和原始考虑是什么,再层层深入。好的研究者,如同好的数学证明的阅读者,会花大力气在前期的宏观概念打磨、动机理清、出发点的明确与思路的连接。之后再进入到细节,有的放矢地施展精湛的技术。

这个漫长的对来龙去脉的探索,还可以再深入一些。你可以把这些零碎的东西,精心整理为slide或者文稿,在写作的整理中,进一步巩固自己在这方面系统而深入的认知。

甚至,就算你在这一过程中,还没有获得足够的正确理解,你也该好好归纳整理自己的所得、所失和当前处境。力求写出一份详尽的状态描述报告。你完全可以期望,在撰写这个总结性的报告中,获得思路的理清与灵感的迸发。

否则,你只会被细节带入到无底洞,既获得不了真知灼见,又会被无尽的挫败感包围,丧失信心。

近期回顾

2018年03月写字总结
再探羊、猪、狗
稀缺的时间与守恒的烦恼

如果你喜欢我的文章或分享,请长按下面的二维码关注我的微信公众号,谢谢!

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

VIP赞赏专区

阅读源码(III)的更多相关文章

  1. 阅读源码(IV)

    往期系列: <由阅读源码想到> <由阅读源码想到 | 下篇> <阅读源码(III)> Eric S.Raymond的写于2014年的<How to learn ...

  2. 【转】使用 vim + ctags + cscope + taglist 阅读源码

    原文网址:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找 ...

  3. Spring源码解析——如何阅读源码(转)

    最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...

  4. Spring源码解析——如何阅读源码

    最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...

  5. How Tomcat works — 一、怎样阅读源码

    在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法.一直想阅读一些开源项目,可是没有合适的机会开始.最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的s ...

  6. 使用 vim + ctags + cscope + taglist 阅读源码

    转自:http://my.oschina.net/u/554995/blog/59927 最近,准备跟学长一起往 linux kernel 的门里瞧瞧里面的世界,虽然我们知道门就在那,但我们还得找到合 ...

  7. 转载~Linux 平台下阅读源码的工具

    Linux 平台下阅读源码的工具 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码在Windows下有sourceinsight这 ...

  8. Linux 平台下阅读源码的工具链

    原文:http://blog.jobbole.com/101322/ 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码. 在Win ...

  9. Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(集群版)

    上篇文章Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(单机版)讲了在 idea 里以单机的方式启动zookeeper,这篇介绍一下以集群的方式启动. 集群方式启动,才会真正 ...

随机推荐

  1. JavaEE EL & JSTL 学习笔记

    1. EL表达式(特别重要)

  2. Java-NIO(五):通道(Channel)的数据传输与内存映射文件

    通道(Channel)的数据传输(采用非直接缓冲区) @Test public void testChannel() throws IOException { FileInputStream file ...

  3. JavaScript实现图片轮播图

    <!DOCTYPE html><html> <head> <script > var time; function init(){ //设置定时操作 t ...

  4. Spring Cloud学习笔记-007

    声明式服务调用:Spring Cloud Feign Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两 ...

  5. JAVA如何实现深拷贝

    protected 域(或方法)微妙的规则 protected 域(或方法)对本包内的所有类可见(当然包括子类),那么,子类可以获得访超类受保护域(或方法)的权利,但是,若子类和超类不在同一个包下,就 ...

  6. 拥抱开源,Office 365开发迎来新时代

    前言 作为全球最大的开放源代码托管平台,Github在上周迎来了它的十岁生日.自从2008年正式上线以来,Github上面汇聚了数以千万计的开发人员和各种项目,它几乎成为了开源的代名词和风向标,各大软 ...

  7. [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 ...

  8. [LeetCode] Squirrel Simulation 松鼠模拟

    There's a tree, a squirrel, and several nuts. Positions are represented by the cells in a 2D grid. Y ...

  9. [LeetCode] Maximum Vacation Days 最大化休假日

    LeetCode wants to give one of its best employees the option to travel among N cities to collect algo ...

  10. IDEA2017.3.4破解方式

    下载jetbrainsCrack-2.7-release-str.jar包 下载地址: https://files.cnblogs.com/files/xifenglou/JetBrains.zip ...