軟件業的特色是變化。若要提升軟件開發的技能,就必須跟上技術發展的步伐。埋首醉心於項目開發與實戰,當然可以錘鍊本身的開發技巧,卻不免受限於經驗與學識。世界上並不存在速成的終南捷徑,但閱讀好的技術書籍,尤爲是閱讀大師們的經典著做,總能收到事半功倍之效。一位優秀的程序員,或許就是一名好的閱讀者。好的閱讀者,老是知道如何選擇好的書籍。書海浩繁,參差不齊。閱讀技術好書,如與智者交談,「與君一席話勝讀十年書」;遭遇技術爛書,如被拐賣,「少小離家老大回,鄉音無改鬢毛衰」。mysql
ThoughtWorks做爲一家學習型組織,頗爲看重每一位員工的學習能力。事實上,大多數ThoughtWorker的骨子裏,都溢滿了讀書的基因。與書相伴,與書爲伍,既是一種樂趣,又是一種習慣。當習慣成爲天然時,書籍就成爲生活和工做不可或缺的一部分了。若是說人文歷史哲學等書籍是一碗心靈雞湯,技術書籍大抵算得上是一味養分素,讀之能夠直接帶來營養;可如果不瞭解本身究竟缺了哪種養分,亂吃亂補,結果就可能拔苗助長了。有鑑於此,我和同事劉龍軍結合自身的閱讀經驗,爲新入職ThoughtWorks的程序員製做了一份讀書路線圖。咱們將範圍明確爲程序員,是由於做爲程序員的咱們,它是咱們最瞭解的工做角色。咱們篩選出了一些你們公認的經典書籍,再結合本身的閱讀體會,並普遍徵集了更多ThoughtWorker的意見,包括徐昊,熊節,鄭曄等資深閱讀者,獲得了這樣一份草稿。在中國公司內部推出時,這份讀書路線圖獲得了多數人的承認和歡迎。繼而,咱們在成都辦公室陸續針對此讀書路線圖展開了讀書俱樂部的活動,算是作了一次全方位大面積的試水。linux
如今,咱們以爲是推出正式版本,並面向更多受衆的時機了。這就是你們如今看到的ThoughtWorks(中國)程序員讀書雷達。它相較於以前的讀書路線圖草稿,分類更爲專業,書籍篩選更爲合理,並以雷達獨有的優點,來展示不一樣的閱讀維度與閱讀深度。顯然,讀書雷達更能表達咱們對所選書籍的深度認識。它能夠做爲學習型組織的一份知識輸入,每一位程序員均可以根據自身水平與能力,選擇適合本身的書籍,甚至組成一份表達閱讀履歷的讀書路線圖,在得到知識完善與汲取的過程當中,提升自身能力,達至各個維度的巔峯。c++
該讀書雷達將書籍分爲了以下四個象限:git
Coding Practice(編程實踐)
Architecture & Design(架構與設計)
Methodology(方法學)
Thought & Leadership(思想與領導力)程序員
咱們之因此將方法學、思想與領導力放入到這個爲程序員設計的讀書雷達中,乃是由於軟件開發不只僅是我的的活動,也不只僅是編碼技巧和設計能力的體現。咱們認爲,開發技能實際上是一項綜合的系統工程。瞭解方法學,能夠促進你對開發過程的理解;關於思想,則涉及大腦思惟的修煉,能夠提升程序員的抽象能力、學習能力,有助於幫助程序員發現事物發展的規律和本質;至於領導力,則有助於程序員在開發團隊中發揮更大的做用,並能做爲很好的團隊成員,提高團隊的總體能力。咱們沒有在這個讀書雷達中包括語言類的書籍,緣由在於這類書籍太過於發散,且更新較快;咱們也不可能奢望在一張讀書雷達圖中,爲不一樣的語言平臺展示不一樣的優秀書籍。相比較語言的學習,咱們更看重程序員在編程實踐上的基本功。github
每一個象限皆分爲三個等級,分別爲Fundamental、Medium和Advanced,對應初學、進階和高級。在雷達圖中,讀者能夠根據該書在圖中距離圓心的遠近,判斷它的難度級別。咱們還使用了不一樣的圖示來表達對每本書的傾向性意見,其中,橙色的三角形圖示表明「強烈推薦」,藍色的圓形圖示表明「推薦」。咱們但願這類書籍對於程序員而言,能夠根據本身目前的水平,選擇適合本身的書籍。在這個層次上,強烈推薦可能就意味着必讀。web
或許有人會質疑讀書雷達的挑選標準。正所謂「每一個人心中都有本身的哈姆雷特」,咱們認同的未必能獲得讀者的認同,這是咱們這個世界關於一種觀點或態度的常態。咱們發佈這個讀書雷達,只是但願能提供更多有用的信息與參考,而非表明一種讀書權利的絕對化。事實上,咱們也不可能作到。此外,」吾生也有涯,而知也無涯」,咱們閱讀的書籍畢竟有限,且讀書雷達的容量也有限,不免會有遺珠之嘆,這也是一件迫不得已之事。然而,咱們歡迎更多的批評與建議,或許你推薦的好書偏偏是咱們遺忘的,又或者激起了咱們的共識,那麼咱們也會絕不吝嗇地更新讀書雷達,以求作到咱們能力範圍內的盡善盡美。固然,正如你看到的,咱們在Methodology(方法學)象限,更多地推薦了與敏捷和精益相關的書籍。這是由於咱們對敏捷技能與方法更有心得和信心。對於我和劉龍軍還不夠擅長的領域,咱們不敢也不肯作出可能誤導人的推薦。
本讀書雷達雖然冠以ThoughtWorks(中國)之名,但選書的傾向與意見並不是ThoughtWorks(中國)官方的態度,而是做爲製做者(龍軍和我)我的表達的意見而已。若是你也加入了ThoughtWorks,你必定會發現這種自發組織的民間活動,在ThoughtWorks可謂俯拾皆是,不用詫異。
我將在後面的文章中,根據每一個象限爲每一本書給出咱們的推薦理由。此時,書籍成爲了咱們的臣民,我想對這個王國作一次不吝惜讚揚的巡視。最後,列出讀書雷達的中英文書單,以下所示(感謝凱峯爲這個雷達圖創建的豆列,能夠訪問ThoughtWorks(中國)程序員讀書雷達):
Coding Practice | 編程實踐
基礎篇
Clean Code《代碼整潔之道》
Pragmatic Unit Testing《單元測試之道》
The Productive Programmer《卓有成效的程序員》
Test-Driven Development By Example《測試驅動開發》
Clean Coder《程序員的職業修養》
The Art of Readable Code《編寫可讀代碼的藝術》
進階篇
Refactoring To Patterns《重構與模式》
Implementation Patterns《實現模式》
Code Complete《代碼大全》
The Pragmatic Programmer《程序員修煉之道》
高級篇
Structure and Interpretation of Computer Programs《計算機程序的構造和解釋》
Working Effectively with Legacy Code《修改代碼的藝術》
Architecture & Design | 架構與設計
基礎篇
Agile Software Development 《敏捷軟件開發:原則、實踐與模式》
Head First Design Patterns《深刻淺出設計模式》
Design Patterns 《設計模式》
進階篇
The Art of UNIX Programming 《Unix編程藝術》
Practical API Design 《框架設計的藝術》
Domain Specific Languages 《領域特定語言》
Patterns of Enterprise Application Architecture 《企業應用架構模式》
高級篇
Release It
Domain-Driven Design 《領域驅動設計》
Enterprise Integration Patterns《企業集成模式》
Beautiful Architecture《架構之美》
Pattern-Oriented Software Architecture《面向模式的軟件架構》
Methodology | 方法學
基礎篇
User Stories Applied《用戶故事與敏捷方法》
The Gold Mine《金礦》
Scrum and XP From the Trenches《硝煙中的Scrum和XP》
Continuous Integration《持續集成》
Extreme Programming Explained《解析極限編程》
進階篇
Lean Thinking《精益思想》
Continuous Delivery《持續交付》
How Google Tests Software
Agile Testing
Extreme Programming Refactored《重構極限編程》
高級篇
Specification By Example
Thought & Leadership | 思想與領導力
基礎篇
The Effective Executive《卓有成效的管理者》
Are Your Lights On?《你的燈亮着嗎》
Becoming A Technical Leader《成爲技術領導者》
進階篇
The Fifth Discipline《第五項修煉》
The Design Of Business
Management 3.0《管理3.0:培養和提高敏捷領導力》
Presentation To Win
The McKinsey Way《麥肯錫方法》
高級篇
Thinking, Fast and Slow《思考快與慢》