最近在網(wǎng)上看了一個非常好的帖子《程序員一生必讀的書》(我的騰訊微博上有分享該貼子鏈接,有興趣就點擊進去看看吧),該貼的第一個張圖片是一個雷達圖, 這張圖是由ThoughtWorks(全球軟件設(shè)計與定制領(lǐng)域的領(lǐng)袖級企業(yè))的資深人士提供的,它將程序員要讀的書分為四個類別,每個類別又分為初級、進階和高級讀物,并用黃色三角形點出了強烈推薦閱讀的書籍。四個類別包括:
- 編程實踐(Coding Practice)
- 設(shè)計與架構(gòu)(Design & Architecture)
- 方法學(xué)(Methodology)
- 思想與領(lǐng)導(dǎo)力(Thought & Leadership)
相信這張圖會幫助到很多迷茫的職業(yè)人,因為好書就像明燈一樣會照亮我們的方向,那些大師級的人物將他們的經(jīng)驗分享給我們,真的有如浴春風(fēng)的感覺。有時候會很感慨國外有那么多厲害的技術(shù)作家寫了那么多好的作品,而國產(chǎn)技術(shù)書籍中的好書真算得上是鳳毛麟角。有時候也會問自己,能不能做一個技術(shù)作家呢,我想我的修煉還遠遠不夠。下面就把這些好書羅列出來跟大家分享。
Code Complete 《代碼大全》
Refactoring《重構(gòu):改善既有代碼質(zhì)量》
Clean Code 《代碼整潔之道》
The Pragmatic Programmer: From Journeyman to Master 《程序員修煉之道:從小工到專家》
The Practice of Programming 《程序設(shè)計實踐》
Design Patterns 《設(shè)計模式》
Domain-Driven Design 《領(lǐng)域驅(qū)動設(shè)計》
The Art of UNIX Programming 《UNIX編程藝術(shù)》
Practical API Design 《軟件框架設(shè)計的藝術(shù)》
Patterns of Enterprise Application Architecture 《企業(yè)應(yīng)用架構(gòu)模式》
還有很多好書可能因為選擇標準的不同在雷達圖中雖然沒有出現(xiàn),但是仍然值得每個程序員去閱讀,這些好書包括:
The C Programming Language 《C語言程序設(shè)計》
C語言之父Dennis Ritchie以及Brian Kernighan兩位老師合著的神一樣的書籍。我到現(xiàn)在都沒有想明白為什么國內(nèi)只有極少數(shù)的幾所大學(xué)用這本書作為教材,難道C語言的入門書中還有出其右者嗎?這本書的內(nèi)容無比精彩,不管是對于初學(xué)者還是有經(jīng)驗的程序員;這本書中的代碼無與倫比,幾乎每一段代碼都是經(jīng)典。即使你還沒有讀過本書,但是你一定聽說過一個叫Hello, world的程序,該程序就出現(xiàn)在這本書中。
The Mythical Man-Month 《人月神話》
這本書是號稱軟件工程領(lǐng)域的第一奇書,與《人件》合稱為軟件工程著作中的倚天劍和屠龍刀。Brooks博士為人們管理復(fù)雜項目提供了最具洞察力的見解。既有很多發(fā)人深省的觀點,又有大量軟件工程的實踐,其內(nèi)容都是來自Brooks博士在IBM公司System/360家族和OS/360中的項目管理經(jīng)驗。這本書是項目經(jīng)理和系統(tǒng)分析師必讀的不朽之作,也是流行了30多年的傳奇經(jīng)典。
Hackers and Painters 《黑客與畫家》
該書是我最近幾乎每天都翻翻的一本書,準確的說這本書是硅谷創(chuàng)業(yè)之父Paul Graham的文集,主要介紹優(yōu)秀程序員(書中稱之為黑客,當(dāng)然這和我們尤其是國內(nèi)對黑客的理解有所差別)的愛好和動機,討論它們?nèi)绾纬砷L以及如何為世界做出貢獻,當(dāng)然也包括了對編程語言和優(yōu)秀程序員工作方法等的探討和思考。該書的內(nèi)容不但有助于了解計算機編程的本質(zhì)、互聯(lián)網(wǎng)行業(yè)的規(guī)則,還會幫助讀者了解我們這個時代,迫使讀者獨立思考。該書的中文版是阮一峰博士翻譯的,翻譯的水準和書中的旁注都相當(dāng)好。
The Art of Computer Programming 《計算機程序設(shè)計藝術(shù)》
Introduction to Algorithms 《算法導(dǎo)論》
Object-Oriented Analysis and Design with Applications 《面向?qū)ο蠓治雠c設(shè)計》
除此之外,因為自己做了很長時間的Java程序員,有一些Java方面的好書可以推薦給大家。
Thinking in Java 《Java編程思想》
Bruce Eckel的書對于學(xué)習(xí)如何在Java語言環(huán)境中使用好面向?qū)ο蠹夹g(shù)極其實用。本書中的很多代碼都變成了招聘Java程序員的面試題,因為那些代碼都極具參考價值。Eckel本人具有多種語言的大量經(jīng)驗,還有用面向?qū)ο蠓绞竭M行思考的扎實技能,是C++標準委員會有表決權(quán)的委員,他寫的《Thinking in C++》一書也是多次獲獎的著作。本書將交給你很多實用的Java開發(fā)技術(shù)。
Effective Java
本書是理解優(yōu)秀 Java 程序設(shè)計原則的最佳書籍。連Java之父James Gosling也稱贊本書為他很需要的書籍。本書講解了78條原則,每一條都很精彩,例如第8條和第9條中關(guān)于重寫equals()方法的講解、第18條用接口替代抽象類、第57條至第65條關(guān)于異常使用的原則,一切都無比精彩。Bloch是Sun公司Java平臺庫的架構(gòu)師,所以他透徹地了解這門語言,而且他本人也編寫了Java語言中大量有用的API。此書必讀!
《Java與模式》
The Well-Grounded Java Developer 《Java程序員修煉之道》
POJOs in Action
其實國產(chǎn)的Java書籍里面也有部分優(yōu)秀的書籍,雖然國產(chǎn)書的質(zhì)量總體偏低,但是最近幾年還是有很多有責(zé)任感的技術(shù)作家(他們很多人同時也是一線程序員或架構(gòu)師)寫了不少好書。
《設(shè)計模式之禪》
《編寫高質(zhì)量代碼:改善Java程序的151個建議》
《Spring 3.x企業(yè)應(yīng)用開發(fā)實戰(zhàn)》
《Tomcat與Java Web開發(fā)技術(shù)詳解》
《瘋狂Java:突破程序員基本功能的16課》
如果你以前不是計算機相關(guān)專業(yè)又想轉(zhuǎn)型從事軟件行業(yè),那么我推薦先看一些專業(yè)氣質(zhì)養(yǎng)成類書籍,當(dāng)然最入的書就是《計算機導(dǎo)論》、《計算機文化》之類的書,也可以看看《計算機科學(xué)概論》或者是《計算機專業(yè)英語》,建議看原版的,一方面對整個行業(yè)有一個全面的了解,另一方面鍛煉一下自己的英語水平。無論如何,我覺得程序員還是應(yīng)該讓英語成為自己的工作語言。
Computer Concepts 《計算機文化》
Computer Science Illuminated 《計算機科學(xué)概論》
Computing Essentials 《計算機專業(yè)英語》
如果你希望從零基礎(chǔ)開始做一個Java程序員,那么我建議的這些書的閱讀順序是這樣的(每項讀一本就OK了):
1. Computer Concepts / Computer Science Illuminated
2. The C Programming Language
3. Core Java (Vol. 1 & Vol. 2) / Introduction to Java Programming
4. MySQL Crash Course / 深入淺出MySQL / Sams Teach Yourself SQL in 10 Minutes
5. Thinking in Java / Effective Java / 編寫高質(zhì)量代碼:改善Java程序的151個建議
6. Servlet & JSP: A Tutorial / Head First Servlets & JSP
7. Java與模式 / Design Patterns Explained / 設(shè)計模式之禪
8. 精通Hibernate / Java Persistence with Hibernate
9. Spring in Action / Spring企業(yè)應(yīng)用開發(fā)實戰(zhàn) / Spring技術(shù)內(nèi)幕
10. Clean Code / Refactoring Impoving the Design of Existing Code
11. The Well-Grounded Java Developer
12. Algorithms / Data Structures and Algorithm Analysis in Java
13. POJOs in Action / Core J2EE Patterns: Best Practices and Design Strategies
14. Java Performance
15. Software Engineering A Practitioner’s Approach
說明:原來打算把讀書心得寫在這篇文章中,后來想想覺得內(nèi)容太多,準備每本書的讀書心得單獨成文,歡迎大家分享交流。
|