學會閱讀源碼後,我以爲本身better了

我有一個大學同窗,名叫石磊,我在以前的文章裏提到過幾回,咱們倆合做過不少項目。只要有他在,我就特別放心,由於幾乎全部難搞的問題,到他這,都可以巧妙地化解。他給我印象最深入的一句話就是,「有啥解決不了的?只要你肯閱讀源碼。」前端

提及來源碼,我是不太建議新手去閱讀,容易勸退。不信,你讓一個小學生去讀一下《百年孤獨》,我保證他會今後對閱讀失去興趣。去年,我忍着頭皮讀了這本書的前十頁,而後就沒有而後了——讀不下去。我以爲本身仍是嫩了點,生活閱歷沒到那個層次,感悟、內化、思考的能力也沒到那個份上。git

我建議程序員至少在有一到兩年編程經驗後,再去閱讀源碼,這個時間段會比較合適。我是大三出去實習的,那會的水平真不敢恭維。不過,公司對咱們的耐心仍是有的。二十多名新人,分兩組,一組作個計算器,一組作畫圖工具,要求兩個月內完成。程序員

說白了,就是考覈咱們的,不合格就請退。我作的是計算器,成品後來放到了 CSDN 的資源庫上,騙了很多 C 幣。坦白說吧,有一部分代碼我是從網上覆制粘貼的。github

就這部分代碼,我研究了一個多月時間,硬是沒有吃透,只是說把其中的一些小 bug 修復了——靠着這種能力,我謀得了一份能夠掙錢養活本身的差事。面試

接下來一年半的工做時間裏,我沒有強逼本身去閱讀源碼,而是跟着項目組的進度,不斷地積攢編程的經驗。就像小孩子同樣,在會跑以前,總得先學會走路啊。編程

時間來到了 2012 年,我經過某些契機瞭解到公司之後的發展重心會是 Flex(結合了 B/S 與 C/S 技術優勢的新一代富客戶端技術),我就開始在項目間隙研究起了 Flex 的源碼。這時候,我以爲本身「複製粘貼」(或者說面向搜索引擎)的能力已經爐火純青了,日常的工做任務都可以應付,但總以爲本身還很菜。服務器

Flex 的總體框架是日方人員設計的,在原生的技術上作了一層封裝,組件更豐富了,有點相似於如今前端很是火熱的 Vue.js 或者 React。微信

我當時尚未參與到 Flex 的項目當中,但由於和公司的一個前輩關係比較要好,就找他要了一個小項目的源碼,在本地搭了一個調試環境,開始「打怪升級」了。app

不得不認可,日方開發人員寫的代碼仍是很是嚴謹的,註釋比代碼多得多。個人日語水平雖然不咋滴,但在翻譯軟件的幫助下,再加上對代碼的感知能力,仍是可以鑽研下去的。框架

這裏順帶透露一點。有兩個源碼的做者來過蘇州的分公司,我見過他們,年紀至少在四十歲以上,據同事說,有一個都五十多歲了,看來保養的不錯啊。他們爲人很是謙和(學到了咱們民族的精髓),完徹底全是一副純粹的技術人的模樣——那些大齡程序員都去哪了?答案就在這裏,只要你技術夠牛,公司就須要你。

通過四個多月不懈的努力,我以爲本身的編程能力獲得了飛速的提高,不只會用框架已有的組件,在必要的時候還可以擴展一些自定義的組件——由於我已經讀懂了大部分的源碼,敢在上面動手動腳了。

在這期間,我用 Flex 作了一款聊天工具,我在很早以前的文章裏提到過。公司內部使用的 spark 聊天工具是有檔案記錄的,不能在上面談一些工做以外的話題,好比說有幾個同事喜歡分享魔獸世界的心得體會,我這個工具剛好爲他們提供了便利,服務器就在我本地電腦上。

就是憑藉這款聊天工具,我被一個領導看中了,直接挖我過去作了小組長,負責項目的編碼部分。更重要的是,加薪了!

因此說,我一直以爲,閱讀源碼是一項重要的能力——它可以讓你從一名代碼的搬磚工人蛻變成爲一名會造輪子的工程師。

我如今八年工做經驗了,但前幾年出來的時候沒注重基礎,沒研究過源碼,如今三十了,感受壓力上來了。投了不少簡歷,也沒啥面試的消息。

上面這段話是前天一名讀者安少給我發的信息,看完後,真的蠻爲他感到可惜的。閱讀源碼雖然不是萬能的,但對一個程序員的能力提高,真的是很是重要,大概就至關於內功心法吧。

若是安少在程序生涯的早期(三五年的時候)就可以靜下心去源碼裏「潛水」或者「暢遊」一段時間,他就不至於在 30 歲的時候擔憂本身的前途。

參加過 Java 崗位面試的讀者應該清楚,面試官喜歡問一些關於源碼方面的知識點,好比說,「HashMap 的底層原理是什麼?大小超過了負載因子定義的容量該怎麼辦?」若是日常肯去倒騰源碼的話,這些問題你確定可以答得行雲流水,不然真的是一臉懵逼啊。

總結一下,閱讀源碼不只可以提高你的編程能力,還可以讓你從容面對面試官的提問。對了,我差點忘記一點,閱讀源碼仍是解決 bug 的銀彈

這也是爲何 GitHub 這麼流行的緣由之一啊,由於它上面的源碼都是開源的。這就意味着,若是程序出現了故障,而故障的緣由是由這些源碼引發的,你就沒必要苦苦等待源碼的做者去修復它,「本身動手豐衣足食」啊。畢竟源碼的做者還有不少其餘重要的事情要作,他不可能在線等你 issue 啊。

還記得我在文章開頭提到的石磊吧,他遇到問題的第一反應就是去把源碼的底褲扒個精光。在他眼裏,問題發生的根源要麼是他本身,要麼就是源碼,因此我一直以爲他蠻有極客精神的。

而我,一般是,先檢查本身的代碼,若是找不出,去求助一下搜索引擎,若是還找不出,纔會去閱讀源碼。

不要怕,一開始閱讀源碼真的會有點難度,但若是你想要成長,就不能一直待在本身的溫馨區,你得硬着頭皮上。等你頭硬(禿)了以後,就真的變強了!

若是以爲文章對你有點幫助,請微信搜索「 沉默王二 」第一時間閱讀。

本文已收錄 GitHub,傳送門~ ,裏面更有大廠面試完整考點,歡迎 Star。

我是沉默王二,一枚有顏值卻靠才華苟且的程序員。關注便可提高學習效率,別忘了三連啊,點贊、收藏、留言,我不挑,嘻嘻

相關文章
相關標籤/搜索