軟件開發者必讀的10本編程技術書籍推薦
長春軟件開發者必讀的10本編程技術書籍推薦
編者按:人生如逆水行舟,不進則退。開發者想要保持自身的競爭力,做到所向披靡,知識儲備必不可缺。這就意味著,簡單的代碼閱讀遠遠不夠。
快速迭代的信息社會,技術前進的速度遠超人類歷史上的任何時期,技術攫取呈現出碎片化的特征,開發者更傾向于通過網絡搜素尋求問答。然而,這種淺嘗輒止的閱讀方式,會給人深沉的浮躁感,難以做到為自己切實所用。
新語言、新工具持續更替,讓人目不暇接,學習過程中必定伴隨著各種瑣碎的問題。事實上,許多偉大的技術人在以前就遇到過同樣的難題,并且提出了相應的策略和解決方法。雖然具體問題具體對待,但其中蘊含的思考方式,所凝結的智慧成果,只會歷久彌新,給開發者們以新的啟迪,提綱挈領,助力自身的技術升級。
本文總結了業界的十本經典書籍,我們來一一探索吧。
《The Pragmatic Programmer》
《The Pragmatic Programmer》,即程序員修煉之道。這本書直擊編程陳地,適用于所有編程語言,創建用戶樂于接受的、可工作和易維護的代碼。它不僅會改變你的編程習慣,還會改變你的性格。Andrew Hunt在多個行業工作過,電信、銀行、金融服務和公用事業,還有一些外來領域,如醫學成像、圖形藝術、網絡服務。他擅長于將已驗證的技術實踐和前沿技術相結合,創造新奇而實用的方法。所以,這本書的見解涉及了許多有趣的領域,從個人責任到職業發展,直至保持代碼靈活和易于改編重用的架構技術,開發者能夠從中學到防止軟件變質、消除復制知識的陷阱、編寫靈活、動態和易適應的代碼、避免出現相同的設計、用契約、斷言和異常對代碼進行防護等內容。
“程序員入門書、終極書、DRY、KISS···從做人到做程序員,這本書教給了你一切,你所需的只是遵循書上的指導。”——知乎,蕭井陌
“程序員技藝具備的古老特點,此書表達的很清楚。此書涉及了軟件工程角度,個人技藝如何配合的方方面面。”——豆瓣讀書,皂角菌
《The Mythical Man-month》
《The Mythical Man-month: Essays on Software Engineering》,即《人月神話:軟件項目管理之道》。這本出版于1970年的書被奉為軟件行業的《圣經》,即使在現在看來也是字字珠璣。Frederick Brooks是1999年的圖靈獎得主,致辭中曾提到,“今天我們所看到的計算機體系結構、軟件工程,以及三維計算機圖形,均受惠于布魯克斯的開創性工作,是他改變了這些領域的面貌。”他在軟件工程領域的最廣為人知的經典著作《人月神話》,讓軟件工程學真正進入人們的視野。
《人月神話》對軟件開發過程的幾個重要關鍵點,提出了獨到的見解:提倡外科手術式的團隊組織;軟件項目的核心概念要由很少的人來完成,以保證概念的完整性;軟件開發中最大的風險往往不是技術的缺陷,而是缺少溝通;在開發中,要保持適度的文檔;在軟件開發的過程中,只有適度改進,沒有包治百病的銀彈。
“書中記述的前輩們在解決這些窘迫所體現的才智和熱情,是永遠值得后人借鑒的,也將啟迪我們開拓未來之路。”——豆瓣,pythia
“Software Development 的圣經。如果只能讀一本書,那么是這本書。”——豆瓣,浪人BabyL
《Clean Code: A Handbook of Agile Software Craftsmanship》
《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》
《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《Refactoring: Improving the Design of Existing Code》,即《重構:改善既有代碼的設計》。Martin Fowler,世界軟件開發大師,在面向對象分析設計、UML、模式、XP和重構等領域都有卓越貢獻,現為著名軟件開發咨詢公司ThoughtWorks的首席科學家。本書揭示了重構的過程,解釋重構的原理和最佳實踐方式,并給出了何時以及何地應該開始挖掘代碼以求改善。書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術。其中提出的重構準則將幫助開發者一次一小步地修改代碼,從而減少開發過程中的風險。
“大師Martin Fowler的經驗之談,看后有種醍醐灌頂、欲罷不能的感覺。重構也是當今敏捷開發一項不可或缺的技藝,建議所有有設計和項目開發經驗的開發者都應讀一下。”——豆瓣,Kiwi
《Working Effectively With Legacy Code》
《Working Effectively With Legacy Code》,即《修改代碼的藝術》。即使是最訓練有素的開發團隊,也不能保證始終編寫出清晰高效的代碼。如果不積極地修改、挽救,隨著時間流逝,系統的腐化程度會日積月累。Michael Feathers是世界級的面向對象技術專家,以豐富的軟件項目開發經驗著稱。他以獨到的洞察力,以及多年開發和指導軟件項目所積累的豐富經驗和深厚功力,針對大型的、無測試的遺留代碼基,提供了從頭到尾的方案,讓開發者能夠更有效地應付它們,將遺留代碼基改善得具有更高性能、更多功能、更好的可靠性和可控性。本書是一部里程碑式的著作,更是代碼修改技術的集大成之作,可以大大提高對代碼和軟件開發的領悟力。
“許多似曾相識的代碼不斷地出現在書中,而作者舉重若輕的處理手法,正是讓我有拍案驚奇的地方。實際上,每個手法都不是什么很高超的技法,但正是因為見識過類似的代碼,才能體會到這種手法的價值所在。”——豆瓣,dreamhead
《Code Complete: A Practical Handbook of Software Construction《Code Complete》,即《代碼大全》。真正的一本百科全書——960頁的最新修訂,讓人真切感受到沉甸甸的知識。這是一本完整的軟件構建手冊,涵蓋了軟件構建過程中的所有細節:從軟件質量和編程思想等方面論述了軟件構建的各個問題,并詳細論述了緊跟潮流的新技術、高屋建瓴的觀點、通用的概念,還含有豐富而典型的程序示例。書中所論述的技術不僅填補了初級與高級編程技術之間的空白,也為開發者們提供了一個有關編程技巧的信息來源,大有裨益。
“作者的寫作風格很客觀很務實。作者把每個章節最吸引人的地方,用巧妙的方法展現出來。并且代碼構建其實也可以變得非常具有藝術性。現在我很慶幸當初自己看完了它。”——豆瓣,Joshua
《Head First Design Patterns》《Head First Design Patterns》,即《深入淺出設計模式》。這本書是大多數非技術人員所選擇的編程書籍,以詼諧、幽默、圖文并茂、打破傳統著書的方式,由淺入深地詳解了設計模式的精神及重點。這本書涵蓋了解決現實問題所需要的主要模式,幫助開發者創建功能性的、優雅的、可重復使用和靈活的軟件,明確權衡每個模式的利弊。除去大多數書籍都談論到的模式實現方法,本書也解釋了模式設計緣由。全書以Java程式語言為范例,是程式設計課程的最佳教材,其最新版本包括了Lambda中的Java 8更新。
“作者把原本屬于設計模式的來源還給設計模式的學習和應用過程,讓讀者能夠從生活中的例子隨著論述的展開,逐步深入設計模式的核心,這個也是這本書能夠不負其初衷的重要原因。”——豆瓣,Jarod
“讀這本書不僅僅是學習知識,而是在學習一種思考的方法,學習一種認知的技巧,學習一種成長的階梯。總之,用你閑暇的時間來讀這本書,并不亞于你專注的工作或學習。”——豆瓣,曹操
《Peopleware: Productive Projects and Teams》
《Peopleware: Productive Projects and Teams》,即《人件:腦力密集產業的人才管理之道》。《人件》和《人月神話》被譽為軟體書中「兩朵最鮮艷的奇葩」。前者關注的是「軟體開發」本身,后者關注的是軟體開發中的「人」。以往不認為是問題的領導問題、開會文化、由不同世代所組成的混合團隊,以及,最常用的工具不見得是助力,反而可能是阻力。以辛辣而幽默的筆觸,加上務實的建議、豐富的專案經驗,這本書一出版就引起轟動,一針見血地指出了團隊管理的問題點──腦力密集產業的核心是人,應該給予這些工作者充分的自由與信任。
“管理,不僅僅是技術,更是充滿人文精神的藝術。《人件》中的一些很精辟的箴言遠遠超過了軟件管理的范疇。沒有大量的數字、精密的論證,也不需要這些。這正是《人件》深入淺出的長處。”——豆瓣,QingRen
《Soft Skills: The Software Developer’s Life Manual》
《Soft Skills: The Software Developer’s Life Manual》,即《軟技能:代碼之外的生存指南》。同樣,這不是一本關于編程的,卻是每個開發者都應該讀的書。John Sonmez是“Simple Programmer”網站的創始人,也是軟件開發人員的人生導師,幫助軟件工程師、程序員和其他專業技術人員推動事業進步,過上更充實的生活。這本書涉及開發者的生活習慣,又包括思維方式,凸顯技術中“人”的因素,全面講解軟件行業從業人員所需知道的所有“軟技能”:從揭秘面試的流程到精耕細作出一份殺手級簡歷,從創建大受歡迎的博客到打造自身,從提高自己工作效率到與如何與“拖延癥”做斗爭,甚至包括如何投資不動產,如何關注自己的健康。
下一篇:軟件開發工程師必備基礎知識