天天看點

架構師成長路線圖

軟體架構師在軟體開發團隊中扮演着進階的角色,這一角色需要時間和經驗的積累,需要跨職能的技能和知識。除了技術方面的挑戰,還要求架構師具備良好的社交能力。在開始考慮成為軟體架構師的計劃之前,我們先來看看典型的軟體架構師類型:

  • 解決方案架構師/軟體架構師(Solution Architect/Software Architect)—— 低級架構師,通常由之前或現在的進階軟體工程師擔任,負責與業務人員溝通産品的技術設計和架構,開發人員通常都可勝任。
  • 企業級架構師(Enterprise Architect)—— 進階架構師,把控産品“大局”,但很少關注細節。這個職位大多出現在非常複雜的大型軟體産品中,有時甚至直接彙報給CTO。
  • 領域架構師(Domain Architect)—— 這是比較流行的軟體架構師類型,在很多公司都可以看到。這個職位的目的是成為特定用例或技術棧的架構師。例如:雲架構師負責特定的雲供應商,資料架構師負責資料庫的操作、設計、協調,移動架構師負責軟體産品的移動版本,等等等等……
  • 業務架構師(Functional Architect)—— 這類架構師主要負責業務方面,對技術世界了解較少,大多是經驗豐富的業務分析師,設計并上司軟體産品的業務邏輯。

我們可以進一步擴充這個清單,每個公司可能對某個特定職位有不同的名稱。上述給定的軟體架構職位的角色和職責可能因公司而異,但本質是相同的。請看下面的圖表,以便更好的了解不同架構師角色在技術/業務技能和知識方面的關系。

架構師成長路線圖

業務與技術關系圖

總體規劃

到目前為止,有一件事應該非常清楚: 除了那些真正來自業務背景的人,軟體架構師通常是超級進階開發人員。下面是軟體架構師應該熟悉的不同主題領域:

  1. 資料結構和算法—— 基本的程式設計原理對軟體架構師來說應該不成問題,包括數組、隊列、棧、連結清單、不同類型的樹、圖等資料結構,軟體架構師不僅應該熟悉,而且應該能夠識别出在什麼時候應該使用哪個資料結構。優秀的軟體架構師應該知道不同的算法,如搜尋、排序、遞歸、動态規劃等。在日常生活中,沒有架構師會從頭開始編寫“合并排序”算法,或者發明新的資料結構。
架構師成長路線圖

算法導論

《算法導論》是一本全方位介紹算法和資料結構的經典作品。

  1. 技術棧—— 無論是後端還是前端,軟體架構師必須非常了解目前使用的技術棧。學習特定程式設計語言的文法是最簡單的方法,但需要時間積累經驗。不同的庫和架構也是值得了解的寶貴資産。
架構師成長路線圖
  1. 簡潔的編碼 —— 讓軟體系統工作并不是軟體架構師的最終目标。每次評審代碼時,他/她首先想到的問題是: 我能使這段代碼更高效嗎? 我能讓代碼占用更少記憶體嗎? 簡潔的代碼标準是否被正确應用? 我可以使用不同的OOP技術嗎? 《代碼整潔之道》無疑可以幫助我們提高重構技能。
  2. OOP —— 面向對象程式設計幫助我們可以建構更靈活、高效、可讀性高的軟體系統。有經驗的軟體架構師會經常使用這些技術(如果技術堆棧合适……)。
架構師成長路線圖
  1. 軟體設計模式—— 說到面向對象,不應該忘記不同的設計模式的重要性,它們首先是由GoF[2]收集和引入的。了解這些設計模式肯定會幫助我們更好的利用軟體系統的面向對象設計。
架構師成長路線圖

架構整潔之道

從R.C.Martins的著作《架構整潔之道》中可以學到如下原則。

  1. S.O.L.I.D.原則 —— 這一元件原則是軟體元件設計中需要考慮的基本技術。有經驗的軟體架構師如果掌握了這些原則,可以很快識别出代碼中的違規行為。
  2. 高内聚/低耦合原則 —— REP、CRP、ADP等原則對于軟體架構師來說非常重要,尤其是在建構、整合/解耦插件時,這些技術可以處理更進階的設計。
架構師成長路線圖

軟體構架實踐

  1. 系統設計 —— 有很多軟體體系架構模式,如:主從、用戶端-伺服器、微服務、MVC、單向體系架構等,需要根據不同的前後端項目做出選擇。當然不太可能有人能夠掌握所有這些模式,但是根據項目的不同,軟體架構師應該精通底層設計,領域驅動設計可以作為最基本的出發點。
  2. 文檔 —— 這是軟體架構師日常工作中的重要環節。繪制不同的UML圖,ARC42文檔是這個職位不可避免的工作。這方面有很多工具,如:
  • ​​draw.io​​[3]—— 簡單易用的免費工具
  • ​​PlantUML​​[4]—— 提供Eclipse、Intellij等IDE插件,可以通過腳本繪圖,非常有用,也是我最喜歡的工具。
  • ​​yEd​​[5]—— 很友善的工具,可作為桌面應用程式運作。
  • ​​MS Visio​​[6]—— 擁有豐富的功能,但不是免費的!
  1. 證書—— 對于軟體架構師來說,沒有太多的認證選擇,但國際軟體架構資格認證委員會(iSAQB®)提供了Certified Professional for Software Architecture(CPSA®)認證計劃,該認證得到全球認可。

正如從上面的清單中可以看到的那樣,成為軟體架構師需要付出時間和精力,但這絕對是可行并且值得的:)。

如果想要了解更多軟體架構方面的主題,請參閱下面的清單。

相關文章:

  1. ​​Software Architecture Patterns for Front-End Development​​[7]
  2. ​​Software Architecture Cheat Sheet for Daily Usage​​[8]
  3. ​​How to apply Component Cohesion Principles to Spring Boot Application​​[9]
  4. ​​How to apply SOLID Software Design Principles to Spring Boot Application​​[10]

繼續閱讀