您應該在2021年閱讀的10本軟件工程書籍
隨著2020年塵埃落定和新的一年來臨,很顯然,我們將再次在年初度過大部分時間在室內度過。有什么比學習和閱讀書籍更好的花費方式呢?
在本文中,如果您對軟件工程感興趣,我將與您分享10本書,您應該在2021年閱讀。有些書是相當技術性的,但是總的來說,清單應該對任何人都開放。清單的排列順序不是從最好到最壞,而是書的順序。讓我們開始吧!
The Read Aloud Cloud
從光開始,Forrest Brazeal的《朗讀云》將自己描述為內部技術的無辜指南。如果您從未聽說過"云"及其對IT的影響,那么這本書非常適合您!

> The Read Aloud Cloud by Forrest Brazeal
該書完全用押韻寫成,并使用卡通漫畫,解釋了云如何在引擎蓋下工作以及人們為保持云的運行所做的工作。聽起來可能有些愚蠢(有時是愚蠢的),但是即使您沒有IT方面的知識,這本書實際上也可以很好地解釋技術概念。這也是很好的對話起點,很高興向您的父母或配偶解釋您整天在電腦后所做的事情。
Clean Code
羅伯特·C·馬丁(Robert C. Martin)的干凈代碼(俗稱"鮑勃叔叔")被許多人視為軟件開發人員的經典讀物。這本書摘錄了什么是干凈的代碼以及如何編寫。干凈的代碼很重要,因為它是我們防范巨大混亂的唯一武器。如果您曾經在第第十個項目中發現自己要重寫舊版代碼庫,而只是為了重新陷入困境而陷入困境;這本書適合你。

> Clean Code by Robert C. Martin
盡管我應該警告您,但請引用作者的話:"在閱讀本書時,要做好努力。這不是一本好書,您可以在飛機上閱讀并在著陸之前讀完。這本書將使您努力工作。"
實踐中的軟件架構
無論您扮演什么角色,在職業生涯中的某個時候,您都會遇到軟件架構。這是一個充滿很多問題的復雜領域:象牙塔建筑師,泥濘不堪的大瀑布,瀑布工程的趨勢等等。這就是為什么我認為人們對軟件體系結構的實踐教育比設計模式更為重要。

> Software Architecture in Practice by Len Bass, Paul Clements, and Rick Kazman
實踐中的軟件體系結構是對軟件體系結構的出色概述。這不僅是一本教您如何微服務如何工作的"模式"書。取而代之的是,這本書著重于可用于構建體系結構的過程和技術:與利益相關者討論,需求如何與體系結構相關以及如何就體系結構進行溝通。因為從本質上講,這就是架構的全部意義:就驅使構建系統原因以及構建系統以實現這些要求的需求進行溝通。
該書更像是參考手冊,不應從頭到尾全部閱讀。本書前言中有一個讀者指南,其中列出了您應閱讀的章節,具體取決于您的背景。
精益創業
作為軟件工程師或開發人員,您最關心的是構建以最有效的方式解決問題的系統。但是,您是否曾經考慮過,所構建的內容可能實際上并不能解決一個真正的問題,因此是不必要的?

> The Lean Startup by Eric Ries
在此前提下,精益創業公司提出了一種開發新產品和創新產品的方法,并仔細考慮您是否在構建正確的產品。并非所有公司都是創業公司。但是,即使是大型組織中的創新項目和部門也可以學習和應用啟動技術。這本書邀請您退后一步,看看更大的圖景,當我們被吸引來解決特定問題時,我們往往會忘記這些圖景。
域驅動設計
另一個經典著作,埃里克·埃文斯(Eric Evans)寫了一本書,講述如何使軟件的設計與您要解決的問題域的思維模型相匹配。域驅動設計位于軟件開發的本質上:解決業務問題。

> Domain-Driven Design: Tackling Complexity in the Hear of Software by Eric Evans
本書涵蓋了如何思考問題領域,用于討論問題的語言以及組織方式。您的軟件,以反映您對軟件的不斷了解。結合了干凈的代碼和軟件體系結構,這些技術應該出現在每個軟件工程師的工具箱中,以解決軟件的實際問題。
鳳凰計劃
Bill是Parts Unlimited的IT經理。今天是星期二早上,在他開車去辦公室時,比爾接到了首席執行官的電話。
該公司的新IT計劃(代碼為Phoenix Project)對于Parts Unlimited的未來至關重要,但是該項目大大超出預算,而且很晚。首席執行官希望Bill向他直接報告并在90天內解決問題,否則Bill的整個部門將被外包。

> The Phoenix Project by Gene Kim, Kevin Behr, and George Spafford
鳳凰城項目講述了一個IT組織脫軌的故事,以及使它重回正軌的流程。我知道這本書是關于IT運營的,并不是最令人興奮的話題。但是《鳳凰計劃》將一個枯燥的主題變成了可以理解的敘述。再一次回退一步,看看那些花哨的綠地項目之外的大局,并考慮如何將您的寫作軟件維護和用于運營。
現場可靠性工程
按照上一本書的趨勢,站點可靠性工程還專注于設計和開發后的軟件生命周期。SRE解釋了Google的運營方法,他們可以使開發人員擁有自己所構建軟件的日常運行狀況。

> Site Reliability Engineering: How Google runs production systems
目的是彌合希望盡快交付產品的開發團隊與不希望任何東西投入生產的運營團隊之間的差距。在此系列文章中,Google網站可靠性團隊的主要成員解釋了他們對整個生命周期的承諾如何以及為什么使公司成功構建,部署,監控和維護了世界上最大的一些軟件系統。
實用程序員
實用程序員涵蓋了廣泛的主題,從對您的工作和職業發展的個人責任到體系結構技術,以使您的代碼靈活和可維護。

> The Pragmatic Programmer by Andrew Hunt and David Thomas
如果我清單上的其他書籍似乎不太合適,那么The Pragmatic Programmer可以更全面地介紹軟件工程領域,并涉及其他書籍所涵蓋的許多更詳細的主題。
重做
ReWork是該清單上較輕的書籍之一。從某種意義上講,這本書并沒有像傳統小說那樣寫。這本書更多地是作者在37Signals工作期間收集的見解的集合。

> Rework by Jason Fried and David Heinemeier Hansson
37Signals(現稱為Basecamp)是全球規模較小的公司之一,但也是世界上最著名的網絡公司之一,部分原因是他們發明了一個叫做Ruby on Rails的小框架。鑒于故意將小公司和大名望結合起來的奇怪組合,Rework的作者對當今的工作和業務狀況提供了獨特的觀點和見解。
設計數據密集型應用
在當前軟件工程時代,數據無處不在,數據為王。越來越多的不只是設計優秀的應用程序,而且還涉及從這些應用程序創建和捕獲數據流以獲取業務見解。

> Designing Data-Intensive Applications by Martin Kleppmann
設計數據密集型應用程序提供了一種數據工程的小型百科全書。它涵蓋了相當廣泛的主題,并討論了數據密集型分布式系統的許多原理和問題。鑒于數據變得越來越重要,因此提高您在該領域的知識絕對有用。
結論
接下來,我建議您作為2026年的軟件工程師閱讀這10本書。這是我過去閱讀過的一些書,我計劃在來年閱讀其中的一些書。希望這份清單能激發您選擇其中一本書并學習新知識。如果您有自己的書本建議,請訪問評論,我們很樂意聽取他們的建議!
原文鏈接:https://medium.com/codex/10-software-engineering-books-to-read-in-2021-181a4f093e60























