不知不觉在阅读开源代码的这条路上已经坚持了4个月,今天心血来潮想给自己作个阶段性的总结,不为别的就想让自己重新找回阅读源码的那个初心。
回想当初决定投入精力看源码的初衷,其实就是为了增加竞争力然后谈个好价钱,很现实也很简单,现在依然如此。唯一的稍微有点不同的是发现骨子里自己本来就想跟别人有那么一点不同,不想成为乌合之众而已。程序员怎么凸显自己的不同呢,那就用那句经典的 talk is cheap,show me the code。这算我坚持阅读源码的另外一个动机吧。
so,回归到正题让我们以Q&A的形式来回顾下阅读源码的腥风血雨吧。
- Q:你老大发现你看代码发朋友圈不会觉得你工作量不饱和么?
- A:抱歉,我不知道我们老大怎么看我的,如果哪天我得C了说明我们老大对我看源码的行为实在看不下去了。不过目前看来我还是保质保量的完成我该完成的任务的(至于有多出彩那肯定是没有的),如果哪天老大单独找我喝茶谈起这个事情,那么估计就是我make decision的时候了,当然前提是我自己没做好本职工作。
- Q:看代码有没有觉得自己超酷?
- A:抱歉,你想多了,你写个鸡汤软文往朋友圈一扔估计几百的阅读量是有的,源码分析的文章,呵呵,能有个10+的阅读量你就应该满足了。本身看源码是一个很枯燥很孤独的事情,所有的逻辑梳理都是只能靠你自己,你想象一下你花了半天甚至一天的时候才看懂的逻辑你指望朋友圈那帮鸡汤朋友能在7s之内看懂,那是不可能的。
- Q:看源码只看不写靠谱么?
- A:谢谢,完全不靠谱!如果没有养成写文章记录源码分析的过程,我估计你多半是很难完全看得懂源码的,写文章的过程就是梳理源码逻辑的过程,文章写通了源码也看懂的了。
- Q:看源码会参考别人文章么?
- A:互联网的精神就是共享,不参考别人不站在巨人的肩膀上,那是你傻啊。首先参考别人文章必须在文章末尾注明,这是对别人起码的尊重,我最鄙视的就是那种往大群发一些每日新闻又不注明出处的卑劣行径。当然参考别人的文章肯定是手段之一,但是参考变成抄袭这种二流的水准我是不屑的。
- Q:应该怎么看源码?
- A:其实说实话我觉得看源码的过程就是证明公式的过程,因为大部分情况下我们都知道源码所承载的功能,你看源码无非就是为了证明这TMD果然就是这么工作的。其实看源码我目前都是只走通大的宏观的流程,基本上不在小的点上进行细扣,只要我知道宏观的流程了我就能知道出问题的时候我应该定位哪里了,那时候再去扣细节会比较有的放矢。
- Q:看源码会有看不下去的时候么?
- A:相信我,有很多次我感觉我自己都要看吐了,因为实在看不明白,不过我给自己定的规矩是最晚不超过凌晨1点,因为我发现晚上看不懂的代码第二天一觉睡醒了说不定就看懂了,所以就不必为了感动自己而熬夜了。看不下去的时候如果整个人的确没思路了,那么就暂时休息吧,相信我休息好了你会看的下去了。
- Q:看源码会带来哪些改变?
- A:自信,这是我所能体会的最明显的感觉,因为这个东西的底层机制你都了解了,那么遇到问题了你就很淡定,有时候还会有点小骄傲的让别人把遇到的问题交给你来排查,滚雪球式的增加自信。
- Q:哪些时刻会让你觉得看源码很开心?
- A:这个回归技术人的初心就可以回答这个问题了,如果你的文章在百度或者Google的检索结果中很靠前你会很开心;帮同事解答疑惑的时候你会很开心;在实际项目中实实在在提升性能你会很开心(譬如你把耗时从40ms降低到20ms你就很兴奋),影响到身边的人开始阅读源码你也会很开心。
- Q:看源码你会给自己定KPI么?
- A:当然会,我的计划是在某些Q会投入部分精力完成几个核心技术栈的源码的阅读,等技术栈自我感觉不错的时候再开始投入到业务线当中发展,要不你觉得工作那么久的人天天写那么重复的业务代码有成就感?
- Q:如果用一句话美化阅读开源代码的行为,你会怎么说?
- A:所有需要时间投入的事物才是最值得骄傲的!看源码没办法与薪资直接挂钩,但是当你回顾自己写的一篇篇文章你会感觉到自己一个人倔强地坚持着。我给自己发起了一个跑步活动“用脚步丈量下沙大学”,因为我坚信所有投入时间的事物都是值得纪念的。
- Q:如果你想忽悠更多人一起看源码,你会怎么说?
- A:马斯克的第一性原理告诉我们看待事务要看到最本质的东西,对于一个工具来说源码就是他的最本质的东西,如果你都不了解他的内部实现,何谈了解。
我现在还记得在我蚂蚁短暂的时间里,我的老大赵云曾跟我说所有代码你都可以反编译然后修改最后再编译回去,这是第一次有人安抚了我对阅读源码的恐惧,后来兜兜转转发的项目组很多同事都在修改底层源码支持项目的特殊需求,所以我相信这是一个程序员的必经之路吧。
附上我目前看过的源码专题: