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 就在我的部落格下面留言要我少寫部落格多敲程式碼(有個讀者看不下去就在群裡截圖給我看)。
幸好呢,有一些讀者是理智的。
作為程式設計師的你,對如何磨快鋸子有更好的建議嗎?
PS:歡迎關注「沉默王二」公眾號,後臺回覆關鍵字「java」,即可免費獲取「文中提到的經典電子書PDF版」!!