內卷嚴重,最近一直有人問我,怎麼才能成長成為一名真正的軟體架構師,我沉思良久。
回首看從業20年所走過的路,從技術小白一步一步成長起來,做了十多年的架構師和首席架構師,
做CTO也六七年了,略有一些心得和感悟,有些在公眾號:架構設計一起學
只是“軟體架構師成長之路”,這個話題太大,涉及到方方面面,只能抓大放小,
說一說主幹的路,難免掛一漏萬,請各位海涵。
基本分析思路
為了把“架構師成長之路”說清楚,我們需要一個基本的分析思路:
1:我們先來看一下架構師日常工作都做些什麼?
由此推匯出架構師需要具備哪些基本的能力?
這些是我們的目標,至少要具備這些能力,你才能成為真正的架構師。
2:接下來,再分門別類,具體分析如何才能具備或培養出這些能力。
基本思路如圖:
當然,由於軟體架構師又分很多分支方向,比如:基礎框架架構師、業務系統架構師、大資料系統架構師等等;
每個分支方向又有不同的技能要求,所走之路也不盡相同。
我們這裡以最常見的業務系統架構師來做說明,大家求同存異,大方向上,只要是做技術的架構師,大致還是類似的。
假定一個場景:
為了更好的說明,我們假定一個場景,比如:網際網路大廠要新切入某個賽道,或者是公司接了一個大專案,
需要專職的架構師團隊進駐,你就是首席架構師,帶領著架構團隊,前往完成架構設計的任務。
提前說明:接下來,我們只聊技術方面的能力,至於其它的,就先忽略,比如:溝通能力;團隊管理能力;專案管理能力;技術領導力 等。
階段一:業務理解
你首先要做的,就是和產品團隊溝通、理解業務,理解產品邏輯,理解具體需求。
需要的能力:需求調研和分析的能力;產品業務設計的能力 等
這個階段是以產品團隊為主,架構師需要仔細聆聽,深入理解,並結合自己的經驗,提出意見和建議。
所以需要的技術能力是需求調研的能力為主,需求分析能力和業務設計的能力為輔,主要是要搞清楚 客戶/產品團隊 到底想要什麼。
階段二:需求分析
接下來,就是要組織架構團隊,深入分析業務需求,構建業務架構
需要的能力:需求深入分析的能力;產品業務設計的能力 等
這個階段是以架構師為主,深入、準確的理解業務需求,形成系統的業務架構 和 完整的功能清單。
從架構和開發人員的角度,準確理解 整個系統 要做什麼,系統邊界在哪裡,系統的功能都有哪些。
這是接下來架構設計和系統開發的目標和任務,一定不要有大的偏差,否則後面的工作全是瞎做。
搞清楚了 客戶或產品團隊 要什麼,也明確了技術團隊要做什麼過後,該來思考:如何做的問題了。
階段三:技術選型和技術預研
首先就要來做技術選型,這個是考驗軟體架構師技術能力和架構經驗的第一關,通常需要綜合考慮
要達成的目標、團隊的能力、技術的適用性、時間限制、財務成本、現有的基礎架構 等等。
比如:產品團隊要求先上一個最小化可行產品,時間可能就1-2個星期,你就不可能搞一個特別複雜的架構,
但你要做好可擴充套件性的設計,以利於後期的演進
需要的能力:技術決策的能力、技術架構設計能力;需要你有較好的技術儲備,技術的廣度和深度,還有較好的架構設計經驗。
接下來就該做技術預研了,當然這個階段有可能不需要,需要預研的主要是針對技術的重難點、或者是團隊不熟的技術。
需要的能力:快速深入的學習技術的能力
階段四:架構設計
業務理解清楚了,技術也準備好了,接下來就該做架構設計了。
整體系統的架構設計、公共基礎架構設計、每個子系統或微服務的架構設計、快取體系設計、MQ非同步訊息體系設計、整體安全設計 等
還要綜合考慮:安全、分散式、可擴充套件、高效能、高可用、高併發、大資料量等的處理
需要的能力:技術架構設計能力、部署架構設計能力 等
階段五:架構驗證
接下來,就該做技術架構驗證了,主要是從技術層面,具體落地實現,以驗證整個技術架構是可行的,是能達成設計目標的。
這個階段有可能放到階段六之後去做,或者是跟階段六並行。
階段六:詳細設計
架構設計好了過後,就該深入到每個子系統或微服務,進行詳細的實現設計。
涉及的東西很多,比如:分層、分包、分模組、API設計、業務流實現設計、資料儲存設計、快取設計、非同步應用設計 等
也需要綜合考慮:安全、分散式、可擴充套件、高效能、高可用、高併發、大資料量等的處理,
這些不僅僅體現在架構上,更要體現到具體落地實現上。
需要的能力:API設計能力、業務流實現設計能力、資料儲存設計能力等等,這個就太多了,
綜合一下,統稱:具體的技術實現設計能力
也就是 通過架構設計,搭建好了系統的架子;通過詳細設計,搭建好每個模組具體實現的架子
階段七:設計講解
接下來,架構師需要把架構設計和詳細設計的成果,向整個開發團隊做講解說明,讓整個團隊達成一致的理解。
雖然有詳細的設計文件,但總有一些思想性的東西,是很難完全通過文件傳達到位的。
需要的能力:架構設計講解的能力
階段八:編碼實現
接下來就進入開發階段了,架構師可能會承擔一部分開發的任務,主要是核心的、重難技術點的實現、還有核心基礎功能的實現等
需要的能力:優秀的編碼開發能力
在具體開發的過程中,架構師可能會發現設計上不太好的地方,還會返回去修改和優化架構設計,不斷重構,使得架構設計更適合系統。
階段九:後續其它
至於後面還有的一些階段,比如測試、部署、運維等,架構師主要是起到一個諮詢和指導說明的作用,就不去詳述了。
總結起來,要做一個真正的軟體架構師,必須具備如下的一些基本的技術能力(包含但不限於):
需求調研和分析的能力
產品業務設計的能力
需求深入分析的能力
技術決策的能力
技術架構設計能力
部署架構設計能力
具體的技術實現設計能力
架構設計講解的能力
優秀的編碼開發能力
到這裡,大概你對軟體架構師必備的技能有所瞭解了,後面我們再來一個一個展開,詳細說說這些能力又包含哪些具體的能力。
然後具體分析如何才能具備或培養出這些能力,從而讓你走上真正的架構師之路!突破內卷,盡請期待!!!
你也可以加入我的公號與我互動交流:架構設計一起學