軟件工程師必讀的10本書,你讀了嗎?

全文共4614字,預計學習時長14分鐘

來源:Pexels

 

若想成爲一名優秀的軟件工程師,在努力寫代碼的同時,“讀代碼”同樣至關重要。

 

在當代社會,人們的日常生活因各種各樣的新奇玩意兒而變得豐富多彩,比如播客、視頻以及博客等等。儘管如此,仍然有許多人會選擇捧讀一本好書。筆者作爲一名資深“書蟲”,也已經涉獵過許多技術類書籍,例如軟件工程。至今,筆者仍然在試圖通過閱讀以求新知。

 

軟件工程領域的發展日新月異,今天的熱門可能不久後就淪爲明日黃花,因此要在該領域尋得一本好書,實爲不易。尤其是如果要找一本與某一特定編程語言相關的書目,則更爲艱難。

 

然而,在該領域也有一些書籍歷久彌新,比如那些探討元主題、設計模式或者一般思維模式的軟件工程類書籍。

 

在下文筆者列出的書單中,就包括目前最熱門、最暢銷的軟件工程類書籍。下文所推薦的書目非常經典,至今依舊光彩熠熠,並且頗受高級軟件工程師們的推崇,因此常將其推薦給初級開發人員。在當今這個時代,時間的確很寶貴,尤其是對軟件工程師而言。但是,如果真的能花上些許時間拜讀一下這些書目,則無論對於自身的提高還是未來的職業生涯而言,必將有所裨益。在這裏有必要說明一下,下文書目的排列順序完全隨機,與其重要性的大小無關,因爲每本書均有其側重且值得被推薦。

 

注意:下文出現的所有鏈接皆非附屬鏈接。

 

《代碼大全(第二版)》(Code Complete)

 

 

 

《代碼大全(第二版):軟件構建之實踐指南》(Code Complete: a Practical Handbook of Software Construction, 2ndEdition)出自著名IT暢銷書作者史蒂夫·邁克康奈爾(SteveMcConnell)之手,完全稱得上是“有生之年”系列圖書之一,因爲幾乎每一個程序員都曾拜讀過此書。

 

此書對軟件構建進行了全面分析,邏輯嚴密,因此在業界頗受好評。在本書中,涉及的話題主要涵蓋軟件設計、編碼、調試以及測試等。

 

因此,對於有着一至三年專業編程經驗的工程師而言,這本書尤其值得閱讀,因爲他們會受益良多。但是筆者認爲,即使是軟件編程的初學者也不妨試讀一下,因爲他們可以從這本書中獲得更多的自信,以面對未來的軟件編程工作。

 

指點迷津:軟件開發人員必須要有能力處理複雜事物,編寫易於維護的代碼,並且手不釋卷——這不僅僅是爲了自己,也是爲了他人。

 

《程序員面試金典》(Cracking the Coding Interview)

 

 

 

無論參加編程面試是出於個人興趣還是職業需求,《程序員面試金典:189道知名科技公司編程面試真題及解答》(Cracking the Coding Interview: 189 Programming Questions &Solution)都是一本非常值得推薦的編程類書籍。本書作者蓋爾·拉克曼·麥克道爾(GayleLaakmann McDowell)是一位經驗豐富的軟件工程師,不僅親身參與過編程面試,而且還曾擔任過面試官。在這本書中,她幫助面試者尋找問題背後的細枝末節,並將問題進行拆分,從而更好地理解各個概念。

 

此外,作者還在書中講解了189道知名企業的編程面試真題及答案,爲即將參加編程面試的人們助力。

 

《代碼整潔之道》(Clean Code)

 

 

 

“Bob大叔”羅伯特·馬丁(RobertC. Martin)的著作《代碼整潔之道:整潔代碼的敏捷實踐方法》(Clean Code: A Handbook of Agile Software Craftsmanship),是全世界最受追捧的編程書目之一。作者希望通過此書來教授軟件工程師如何編寫整潔的代碼。在此書中,作者通過許多實例講解來告訴人們如何重構現有代碼,從而使其更加易於閱讀與維護。但值得注意的是,本書主要針對的是Java編程語言。雖然本書所涉及的某些模式與方法也同樣適用於一般編程或其它編程語言,但其主要受衆仍然是Java程序員。

 

另外同樣值得注意的一點是,由於此書著於2009年,且受限於現有的工具與IDE,因此書中某些內容已經過時,例如代碼格式部分。但總體來說,這本書仍然值得拜讀。

 

《重構(第二版)》(Refactoring)

 

 

 

《重構(第二版):改善既有代碼的設計》(Refactoring: Improving the Design of Existing Code, 2nd Edition)的作者是世界軟件開發大師馬丁·福勒(Martin Fowler),正如在20前的第一版中一樣,在這第二版中作者也首先向公衆闡述了何爲“重構”。在此書中,作者總結了人們可能會有的疑問,並一一予以解答,具體如下:

 

· 爲什麼應該重構代碼?

· 如何辨別哪些代碼需要重構?

· 如何成功重構代碼?

 

在閱讀此書後,人們將能更好地理解重構的過程及其一般原則,並將其快速應用於自己的代碼庫。另外,此書的讀者可能還會額外獲贈一個靈敏的“狗鼻子”,當自己的隊友寫的代碼亟需重構時,這個鼻子就能立馬聞出來並提醒對方。

 

《Head First設計模式》(Head First Design Patterns)

 

 

 

編程著作《Head First設計模式:重視大腦的學習指南》(Head First Design Patterns: A Brain-Friendly Guide)由埃裏克·弗里曼(Eric Freeman)、伯特·貝茨(Bert Bates)、凱西·塞拉(Kathy Sierra)與伊麗莎白·羅伯森(Elisabeth Robson)合作完成,主要教授人們設計模式與方法,以供其他開發人員用於創建可重複使用且靈活度高的功能性軟件。在該書中,有許多高質量的可視化圖表,通過這些圖表,讀者們能夠更加容易地學習新概念。

 

對於想要了解工廠、單例或者依賴注入等模式的人而言,這本書絕對是不二選擇。由於本書所使用的案例均由Java寫成,因此讀者最好能對該語言或其它面向對象的編程語言有所瞭解。

 

《企業應用架構模式》(Patterns of Enterprise Application Architecture)

 

 

 

《企業應用架構模式》是馬丁·福勒的又一力作,主要旨在探討企業應用發展的實踐。在本書中,前一部分主要是關於如何開發企業應用的教程;之後,作者又提供了40多種模式,用以解決在創建企業應用過程中可能會遇到的常見問題。此外,書中還包含許多UML圖以及Java代碼或C#代碼示例。

 

通過閱讀此書,人們將能夠對企業應用進行分層,獲悉組織業務邏輯的主要方法,使用MVC模式來組織Web應用,並且在多事務運行時處理併發數據。

 

然而,這本書正逐漸淘汰於時代無情的洪流中,因此許多現代術語都未及時更新,例如REST、雲端、JSON等。儘管如此,此書仍然不啻爲一本好書,但在真正閱讀時要注意取其所長,棄其所短。

 

《修改代碼的藝術》(Working Effectively with Legacy Code)

 

 

 

《修改代碼的藝術》是世界級計算機專家邁克爾·費瑟(Michael Feathers)的經典之作,作者在書中提供了許多策略用於處理未經測試的大型遺留代碼庫。在這時,或許許多人都會心生疑惑:已經到2020年了,人們一直都有整潔且易於維護的代碼和微服務,難道處理遺留代碼還算得上什麼大問題嗎?實際上,事情絕非如此簡單。目前對於大部分公司而言,遺留代碼問題仍然是一大挑戰。

 

通過閱讀此書,人們將能夠理解修改軟件的一般機制,例如添加特性、修正缺陷、優化性能、改進設計等。除此之外,讀者也能學會如何準備遺留代碼的測試,以及如何確定哪些代碼需要修改。

 

在本書中,作者還提供了包含Java、C++、C和C#的示例,並詳細介紹瞭如何處理非面向對象的遺留代碼。

 

《代碼整潔之道:程序員的職業素養》

 

 

 

(The Clean Coder)《代碼整潔之道:程序員的職業素養》(The Clean Coder: A Code of Conduct for Professional Programmers)是“Bob大叔”的另一著作,書中闡述了軟件工藝的技術、原理、工具和實踐,並且提供了一些關於估算、編碼、重構與測試的實用建議。

 

在閱讀本書後,程序員們將能夠更好地處理矛盾,緩解緊迫的日程表,以及應對不近人情的上司。此外,他們也能夠學會如何高效管理時間,長期應對工作壓力,以及避免身體或精神上的崩潰。最後,讀者也能從這本書中學會如何做到流暢編碼,以及如何在開發人員與團隊之間培養一種合作共贏的良好氛圍。

 

雖然此書在業界聲譽頗高,但筆者自覺其並非金科玉律。例如,書中包含許多未經證實的事件與假定情況,並且常會由此得出結論稱,軟件開發人員最終要爲自己的工作全權負責。爲此,書中竟然提出瞭如下建議:開發人員編寫的代碼如果出了問題,則由該開發人員對因此錯誤而受損的公司進行經濟補償。

 

因此筆者建議,閱讀此書時注意仔細甄別,披沙揀金。

 

《算法導論(第三版)》(Introduction to Algorithms)

 

 

 

《算法導論(第三版)》由托馬斯·科爾曼(Thomas H. Cormen)、查爾斯·雷瑟爾森(Charles E.Leiserson)、羅納德·李維斯特(Ronald L. Rivest)與克利福德·斯坦(Clifford Stein)合作編撰而成,被譽爲“計算機算法的聖經”,可用於指導各種算法。《算法導論》一書所涵蓋的內容包羅萬象,並且受衆廣泛,無論是“菜鳥”還是“老司機”皆可入坑。此外,書中措辭言簡意賅,涵蓋主題豐富多樣。然而,此書內容偏複雜,因此不易消化。

 

具體來說,書中涉及的主題包括數據結構、圖論、計算幾何學、快速算法,以及用於處理複雜任務的多項式時間算法等等。雖然書中還包含一些僞代碼示例,但筆者認爲,它依舊是一本經典的理論著作。

 

《程序員修煉之道》(The Pragmatic Programmer)

 

 

 

《程序員修煉之道》曾是筆者讀過的最重要的書目之一。無論是在技術上還是專業領域,該書都熱心地建言獻策,最後不僅協助筆者完成了衆多項目,而且也讓筆者自身得以進步與發展。

 

即使是在現今2020年,該書也仍舊與時俱進,尤其是最新修訂的“20週年典藏版”。書中,作者還談論了諸多話題以探討一個當代程序員應具備哪些素質,比如個人責任感、專業技能以及職業發展。

 

通過閱讀此書,人們將能夠獲知持續學習的定義及其重要性,編寫靈活、動態、可適應的代碼,解決併發代碼問題,防範安全漏洞,以及進行有效的測試等等。

因此,如果必須推薦一本書,那麼《程序員修煉之道》必定是筆者的首選。

 

綜上:在全世界程序員的圈子內,上述書單中的作品最受追捧。如若要爲讀者從中挑選一本,那麼毋庸置疑,一定是安德魯·亨特(Andrew Hunt)執筆的《程序員修煉之道》。

來源:Pexels

 

“Bob大叔”的系列著作雖然在業界赫赫有名,也廣受同行青睞,但筆者仍然選擇批判性地去閱讀,因爲其中某些觀點,筆者不敢苟同。

留言 點贊 關注

我們一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 “讀芯術”

(添加小編微信:dxsxbb,加入讀者圈,一起討論最新鮮的人工智能科技哦~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章