程式設計師突破內卷大法:聊聊軟體架構師成長之路(乾貨系列,說人話接地氣)

雲飛龍行2021發表於2021-09-02

內卷嚴重,最近一直有人問我,怎麼才能成長成為一名真正的軟體架構師,我沉思良久。

回首看從業20年所走過的路,從技術小白一步一步成長起來,做了十多年的架構師和首席架構師,

做CTO也六七年了,略有一些心得和感悟,有些在公眾號:架構設計一起學

只是“軟體架構師成長之路”,這個話題太大,涉及到方方面面,只能抓大放小,

說一說主幹的路,難免掛一漏萬,請各位海涵。

基本分析思路

為了把“架構師成長之路”說清楚,我們需要一個基本的分析思路:

1:我們先來看一下架構師日常工作都做些什麼?

由此推匯出架構師需要具備哪些基本的能力?

這些是我們的目標,至少要具備這些能力,你才能成為真正的架構師。

2:接下來,再分門別類,具體分析如何才能具備或培養出這些能力。

基本思路如圖:

當然,由於軟體架構師又分很多分支方向,比如:基礎框架架構師、業務系統架構師、大資料系統架構師等等;

每個分支方向又有不同的技能要求,所走之路也不盡相同。

我們這裡以最常見的業務系統架構師來做說明,大家求同存異,大方向上,只要是做技術的架構師,大致還是類似的。

假定一個場景:

為了更好的說明,我們假定一個場景,比如:網際網路大廠要新切入某個賽道,或者是公司接了一個大專案,

需要專職的架構師團隊進駐,你就是首席架構師,帶領著架構團隊,前往完成架構設計的任務。

提前說明:接下來,我們只聊技術方面的能力,至於其它的,就先忽略,比如:溝通能力;團隊管理能力;專案管理能力;技術領導力 等。

階段一:業務理解

你首先要做的,就是和產品團隊溝通、理解業務,理解產品邏輯,理解具體需求。

需要的能力:需求調研和分析的能力;產品業務設計的能力 等

這個階段是以產品團隊為主,架構師需要仔細聆聽,深入理解,並結合自己的經驗,提出意見和建議。

所以需要的技術能力是需求調研的能力為主,需求分析能力和業務設計的能力為輔,主要是要搞清楚 客戶/產品團隊 到底想要什麼。

程式設計師突破內卷大法:聊聊軟體架構師成長之路(乾貨系列,說人話接地氣)

階段二:需求分析

接下來,就是要組織架構團隊,深入分析業務需求,構建業務架構

需要的能力:需求深入分析的能力;產品業務設計的能力 等

這個階段是以架構師為主,深入、準確的理解業務需求,形成系統的業務架構 和 完整的功能清單。

從架構和開發人員的角度,準確理解 整個系統 要做什麼,系統邊界在哪裡,系統的功能都有哪些。

這是接下來架構設計和系統開發的目標和任務,一定不要有大的偏差,否則後面的工作全是瞎做。

 搞清楚了 客戶或產品團隊 要什麼,也明確了技術團隊要做什麼過後,該來思考:如何做的問題了。

階段三:技術選型和技術預研

首先就要來做技術選型,這個是考驗軟體架構師技術能力和架構經驗的第一關,通常需要綜合考慮

要達成的目標、團隊的能力、技術的適用性、時間限制、財務成本、現有的基礎架構 等等。

比如:產品團隊要求先上一個最小化可行產品,時間可能就1-2個星期,你就不可能搞一個特別複雜的架構,

但你要做好可擴充套件性的設計,以利於後期的演進

需要的能力:技術決策的能力、技術架構設計能力;需要你有較好的技術儲備,技術的廣度和深度,還有較好的架構設計經驗。

接下來就該做技術預研了,當然這個階段有可能不需要,需要預研的主要是針對技術的重難點、或者是團隊不熟的技術。

需要的能力:快速深入的學習技術的能力

階段四:架構設計

業務理解清楚了,技術也準備好了,接下來就該做架構設計了。

整體系統的架構設計、公共基礎架構設計、每個子系統或微服務的架構設計、快取體系設計、MQ非同步訊息體系設計、整體安全設計 等

還要綜合考慮:安全、分散式、可擴充套件、高效能、高可用、高併發、大資料量等的處理

需要的能力:技術架構設計能力、部署架構設計能力 等

階段五:架構驗證

接下來,就該做技術架構驗證了,主要是從技術層面,具體落地實現,以驗證整個技術架構是可行的,是能達成設計目標的。

這個階段有可能放到階段六之後去做,或者是跟階段六並行。

階段六:詳細設計

架構設計好了過後,就該深入到每個子系統或微服務,進行詳細的實現設計。

涉及的東西很多,比如:分層、分包、分模組、API設計、業務流實現設計、資料儲存設計、快取設計、非同步應用設計 等

也需要綜合考慮:安全、分散式、可擴充套件、高效能、高可用、高併發、大資料量等的處理,

這些不僅僅體現在架構上,更要體現到具體落地實現上。

需要的能力:API設計能力、業務流實現設計能力、資料儲存設計能力等等,這個就太多了,

綜合一下,統稱:具體的技術實現設計能力

也就是 通過架構設計,搭建好了系統的架子;通過詳細設計,搭建好每個模組具體實現的架子

階段七:設計講解

接下來,架構師需要把架構設計和詳細設計的成果,向整個開發團隊做講解說明,讓整個團隊達成一致的理解。

雖然有詳細的設計文件,但總有一些思想性的東西,是很難完全通過文件傳達到位的。

需要的能力:架構設計講解的能力

階段八:編碼實現

接下來就進入開發階段了,架構師可能會承擔一部分開發的任務,主要是核心的、重難技術點的實現、還有核心基礎功能的實現等

需要的能力:優秀的編碼開發能力

在具體開發的過程中,架構師可能會發現設計上不太好的地方,還會返回去修改和優化架構設計,不斷重構,使得架構設計更適合系統。

階段九:後續其它

至於後面還有的一些階段,比如測試、部署、運維等,架構師主要是起到一個諮詢和指導說明的作用,就不去詳述了。程式設計師突破內卷大法:聊聊軟體架構師成長之路(乾貨系列,說人話接地氣)

總結起來,要做一個真正的軟體架構師,必須具備如下的一些基本的技術能力(包含但不限於):

需求調研和分析的能力

產品業務設計的能力

需求深入分析的能力

技術決策的能力

技術架構設計能力

部署架構設計能力

具體的技術實現設計能力

架構設計講解的能力

優秀的編碼開發能力

 

到這裡,大概你對軟體架構師必備的技能有所瞭解了,後面我們再來一個一個展開,詳細說說這些能力又包含哪些具體的能力。

然後具體分析如何才能具備或培養出這些能力,從而讓你走上真正的架構師之路!突破內卷,盡請期待!!!

你也可以加入我的公號與我互動交流:架構設計一起學程式設計師突破內卷大法:聊聊軟體架構師成長之路(乾貨系列,說人話接地氣)

 

相關文章