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