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

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. BST讲解

    BST 第一步,什么是BST,所谓BST就是满足一种特定性质的二叉树,这个性质一般情况是当前节点的权值比他的左子树的所有点的权值大,比他的右子树的所有点的权值小,满足这样性质的二叉树就称为BST,下面 ...

  2. c#代码输入图片

    Image bgimage = Image.FromFile(flieUrl + bgImg); if (bgimage != null) { Bitmap bmp1 = new Bitmap(bgi ...

  3. springcloud分布式事务终极探讨

    2018阿里云全部产品优惠券(好东东,强烈推荐)领取地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userC ...

  4. jQuery滚动指定位置

    $(document).ready(function() { $("#scroll").click(function() { $('html, body').animate({ s ...

  5. 参考用bat文件

    @echo off rem *************** start of 'main' set DEBUG= " (set TRACE=echo) else (set TRACE=rem ...

  6. [SDOI2008]Sandy的卡片

    题目描述 Sandy和Sue的热衷于收集干脆面中的卡片. 然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型. 每一张卡片都由一些数字进行标记,第i张卡片的 ...

  7. [HNOI2014]世界树

    题目描述 世界树是一棵无比巨大的树,它伸出的枝干构成了整个世界.在这里,生存着各种各样的种族和生灵,他们共同信奉着绝对公正公平的女神艾莉森,在他们的信条里,公平是使世界树能够生生不息.持续运转的根本基 ...

  8. [HNOI2008]神奇的国度

    题目描述 K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在. ...

  9. 计蒜客NOIP模拟赛(2) D2T1 劫富济贫

    [问题描述] 吕弗·普自小从英国长大,受到骑士精神的影响,吕弗·普的梦想便是成为一位劫富济贫的骑士. 吕弗·普拿到了一份全国富豪的名单(不在名单上的都是穷人),上面写着所有富豪的名字以及他们的总资产, ...

  10. [BZOJ]1050 旅行comf(HAOI2006)

    图论一直是小C的弱项,相比其它题型,图论的花样通常会更多一点,套路也更难捉摸. Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权 ...