01、前言
作為一名程式員,本職工作當然是編寫代碼,毫無疑問;就像一名伐木勞工,他的本職工作就是鋸樹;但如果鋸子鈍了,鋸起樹來可想而知有多麼的吃力。
我相信,99.99% 的程式員都知道要把鋸子磨快;但估計隻有 0.01% 的程式員願意停下來,去思考怎麼磨快自己的“鋸”——泛指程式設計以外的活動,但可以幫助你成為一名更好的程式員。
當今這個年代,每個程式員都忙得像一隻陀螺(更何況還有一支看不見的鞭子一直在抽打着我們),完全沒有時間停下來去思考啊,就像伐木勞工說自己“連鋸樹都忙不過來,哪有時間磨鋸子啊。”
但無論如何我都要提醒你,該停下來的時候一定要停下來啊。我們成長的過程中需要刻意練習,需要編寫不計其數的代碼,但如果不知道練習的方法,就隻會徒勞無功。好了,廢話不多說,讓我來告訴你兩個磨鋸子的好辦法吧!
02、拜大牛為師
假如你所在的公司很靠譜,那麼在你剛入職的時候,就會派一名盡職盡責的富有經驗的“高手”帶帶你——公司投資你,也是希望未來的你能夠公司帶來人超所值的貢獻。那麼恭喜你,你很幸運,機會來了,要緊緊抱住這個大腿,别松手。
但要注意的是,你要做的不是天天尾随“師傅”屁股後面端茶倒水、溜須拍馬,而是認真聆聽、仔細觀察和及時回報。
認真聆聽指的是,師傅安排任務的時候,一定要洗耳恭聽,把任務搞清楚,别不懂裝懂。說起來,很慚愧,我年輕的時候就經常性犯這個錯,總擔心自己的詞不達意會耽誤師傅的黃金時間,就不敢把心中的疑慮說出來,導緻工作起來手忙腳亂,最後反倒耽誤了師傅的時間,被罵得狗血噴頭。
仔細觀察指的是,你得擁有一雙善于發現美的眼睛,去觀察師傅高效編碼的習慣,解決問題時的思考方法,以及為人處世時的一些技巧。這些可難得了,學校不會教這些的。
最後,千萬别忘了及時回報,不要在那裡幹巴巴地等,等師傅來找你要結果,自己要主動去回報,做一個積極向上的人嘛。
假如你沒這麼幸運,公司不太靠譜,師傅也不太靠譜,怎麼辦呢?去網上找啊!比如部落格園上的這些推薦部落客。

切記,不要一上來就去看他們成功後的經驗分享,而要去看他們早年期間剛開始成長時候的經驗(非常寶貴)。建議你把他們的部落格倒序排一下,從第一篇文章看起(如果他好意思沒删的話)。如果還能更進一步,加入到他們的社群當中。切記不要在群裡灌水,要去吸收有營養的價值——如果沒有,堅決退出。
如果大牛留下了聯系方式,不要吝啬,趕緊占個位置先。切記要帶着問題去請教或者探讨。因為回答或者探讨問題不需要太多的時間,靠的是經驗和積累,這種情況下,大牛們都是很樂意的,畢竟影響力是大牛的一個重要名額嘛。
但如果,你一直停留在“在嗎?”、“我很迷茫,給點建議好嗎?”這種泛泛而談,沒有任何藝術的提問,大牛是無暇顧及的,畢竟你很忙,大牛也很忙啊。
03、大量的閱讀
要用一種開放的心态,去閱讀大量的程式設計相關的部落格或者書籍。
有不少程式員會懷着一種真切但不切實際的希望——讀完這篇部落格、這本書我就能夠成為技術大牛了。但實際上,如果我們能從中找到哪怕隻有一點(讓我們變成更好的程式員的)内容,就賺到了。其實這已經很貪心了。
可能會有一些程式員抱怨說:“我去哪裡找這麼多時間讀書或者讀部落格啊?能不能給我點快餐?”聽到這樣的聲音,我不免泛起憐憫的同情心;再送你一句魯迅先生的名言啊,聽好了——時間就像海綿裡的水,擠擠總會有的。
如果能時光倒流,回到過去,作為一名(Java)程式員,我必須鄭重其事地告訴你,這 8 本書(排名不分先後順序)是必須要讀一讀的。
1)《代碼整潔之道》,推薦指數:五顆星
細節之中自有天地,整潔成就卓越代碼。從《代碼整潔之道》中可以學到:
好代碼和糟糕的代碼之間的差別;
如何編寫好代碼,如何将糟糕的代碼轉化為好代碼;
如何建立好名稱、好函數、好對象和好類;
如何格式化代碼以實作其可讀性的最大化;
如何在不妨礙代碼邏輯的前提下充分實作錯誤處理;
如何進行單元測試和測試驅動開發。
2)《Effective Java》第三版,推薦指數:五顆星
第三版一共包含 90 個條目,每個條目讨論 Java 程式設計中的一條規則。這些規則反映了最有經驗的優秀程式員在實踐中常用的一些有益的做法。
不過,這本書的中文翻譯太過蹩腳,讀起來非常生硬。每段文字我都要讀上兩三遍,才能心領神會的“哦”一聲。(要是所有的技術書都能像我的文字一樣有趣該多好啊)
3)《人月神話》,推薦指數:五顆星
在軟體領域,很少能有像《人月神話》一樣具有深遠影響力并且暢銷不衰的著作。不過話說回來,這本書的閱聽人不應該隻是程式員,那些口口聲聲說“需求很簡單,用不了多久就能開發完,大不了再加個開發嘛”的人更應該讀一讀。
4)《設計模式之禅》,推薦指數:五顆星
本書是設計模式領域公認的 3 本經典著作之一,“極具趣味,容易了解,但講解又極為嚴謹和透徹”——可能是因為本書的作者(秦小波)和王小波(我最喜歡的作家)是同一個名字的原因吧?!
讀完前言,我就愛上了這本書。說句心裡話,技術書就應該這樣寫嘛,讀者才能融會貫通。
5)《程式員修煉之道》,推薦指數:五顆星
本書由一系列獨立的部分組成,涵蓋的主題從個人責任、職業發展,到用于使代碼保持靈活、并且易于改編和複用的各種架構技術,穿插了許多富有娛樂性的奇聞轶事,極大地提高了本書的可讀性。
PS:經典的英文書一經翻譯,總免不了生澀的味道——就好像是我(wo)在駕駛一輛布加迪威龍一樣。
6)《深入了解 Java 虛拟機》,推薦指數:五顆星
幾乎所有寫 Java 虛拟機方面的部落格,免不了在後面加上一個注解:本文參照自周志明的《深入了解 Java 虛拟機》。可想而知這本書的風騷程度。
7)《Java 網絡程式設計》,推薦指數:五顆星
Java 網絡程式設計方面的經典書,不容錯過。
8)《Java 并發程式設計實戰》,推薦指數:五顆星
如果你正在編寫、設計、調試、維護以及分析多線程的 Java 程式,那麼本書正是你所需要的。如果你曾對某個方法進行過同步,但卻不了解其中的原因,那麼你以及你的使用者都有必要從頭至尾仔細地讀一讀這本書。
04、最後
當然了,随意地、沒有目的的磨鋸子,就适得其反了。然而,如果一個程式員對這些完全不感興趣,那麼問題也很嚴重。
不信,你瞧,libinlink 就在我的部落格下面留言要我少寫部落格多敲代碼(有個讀者看不下去就在群裡截圖給我看)。
幸好呢,有一些讀者是理智的。