軟體業的特點是變化。若要提高軟體開發的技能,就必須跟上技術發展的步伐。埋首醉心於專案開發與實戰,固然能夠錘煉自己的開發技巧,卻難免受限於經驗與學識。世界上並不存在速成的終南捷徑,但閱讀好的技術書籍,尤其是閱讀大師們的經典著作,總能收到事半功倍之效。一位優秀的程式設計師,或許就是一名好的閱讀者。好的閱讀者,總是知道如何選擇好的書籍。書海浩繁,良莠不齊。閱讀技術好書,如與智者交談,「與君一席話勝讀十年書」;遭遇技術爛書,如被拐賣,「少小離家老大回,鄉音無改鬢毛衰」。
thoughtworks作為一家學習型組織,頗為看重每一位員工的學習能力。事實上,大多數thoughtworker的骨子裡,都溢滿了讀書的基因。與書相伴,與書為伍,既是一種樂趣,又是一種習慣。當習慣成為自然時,書籍就成為生活和工作不可或缺的一部分了。如果說人文歷史哲學等書籍是一碗心靈雞湯,技術書籍大抵算得上是一味營養素,讀之可以直接帶來養分;可若是不了解自己究竟缺了哪一種營養,亂吃亂補,結果就可能適得其反了。有鑑於此,我和同事劉龍軍結合自身的閱讀經驗,為新入職thoughtworks的程式設計師製作了乙份讀書路線圖。我們將範圍明確為程式設計師,是因為作為程式設計師的我們,它是我們最了解的工作角色。我們篩選出了一些大家公認的經典書籍,再結合自己的閱讀體會,並廣泛徵集了更多thoughtworker的意見,包括徐昊,熊節,鄭曄等資深閱讀者,得到了這樣乙份草稿。在中國公司內部推出時,這份讀書路線圖得到了多數人的認可和歡迎。繼而,我們在成都辦公室陸續針對此讀書路線圖展開了讀書俱樂部的活動,算是做了一次全方位大面積的試水。
現在,我們覺得是推出正式版本,並面向更多受眾的時機了。這就是大家現在看到的thoughtworks(中國)程式設計師讀書雷達。它相較於之前的讀書路線圖草稿,分類更為專業,書籍篩選更為合理,並以雷達獨有的優勢,來展現不同的閱讀維度與閱讀深度。顯然,讀書雷達更能表達我們對所選書籍的深度認識。它可以作為學習型組織的乙份知識輸入,每一位程式設計師都可以根據自身水平與能力,選擇適合自己的書籍,甚至組成乙份表達閱讀履歷的讀書路線圖,在獲得知識完善與汲取的過程中,提高自身能力,達至各個維度的巔峰。
該讀書雷達將書籍分為了如下四個象限:
coding practice(程式設計實踐)我們之所以將方法學、思想與領導力放入到這個為程式設計師設計的讀書雷達中,乃是因為軟體開發不僅僅是個人的活動,也不僅僅是編碼技巧和設計能力的體現。我們認為,開發技能其實是一項綜合的系統工程。了解方法學,可以促進你對開發過程的理解;關於思想,則涉及大腦思維的修煉,可以提高程式設計師的抽象能力、學習能力,有助於幫助程式設計師發現事物發展的規律和本質;至於領導力,則有助於程式設計師在開發團隊中發揮更大的作用,並能作為很好的團隊成員,提公升團隊的整體能力。我們沒有在這個讀書雷達中包括語言類的書籍,原因在於這類書籍太過於發散,且更新較快;我們也不可能奢望在一張讀書雷達圖中,為不同的語言平台展現不同的優秀書籍。相比較語言的學習,我們更看重程式設計師在程式設計實踐上的基本功。architecture & design(架構與設計)
methodology(方法學)
thought & leadership(思想與領導力)
每個象限皆分為三個等級,分別為fundamental、medium和advanced,對應初學、高階和高階。在雷達圖中,讀者可以根據該書在圖中距離圓心的遠近,判斷它的難度級別。我們還使用了不同的圖示來表達對每本書的傾向性意見,其中,橙色的三角形圖示代表「強烈推薦」,藍色的圓形圖示代表「推薦」。我們希望這類書籍對於程式設計師而言,可以根據自己目前的水平,選擇適合自己的書籍。在這個層次上,強烈推薦可能就意味著必讀。
或許有人會質疑讀書雷達的挑選標準。正所謂「每個人心中都有自己的哈姆雷特」,我們認同的未必能得到讀者的認同,這是我們這個世界關於一種觀點或態度的常態。我們發布這個讀書雷達,只是希望能提供更多有用的資訊與參考,而非代表一種讀書權利的絕對化。事實上,我們也不可能做到。此外,」吾生也有涯,而知也無涯」,我們閱讀的書籍畢竟有限,且讀書雷達的容量也有限,難免會有遺珠之嘆,這也是一件無可奈何之事。然而,我們歡迎更多的批評與建議,或許你推薦的好書恰恰是我們遺忘的,又或者激起了我們的共識,那麼我們也會毫不吝嗇地更新讀書雷達,以求做到我們能力範圍內的盡善盡美。當然,正如你看到的,我們在methodology(方法學)象限,更多地推薦了與敏捷和精益相關的書籍。這是因為我們對敏捷技能與方法更有心得和信心。對於我和劉龍軍還不夠擅長的領域,我們不敢也不願做出可能誤導人的推薦。
本讀書雷達雖然冠以thoughtworks(中國)之名,但選書的傾向與意見並非thoughtworks(中國)官方的態度,而是作為製作者(龍軍和我)個人表達的意見而已。如果你也加入了thoughtworks,你一定會發現這種自發組織的民間活動,在thoughtworks可謂俯拾皆是,不用詫異。
我將在後面的文章中,根據每個象限為每一本書給出我們的推薦理由。此時,書籍成為了我們的臣民,我想對這個王國做一次不吝惜讚賞的巡視。最後,列出讀書雷達的中英文書單,如下所示(感謝凱峰為這個雷達圖建立的豆列,可以訪問thoughtworks(中國)程式設計師讀書雷達):
基礎篇
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《修改**的藝術》
agile software development 《敏捷軟體開發:原則、實踐與模式》高階篇head first design patterns《深入淺出設計模式》
design patterns 《設計模式》
高階篇
release it基礎篇domain-driven design 《領域驅動設計》
enterprise integration patterns《企業整合模式》
beautiful architecture《架構之美》
pattern-oriented software architecture《面向模式的軟體架構》
高階篇
lean thinking《精益思想》高階篇continuous delivery《持續交付》
how google tests software
agile testing
extreme programming refactored《重構極限程式設計》
specification by example基礎篇
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《思考快與慢》**:
ThoughtWorks中國區CTO徐昊訪談摘錄
一 研發三件事 問個好問題,給個好答案,寫段好 我做過所有的技術角色,非技術角色做過ba pre sales。如果例數所有角色的話,最感興趣和最有挑戰的其實是三件事 問了個好問題,給了個好答案,寫了段好 二 關於manager 要給大家帶好頭,起好榜樣作用。業務上做得好,還不是好一點半點,要好到讓人...
ThoughtWorks 中國 程式設計師讀書雷達
軟體業的特點是變化。若要提高軟體開發的技能,就必須跟上技術發展的步伐。埋首醉心於專案開發與實戰,固然能夠錘煉自己的開發技巧,卻難免受限於經驗與學識。世界上並不存在速成的終南捷徑,但閱讀好的技術書籍,尤其是閱讀大師們的經典著作,總能收到事半功倍之效。一位優秀的程式設計師,或許就是一名好的閱讀者。好的閱...
ThoughtWorks 中國 程式設計師讀書雷達
軟體業的特點是變化。若要提高軟體開發的技能,就必須跟上技術發展的步伐。埋首醉心於專案開發與實戰,固然能夠錘煉自己的開發技巧,卻難免受限於經驗與學識。世界上並不存在速成的終南捷徑,但閱讀好的技術書籍,尤其是閱讀大師們的經典著作,總能收到事半功倍之效。一位優秀的程式設計師,或許就是一名好的閱讀者。好的閱...