程序員必讀書籍及導讀指南
最近在網上看了一個非常好的帖子《程序員一生必讀的書》(我的騰訊微博上有分享該貼子鏈接,有興趣就點擊進去看看吧),該貼的第一個張圖片是一個雷達圖, 這張圖是由ThoughtWorks(全球軟件設計與定制領域的領袖級企業)的資深人士提供的,它將程序員要讀的書分為四個類別,每個類別又分為初級、進階和高級讀物,并用黃色三角形點出了強烈推薦閱讀的書籍。四個類別包括:
- 編程實踐(Coding Practice)
- 設計與架構(Design & Architecture)
- 方法學(Methodology)
- 思想與領導力(Thought & Leadership)
相信這張圖會幫助到很多迷茫的職業人,因為好書就像明燈一樣會照亮我們的方向,那些大師級的人物將他們的經驗分享給我們,真的有如浴春風的感覺。有時候會很感慨國外有那么多厲害的技術作家寫了那么多好的作品,而國產技術書籍中的好書真算得上是鳳毛麟角。有時候也會問自己,能不能做一個技術作家呢,我想我的修煉還遠遠不夠。
雖然不能夠自己寫一本好書,但是還是很愿意把自己的讀書心得跟大家一起分享,雷達圖上的書我讀過的約有1/3,下面就把讀這1/3的心得跟大家分享。
Code Complete 《代碼大全》
Refactoring《重構:改善既有代碼質量》
Clean Code 《代碼整潔之道》
The Pragmatic Programmer: From Journeyman to Master 《程序員修煉之道:從小工到專家》
這本書最初出中文譯本的時候,它的名字叫《務實的程序員》,而這本書也正像它書名的副標題那樣,是一本帶領程序員從小工成為行業專家的著作。這本書里有70個Tip(指點、提示),這些Tip都是短小精煉的句子,但都是大師們編程經驗的總結和沉淀。因此不管什么時候看這本書,也不管你翻到第幾頁,總會發現這樣的Tip,而它們也會讓你有醍醐灌頂的感覺。下面分享了這本書部分的Tip:
- Tip8: Invest Regularly in Your Knowledge Portfolio (定期為你的知識資產投資)
- Tip9: Critically Analyze What You Read and Hear (批判的分析你讀到的和聽到的)
- Tip10: It’s Both What You Say and the Way You Say It (你說什么和你怎樣說同樣重要)
- Tip11: DRY - Don’t Repeat Yourself (不要重復自己)
- Tip13: Eliminate Effects Between Unrelated Things (消除無關事物之間的影響)
- Tip18: Estimate to Avoid Surprises (通過估計來避免意外發生)
- Tip20: Keep Knowledge in Plain Text (用純文本保存知識)
- Tip23: Always Use Source Code Control (總是使用源碼控制)
- Tip27: Don’t Assume It - Prove It (不要假定要證明)
- Tip29: Write Code That Writes Code (用代碼生成代碼)
- Tip31: Design with Contracts (按照契約設計)
- Tip33: If It Can’t Happen, Use Assertion to Ensure That It Won’t (用斷言確保不能發生的不發生)
- Tip38: Put Abstraction in Code, Details in Metadata (將抽象置于代碼,細節置于元數據)
- Tip39: Analyze Workflow to Improve Concurrency (分析工作流以改善并發性)
- Tip42: Separate Views from Models (讓視圖和模型分離)
- Tip63: Coding Ain’t Done ‘Til All the Tests Run (測試不通過編碼不停止)
- Tip69: Gently Exceed Your User’s Expectations (超出用戶期望一點點就好)
除此之外,該書中有很多名人名言以及很多經驗的分享,例如:“不要讓調試改變了被調試系統的行為”、“異常盡量不被作為程序正常流程的一部分來使用”、“要有始有終,分配資源的程序也應當釋放它”、“最大的弱點是害怕暴露弱點”等等。 當然,這本書也包括了對契約式編程、解耦合、重構、算法效率、測試等內容的探討。
老實說,整本書的內容都很棒,附錄也不例外,附錄A中列出了一些作者推薦閱讀的計算機書籍,這些書籍正好也出現在了我們給的這個必讀書籍的列表中,真的是英雄所見略同(就算我臭美了一次哈)
The Practice of Programming 《程序設計實踐》
Design Patterns 《設計模式》
Domain-Driven Design 《領域驅動設計》
The Art of UNIX Programming 《UNIX編程藝術》
Practical API Design 《軟件框架設計的藝術》
Patterns of Enterprise Application Architecture 《企業應用架構模式》
還有很多好書可能因為選擇標準的不同在雷達圖中雖然沒有出現,但是仍然值得每個程序員去閱讀,這些好書包括:
The C Programming Language 《C語言程序設計》
The Mythical Man-Month 《人月神話》
Hackers and Painters 《黑客與畫家》
The Art of Computer Programming 《計算機程序設計藝術》
Introduction to Algorithms 《算法導論》
Object-Oriented Analysis and Design with Applications 《面向對象分析與設計》
除此之外,因為自己做了很長時間的Java程序員,有一些Java方面的好書可以推薦給大家
Thinking in Java 《Java編程思想》
Effective Java
Java與模式
The Well-Grounded Java Developer 《Java程序員修煉之道》
POJOs in Action
如果你以前不是計算機相關專業又想轉型從事軟件行業,那么我推薦先看一些專業氣質養成類書籍,當然最入的書就是《計算機導論》或《計算機文化》啦,我把這類書也做了一個列表。
Computer Concepts 《計算機文化》
如果你希望從零基礎開始做一個Java程序員,那么我建議的這些書的閱讀順序是這樣的:
來自:http://blog.csdn.net/jackfrued/article/details/44456495說明:讀書心得我只有一點點寫上去了,先給個目錄吧 :)