開發者必讀的十大經典書籍

csdn發表於2017-08-27

  快速迭代的資訊社會,技術前進的速度遠超人類歷史上的任何時期,技術攫取呈現出碎片化的特徵,開發者更傾向於通過網路搜素尋求問答。然而,這種淺嘗輒止的閱讀方式,會給人深沉的浮躁感,難以做到為自己切實所用。

  新語言、新工具持續更替,讓人目不暇接,學習過程中必定伴隨著各種瑣碎的問題。事實上,許多偉大的技術人在以前就遇到過同樣的難題,並且提出了相應的策略和解決方法。雖然具體問題具體對待,但其中蘊含的思考方式,所凝結的智慧成果,只會歷久彌新,給開發者們以新的啟迪,提綱挈領,助力自身的技術升級。

  本文總結了業界的十本經典書籍,我們來一一探索吧。

  《The Pragmatic Programmer》


Andrew Hunt,David Thomas 著

  《The Pragmatic Programmer》,即程式設計師修煉之道。這本書直擊程式設計陳地,適用於所有程式語言,建立使用者樂於接受的、可工作和易維護的程式碼。它不僅會改變你的程式設計習慣,還會改變你的性格。Andrew Hunt在多個行業工作過,電信、銀行、金融服務和公用事業,還有一些外來領域,如醫學成像、圖形藝術、網路服務。他擅長於將已驗證的技術實踐和前沿技術相結合,創造新奇而實用的方法。所以,這本書的見解涉及了許多有趣的領域,從個人責任到職業發展,直至保持程式碼靈活和易於改編重用的架構技術,開發者能夠從中學到防止軟體變質、消除複製知識的陷阱、編寫靈活、動態和易適應的程式碼、避免出現相同的設計、用契約、斷言和異常對程式碼進行防護等內容。

“程式設計師入門書、終極書、DRY、KISS···從做人到做程式設計師,這本書教給了你一切,你所需的只是遵循書上的指導。”——知乎,蕭井陌
“程式設計師技藝具備的古老特點,此書表達的很清楚。此書涉及了軟體工程角度,個人技藝如何配合的方方面面。”——豆瓣讀書,皁角菌

  《The Mythical Man-month》


Frederick Brooks 著

  《The Mythical Man-month: Essays on Software Engineering》,即《人月神話:軟體專案管理之道》。這本出版於1970年的書被奉為軟體行業的《聖經》,即使在現在看來也是字字珠璣。Frederick Brooks是1999年的圖靈獎得主,致辭中曾提到,“今天我們所看到的計算機體系結構、軟體工程,以及三維計算機圖形,均受惠於布魯克斯的開創性工作,是他改變了這些領域的面貌。”他在軟體工程領域的最廣為人知的經典著作《人月神話》,讓軟體工程學真正進入人們的視野。

  《人月神話》對軟體開發過程的幾個重要關鍵點,提出了獨到的見解:提倡外科手術式的團隊組織;軟體專案的核心概念要由很少的人來完成,以保證概念的完整性;軟體開發中最大的風險往往不是技術的缺陷,而是缺少溝通;在開發中,要保持適度的文件;在軟體開發的過程中,只有適度改進,沒有包治百病的銀彈。

“書中記述的前輩們在解決這些窘迫所體現的才智和熱情,是永遠值得後人借鑑的,也將啟迪我們開拓未來之路。”——豆瓣,pythia
“Software Development 的聖經。如果只能讀一本書,那麼是這本書。”——豆瓣,浪人BabyL

  《Clean Code: A Handbook of Agile Software Craftsmanship》


Robert C·Martin 著

  《Clean Code: A Handbook of Agile Software Craftsmanship》,即《程式碼整潔之道》。軟體質量,不但依賴於架構及專案管理,而且與程式碼質量緊密相關。這一點,無論是敏捷開發流派還是傳統開發流派,都必須承認。Rober C.Martin,Object Mentor公司總裁,也是物件導向設計、模式、UML、敏捷方法學和極限程式設計領域的資深顧問。作為程式設計領域的佼佼者,他給出了一系列行之有效的整潔程式碼操作實踐,並提出一種觀念:程式碼質量與其整潔度成正比。本書閱讀物件為一切有志於改善程式碼質量的程式設計師及技術經理,內容涵蓋從命名到重構的多個程式設計方面,雖然書中所有的例子都用的Java,但其經驗適用於任何程式語言。

“用整理程式碼的決心替代創造廢話的衝動。你會發現自己成為更優秀、更樂觀的程式設計師。”——豆瓣,陳
“本書中提倡寫程式碼猶如寫文章,對此觀點我印象深刻!如何才能寫出整潔程式碼呢?總的原則無非是KISS(Keep It Simple Stupid)。”——豆瓣,Wuqifu

  《The Clean Coder: A Code of Conduct for Professional Programmers》


Robert C·Martin 著

  《The Clean Coder: A Code of Conduct for Professional Programmers》,即《程式碼整潔之道:程式設計師的職業素養》,這是本列表中Robert C·Martin的第二本書,建議在上一本書之後閱讀。成功的程式設計師在以往的工作和生活中都曾經歷過大大小小的不確定性,承受過永無休止的壓力。Robert C. Martin以自己40餘年程式設計生涯的心得體會,介紹了真實軟體技藝中的各項原則、技術、工具和實踐,展示了怎麼以自豪、自尊和自信的心態進行軟體開發,怎麼取得卓越表現和豐碩成果,怎麼做到有效溝通和確切估算,怎麼以坦誠的心態面對困難,助力專業軟體開發人員具備令人敬佩的職業素養。這本書探討的主題可能不是你希望的,但一定是你需要的。

“創造性的輸入,產生創造性的輸出!這本Bob大叔定義專業程式設計師為目的的書,從個人的精進練習到時間管理,測試,需求,壓力,到理想的團隊,描述作者的程式設計師修煉之道。”——豆瓣,liuwill
“這本不厚的書,給了普通程式設計師走向“專業”的燈塔。知易行難,“專業”的路上總有各種各樣的攔路虎,也許我會再走作者標明瞭的錯路,我也並不孤單,但心裡知道這是錯誤的,不要走遠。每看到這種書,低沉的士氣會再次振奮。”——豆瓣,銀光

  《Refactoring: Improving the Design of Existing Code》


Martin Fowler 著

  《Refactoring: Improving the Design of Existing Code》,即《重構:改善既有程式碼的設計》。Martin Fowler,世界軟體開發大師,在物件導向分析設計、UML、模式、XP和重構等領域都有卓越貢獻,現為著名軟體開發諮詢公司ThoughtWorks的首席科學家。本書揭示了重構的過程,解釋重構的原理和最佳實踐方式,並給出了何時以及何地應該開始挖掘程式碼以求改善。書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的程式碼變換手法的動機和技術。其中提出的重構準則將幫助開發者一次一小步地修改程式碼,從而減少開發過程中的風險。

“大師Martin Fowler的經驗之談,看後有種醍醐灌頂、欲罷不能的感覺。重構也是當今敏捷開發一項不可或缺的技藝,建議所有有設計和專案開發經驗的開發者都應讀一下。”——豆瓣,Kiwi

《Working Effectively With Legacy Code》


Michael Feathers 著

  《Working Effectively With Legacy Code》,即《修改程式碼的藝術》。即使是最訓練有素的開發團隊,也不能保證始終編寫出清晰高效的程式碼。如果不積極地修改、挽救,隨著時間流逝,系統的腐化程度會日積月累。Michael Feathers是世界級的物件導向技術專家,以豐富的軟體專案開發經驗著稱。他以獨到的洞察力,以及多年開發和指導軟體專案所積累的豐富經驗和深厚功力,針對大型的、無測試的遺留程式碼基,提供了從頭到尾的方案,讓開發者能夠更有效地應付它們,將遺留程式碼基改善得具有更高效能、更多功能、更好的可靠性和可控性。本書是一部里程碑式的著作,更是程式碼修改技術的集大成之作,可以大大提高對程式碼和軟體開發的領悟力。

“許多似曾相識的程式碼不斷地出現在書中,而作者舉重若輕的處理手法,正是讓我有拍案驚奇的地方。實際上,每個手法都不是什麼很高超的技法,但正是因為見識過類似的程式碼,才能體會到這種手法的價值所在。”——豆瓣,dreamhead

《Code Complete: A Practical Handbook of Software Construction》


Steve McConnell 著

  《Code Complete》,即《程式碼大全》。真正的一本百科全書——960頁的最新修訂,讓人真切感受到沉甸甸的知識。這是一本完整的軟體構建手冊,涵蓋了軟體構建過程中的所有細節:從軟體質量和程式設計思想等方面論述了軟體構建的各個問題,並詳細論述了緊跟潮流的新技術、高屋建瓴的觀點、通用的概念,還含有豐富而典型的程式示例。書中所論述的技術不僅填補了初級與高階程式設計技術之間的空白,也為開發者們提供了一個有關程式設計技巧的資訊來源,大有裨益。

“作者的寫作風格很客觀很務實。作者把每個章節最吸引人的地方,用巧妙的方法展現出來。並且程式碼構建其實也可以變得非常具有藝術性。現在我很慶幸當初自己看完了它。”——豆瓣,Joshua

  《Head First Design Patterns》


Eric Freeman/Elisabeth Freeman/Kathy Sierra/Bert Bates 著

  《Head First Design Patterns》,即《深入淺出設計模式》。這本書是大多數非技術人員所選擇的程式設計書籍,以詼諧、幽默、圖文並茂、打破傳統著書的方式,由淺入深地詳解了設計模式的精神及重點。這本書涵蓋了解決現實問題所需要的主要模式,幫助開發者建立功能性的、優雅的、可重複使用和靈活的軟體,明確權衡每個模式的利弊。除去大多數書籍都談論到的模式實現方法,本書也解釋了模式設計緣由。全書以Java程式語言為範例,是程式設計課程的最佳教材,其最新版本包括了Lambda中的Java 8更新。

“作者把原本屬於設計模式的來源還給設計模式的學習和應用過程,讓讀者能夠從生活中的例子隨著論述的展開,逐步深入設計模式的核心,這個也是這本書能夠不負其初衷的重要原因。”——豆瓣,Jarod
“讀這本書不僅僅是學習知識,而是在學習一種思考的方法,學習一種認知的技巧,學習一種成長的階梯。總之,用你閒暇的時間來讀這本書,並不亞於你專注的工作或學習。”——豆瓣,曹操

  《Peopleware: Productive Projects and Teams》


Tom DeMarco/Tim Lister 著

  《Peopleware: Productive Projects and Teams》,即《人件:腦力密集產業的人才管理之道》。《人件》和《人月神話》被譽為軟體書中「兩朵最鮮豔的奇葩」。前者關注的是「軟體開發」本身,後者關注的是軟體開發中的「人」。以往不認為是問題的領導問題、開會文化、由不同世代所組成的混合團隊,以及,最常用的工具不見得是助力,反而可能是阻力。以辛辣而幽默的筆觸,加上務實的建議、豐富的專案經驗,這本書一出版就引起轟動,一針見血地指出了團隊管理的問題點──腦力密集產業的核心是人,應該給予這些工作者充分的自由與信任。

“管理,不僅僅是技術,更是充滿人文精神的藝術。《人件》中的一些很精闢的箴言遠遠超過了軟體管理的範疇。沒有大量的數字、精密的論證,也不需要這些。這正是《人件》深入淺出的長處。”——豆瓣,QingRen

  《Soft Skills: The Software Developer’s Life Manual》


John Sonmez 著

  《Soft Skills: The Software Developer’s Life Manual》,即《軟技能:程式碼之外的生存指南》。同樣,這不是一本關於程式設計的,卻是每個開發者都應該讀的書。John Sonmez是“Simple Programmer”網站的創始人,也是軟體開發人員的人生導師,幫助軟體工程師、程式設計師和其他專業技術人員推動事業進步,過上更充實的生活。這本書涉及開發者的生活習慣,又包括思維方式,凸顯技術中“人”的因素,全面講解軟體行業從業人員所需知道的所有“軟技能”:從揭祕面試的流程到精耕細作出一份殺手級簡歷,從建立大受歡迎的部落格到打造自身,從提高自己工作效率到與如何與“拖延症”做鬥爭,甚至包括如何投資不動產,如何關注自己的健康。

“一名成功的軟體開發人員,不能只編寫程式碼,還要有精彩的人生。”——豆瓣,曲天

  參考資料:

相關文章