天天看點

infoq_InfoQ編輯推薦讀物清單

infoq

最近,我們在InfoQ編輯團隊中進行了一次對話,讨論了我們最推薦給InfoQ讀者的書籍,這些書籍基于我們認為對程式員,架構師和管理人員影響最大的書籍。 這是我們最終同意的十六本書的最終清單,以及其他一些技巧,以及最初建議它們的編輯的評論。

亞曆克斯·布萊維特(Alex Blewitt)

《極限程式設計入門》(Kent Beck)是XP的不錯的入門,即使您不贊成“靈活萬能”的方法,也可以很好地閱讀。 可能不是參考文獻。

我的參考指南是《算法入門》 (Cormen / Leiserson / Rivest / Stein),這本書非常密集,但非常有價值。

約翰·史密斯(John Smith) 陷入困境的IT項目可能是您以前從未遇到過的項目,但實際上解釋了在管理項目時可能出錯的許多事情。 作為您目前正在研究的項目的記分卡,它也很有趣...

不過,我認為可能值得觀察的是,這取決于您對哪種書類型(或應該被推薦)的經驗水準。 肯特(Kent)的XP書适合新手和不熟悉靈活的人使用,但科克本(Cockburn)的書可能更适合經驗豐富的人。 同樣,我不會對完整的新手進行算法介紹,但是,如果您想知道如何實作B樹或了解算法的複雜性度量,則必不可少。

黛博拉·哈特曼

在靈活軟體開發的高度協作環境中,Jean Tabaka撰寫的《 協作說明:軟體項目負責人的便利技能》一書提供了解決棘手的管理問題(如沖突,人際溝通和時間限制)的答案。 如果您讨厭會議和/或認為會議應該有所改善,那麼您必須閱讀本書-無論您是否參與靈活項目!

查爾斯·漢布爾

Harold Abelson,Gerald Jay Sussman和Julie Sussman編寫的計算機程式的結構和解釋 :幾年前,當我與朋友聊天時,我被推薦為“ SIC-P”,因為我的編碼能力似乎已經達到平台。 這不是一本特别容易的書,如果您正在尋找快速解決問題的方法,那麼這不是您想要的書。 但是,這是有益的,密集的閱讀,它可能對我的編碼的影響要大于我所閱讀的其他内容。

Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides撰寫的《 Design Patterns》是SIC-P的一本不錯的後續書籍,盡管我承認我第一次閱讀時并不喜歡它。 無可否認,盡管它在一處獲得了豐富的面向對象設計專業知識,但我最初感到其中很多是有趣的理論,我永遠不會真正使用。 随着時間的流逝,盡管我越來越喜歡這些想法,但是當我堅持進行一些設計工作時,我仍然會經常引用它。 強烈推薦。

馬克·萊文森

靈活軟體開發: Alistair Cockburn撰寫的合作遊戲(第二版) 。 可能是我讀過的關于靈活軟體開發的最有趣的書。 它與任何一種方法都不相關,而是Alistair分析遊戲性,個人溝通,團隊合作:所有軟體開發的核心要素。 該書還包括有關軟體外部靈活性的部分,對各種方法的概述以及更多内容。

喬恩·卡岑巴赫(Jon Katzenbach)和道格拉斯·史密斯(Douglas Smith)所著的《團隊的智慧》 -靈活前的一本書,卡岑巴赫和史密斯研究了許多行業中的真正團隊,對這些團隊成功的成因提出了一些真實的分析和嚴格要求。 到本書結尾,您将發現“沒有什麼可以保證高績效團隊的建立。您可以做的最好的事情就是創造條件,以幫助他們形成。” 這本書是我的系列《 Scrum為什麼起作用》的核心。

斯裡尼·彭奇卡拉

《企業應用程式體系結構的模式》,作者 :Martin Fowler:我喜歡這本書,因為它是有關架構師或開發人員在進行典型軟體開發項目時遇到的幾乎所有設計問題的唯一資訊資源。 它可能是最好的模式書(連同“四個設計模式”一書 ),涵蓋了領域邏輯,表示層,管理會話狀态以及對象關系結構和行為模式等主題。 像任何好的資源一樣,無論您仍在使用EJB3之前的J2EE技術​​,JEE還是輕量級的架構(如Hibernate和Spring)或.NET應用程式,本書中讨論的模式都是相關且有效的。 每個開發人員都必須閱讀和擁有的書籍。

埃裡克·埃文斯(Eric Evans)的領域驅動設計 :自從2004年發行以來,這本書一直對軟體開發社群有很好的參考。它強調了使業務領域與軟體設計和開發保持一緻的重要性。 所讨論的一些概念,例如無處不在的語言,模型驅動的設計,有界的上下文和反腐敗層,可以在任何中型到大型商業域中使用,以管理域模型的複雜性。 閱讀本書之後,我開始在适用的項目中應用DDD原理,并且我成功地消除了貧乏的領域模型并以一種更加面向對象的方式處理業務邏輯。 本書中讨論的概念與技術和架構無關,是以可以将它們應用于基于Java,.NET或其他技術的任何軟體開發項目中。 同樣,這本書是我去年發表的“領域驅動的設計和開發實踐” 文章的主要靈感。 對于參與建立或管理業務域的任何軟體開發人員來說,這本書都是必讀的。

企業內建模式:設計,建構和部署消息解決方案作者:Gregor Hohpe和Bobby Woolf:自2004年首次閱讀本書以來,這一直是我最喜歡的書之一。 作者很好地組織和描述了幾種異步設計模式,這些模式在每天的企業應用程式中非常有用,尤其是那些涉及多系統內建的應用程式。 核心讨論是關于各種內建樣式,包括“消息傳遞”,這是異步通信模式的核心。 本書中的示例包括流行的貸款經紀人流程應用程式,該應用程式已在幾個最新的ESB架構中實作。 本書是對最近大多數SOA內建和ESB架構(例如ServiceMix , Mule和Spring Integration )的啟發,它們支援本書中讨論的內建模式。

Peopleware-湯姆·德馬可(Tom DeMarco)和提摩西·李斯特(Timothy Lister)的生産性項目和團隊 :去年,在一位朋友推薦之後,我讀了這本書。 我不得不說這是我讀過的最有影響力的書之一。 在這本書中,作者借助行業示例,調查和統計資料表明,軟體開發中的主要問題是人為的(是以稱為Peopleware),而不是技術(如硬體或軟體)。 他們的理論是,開發人員,設計師和其他腦力勞動者達到一種稱為“流程”的狀态,他們可以在解決複雜問題上取得長足的進步。 但是任何中斷(無論是電子郵件,電話還是漫遊)都将中斷該流程,并且需要一段時間(根據統計資料平均需要15分鐘)才能再次傳回該流程。 根據作者的說法,經理的工作不是使團隊成員工作,而是使他們能夠工作。 自從本書首次出版以來已經有20多年的時間了,即使在所有新的軟體開發技術和架構以及靈活項目管理方法論出現之後,本書中讨論的概念仍然具​​有相關性和有效性。 這是每位經理和負責上司團隊成員的團隊上司者必讀的書。 我強烈建議每位軟體管理者閱讀這本書-不止一次。

沃納·舒斯特(Werner Schuster)

務實的思維和學習:安迪·亨特(Andy Hunt) 重構您的垃圾軟體将務實的程式員的觀點帶到了最終平台:我們頭的灰質。 它包含許多使用Dreyfus學習模型來幫助改善學習,工作等的方法。

機器内部:喬恩·斯托克斯(Jon Stokes)的微處理器和計算機體系結構插圖集,收集了Ars Technica關于CPU和其他技術的多年文章。 喬恩·斯托克斯(Jon Stokes,“漢尼拔”)破解了CPU的黑匣子,并指出了一些有趣的地方-他在現代CPU(例如最近的x86和Power CPU)中做到了。 知道指令融合如何幫助提高重排序緩沖區效率對于冷卻器的讨論非常有用-但是了解記憶體層次結構和緩存行為如何影響現代CPU的性能可能隻會幫助您優化自己。

也可以看看HOPL會議的會議記錄 。 許多論文可以線上獲得,也可以印刷形式獲得。 似乎C式,指令式,花括号語言的單調世界可能被各種範式所加深。 随着這些事情的發展:未來的語言或想法已經存在了數十年。 HOPL論文是許多語言的詳細曆史,這些語言要麼曾引起人們的關注,要麼可能會來臨,例如Smalltalk,Erlang,Lua,LISP或許多其他語言。

艾倫·凱(Alan Kay)關于“小話的早期曆史”的論文提供了很多資訊。 我每年都開始重新閱讀它-不知何故我總是找到新的東西。 在上一讀中,我意識到基于Actors模型的原始Smalltalk到底有多少。

HOPL的論文顯然主要是關于曆史的-但是我發現許多開發人員甚至都沒有發生過的事件和以前開發的技術的基本知識(哦,1995年)。向“有經驗的”開發人員展示40年的技術有點令人不安并看到他們難以置信地喘着粗氣(這樣做的好處是看起來像普羅米修斯,上面舉着新奇的禮物,盡管很快就很無聊)。

瑞安·斯洛博揚(Ryan Slobojan)

有效的Java由約書亞·布洛克:有效的Java被廣泛推崇為Java開發的聖經之一。 它不僅使讀者了解語言,如許多其他書籍一樣,而且了解如何最有效地利用Java語言和API建立快速,可靠,可擴充和可維護的軟體。 許多原則也适用于其他程式設計語言,因為良好的軟體設計的許多原則都是通用的。 我發現,在閱讀本書之後,我以另一種眼光看待了我編寫的代碼-變得更易于閱讀,總的代碼行更少,并且稍後再閱讀時更易于修複錯誤。 。 對于以Java語言進行開發的任何人,我認為這本書都是必讀的書-它不僅告訴您其中的内容,而且還告訴您何時以及如何最有效地使用它。

斯蒂芬·蒂爾科夫(Stefan Tilkov)

我最近讀過的最好的書之一是邁克爾·尼加德的《發行》! –充滿了以謀生為生的人的實用建議。 這本書充滿了戰争故事,顯示了大型系統發生故障的地方,邁克爾利用他豐富的經驗提取了一些常見的反模式,這些問題在幼稚的設計中屢屢發生。 然後,他展示了如何使用适當的模式來解決它們。 我發現這本書非常有趣,僅涉及現實生活中的轶事,并且在您每次建構真正需要工作的系統時都提供了實用的建議。

翻譯自: https://www.infoq.com/articles/recommended_reading_list/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

infoq