論架構師的自我修養--8榮

架構師,當然是腦力勞動者,但是,同樣是腦力勞動也存在重大的差別。有一類腦力勞動的成果,是比較容易被評價的。或者能夠判斷其對錯:比如考試的分數;或者能夠比較其高下:比如兩個人下棋分出輸贏;或者能夠交由市場來判斷:比如某種UI/UE設計,我們可以通過數據統計,瞭解其受用戶歡迎的程度。

但是,架構設計只是軟件開發過程中的一個環節,而在這個多人協作的場景中,我們很難單獨評價架構的優劣。由於硬件、軟件、部署、人員、測試、用戶、市場等衆多的差別,即使是非常相近的兩個系統,我們也很難判斷兩個架構孰優孰劣。比如:eBay的架構與Taobao的架構哪個更加優秀?在交付拖延的時候,我們可以將問題歸咎於開發團隊的效率低下。在出現質量問題的時候,我們可以將問題歸咎於測試團隊的疏忽大意。在負載撐不住的時候,我們可以將問題歸咎於運維團隊不夠專業,甚至是競爭對手的DDoS攻擊。那麼,在出現什麼樣的問題的時候,我們可以將責任歸咎於架構呢?

所以,現狀就是:架構師是一個很難做好的職業。但是,從某種意義上來說,又是一個非常容易混的職業。(當然,混是另一種需要持續修煉的高端技能。)因此,架構師也是特別需要強調自我修養與職業道德的職業。

什麼是架構?什麼是架構師?

對於架構的定義,有很多種,我比較同意的一種定義是:“架構是一組關鍵決策”。這樣的決策包括但不限於:使用什麼操作系統、語言、框架與類庫;是否在架構中使用某種全新的技術方案;優先考慮或滿足哪一方面的需求以及如何在技術上實現這一點;更進一步的,面對一個不斷髮展的系統,哪些部分需要優先重構or優化、哪些決策需要重新考慮甚至修改;再進一步,某些前瞻性的考慮,也是架構決策的一部分,等到問題發生再來解決,同樣是架構方面考慮不周。

能夠做出這些決策的,就是架構師。或者說,在一個團隊中,實際的最終決策者,就是事實上的架構師。無論他被賦予什麼樣的頭銜。在一個團隊中,我們總能找到這樣的角色(無論他做得是不是稱職),而一個優秀的架構師,就是通常能夠做出“較多”正確決策的人。

架構師的工作是什麼?

僅僅做出決策是不夠的,我們可以從時間線上來觀察:在做出決策之前,架構師需要足夠了解自己的“可選項”,無論是用戶的實際需求,還是最新出現的技術和框架,並且都得要有足夠深入的理解(否則就是在拍腦袋做決策)。這時,架構師的角色,是一個“研究者”。

在綜合各項因素,甚至是相互矛盾的各種需求之後,在考慮到團隊的實際能力與交付壓力之後,在平衡了先進性與可靠性、擴展性與穩定性、重要性與緊迫性之後,架構師做出了一組決策。這時,架構師的角色,是一個“設計師”。

爲了確保自己架構設計能夠被正確地實施和貫徹,架構師需要與研發團隊密切配合,或者說服、或者引導、或者輔導、或者鼓動、甚至需要某種“強有力的推進手段”,這對於架構師的「硬實力」與「軟實力」都提出了很高的要求。這時,架構師的角色,是一個“Top Coder”。

在某些大公司,架構師還需做很多的文檔工作,這些文檔並不是交付給開發團隊的說明性文檔。而是某種向上級證明某某方案可行,某某架構有效的證明性文檔。這時,架構師的角色,是一個“說服者”。

從上面的描述,我們也可以發現,架構師像是一個千面人:需要與上下前後左右的不同角色打交道;多面手:需要了解甚至掌握諸多不同的知識和技能。要想做好這個工作,提升自我修養是根本之道!

什麼是架構師的自我修養?

1. 以理解用戶爲榮,以想當然爾爲恥 

架構師不是產品經理,不是市場人員,不是客服人員。但是,如果只懂技術,只考慮技術,不能深入的理解用戶的需求(強調一下,用戶的真實需求!),就會做出“純粹追求技術先進性”的想當然爾的架構出來。 

2. 以腳踏實地爲榮,以誇誇其談爲恥

架構師當然需要很強的表達能力,甚至還需要有忽悠能力。但是,無論是表達還是忽悠,都必須以“實力爲基礎”。如果不能腳踏實地,積累實力,只會誇誇其談。那就相當可恥了。 

3. 以身先士卒爲榮,以指手畫腳爲恥

還是那個經典的臺詞“兄弟們跟我上”與“弟兄們給我上”的區別。如果對於一些困難的問題,架構師自己都搞不定,卻擺出一副胸有成竹的表情:“這不是很簡單的嗎?你到網上搜一下嘛,資料大把大把的。”這種做派,就很令人不齒。 

4. 以實踐檢驗爲榮,以道聽途說爲恥

如果某種技術,架構師自己都沒有做過評測,沒有看過框架代碼,沒有在過去的實踐中應用過。卻因爲一篇文章,一個講座,甚至某個大公司曾經用過這樣的證據,就將一種技術引入到項目之中。這樣的決策,很少有不失敗的。 

5. 以先見之明爲榮,以後知後覺爲恥

“過度設計”當然是一個貶義詞,但是架構師一定要有前瞻能力。不能等到火燒起來了,再去救火。雖然在企業裏,的確存在“救火英雄升遷快”的現象。但是,一個優秀的架構師,應該以“消除隱患於無形”爲榮。 

6. 以兼容幷包爲榮,以獨斷專行爲恥

在架構領域,很少有唯一解、最優解。大多數時候,我們只能在多個各有優劣的方案中,反覆權衡,考慮取捨。這時,開闊的視野、開放的心胸,就顯得尤爲重要。如果一味的獨斷專行,聽不進團隊裏其他同事的意見(尤其是那些學習了喬布斯的架構師),就會非常危險。 

7. 以主動學習爲榮,以固步自封爲恥 

技術的進步實在太快,曾經有一種誇張的說法:“平均每天誕生一種革命性的、顛覆性的技術”。雖然有很多新技術,都在如此宣稱,作爲架構師,卻必須不斷地主動學習,瞭解,甚至在某些領域做一些初步的嘗試。這樣的過程,在架構師的整個職業生涯中,都無法停止。一旦產生了“固步自封”的念頭,這個架構師也就“不過爾爾”了。 

8. 以勇猛精進爲榮,以疏忽懈怠爲恥

架構師是一份困難的工作,更加重要的是:隨着架構設計的完成,架構師的工作,纔剛剛開始。接下來的任務,會非常瑣碎,也許會更加困難。這份工作的主題是:“架構看護”儘可能保護架構,不會隨着時間的推移,隨着特性的增加,漸漸變得腐化。很多最初設計得相當優秀的架構,到最後變得不堪入目。說到底,還是要怪架構師沒有能夠堅持自己當初的決策。

如何提升架構師的自我修養?

在《中庸》裏,子曰:“好學近乎知,力行近乎仁,知恥近乎勇。知斯三者,則知所以修身;知所以修身,則知所以治人;知所以治人,則知所以治天下國家矣。”

簡單的翻譯解釋下:好學就能顯得有智慧(至少能有知識),力行就能不脫離羣衆(因不忘本而能具備仁慈之心),知恥就能守底線(有所爲有所不爲之勇)。能做到這三點,就算是懂得如何提升自己的修養了。懂得如何提升修養,才能懂得如何駕馭團隊。懂得如何駕馭團隊,才能創作出真正偉大的,甚至風行全球的軟件產品來。

這就是我理解的架構師的中庸之道,與諸位共勉吧。

(責編/ 錢曙光,關注架構和算法領域,[email protected]

發佈了112 篇原創文章 · 獲贊 14 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章