架構師,固然是腦力勞動者,可是一樣是腦力勞動也存在重大的差異。有一類腦力勞動的成果,是比較容易被評價的。可是,架構設計只是軟件開發過程當中的一個環節,在這個多人協做的場景中,咱們很難單獨評價架構的優劣。架構
架構師,固然是腦力勞動者,可是,一樣是腦力勞動也存在重大的差異。有一類腦力勞動的成果,是 比較容易被評價的。或者可以判斷其對錯:好比考試的分數;或者可以比較其高下:好比兩我的下棋分出輸贏;或者可以交由市場來判斷:好比某種UI/UE設 計,咱們能夠經過數據統計,瞭解其受用戶歡迎的程度。框架
可是,架構設計只是軟件開發過程當中的一個環節,而在這個多人協做的場景中,咱們很難單獨評價架 構的優劣。因爲硬件、軟件、部署、人員、測試、用戶、市場等衆多的差異,即便是很是相近的兩個系統,咱們也很難判斷兩個架構孰優孰劣。好比:eBay的架 構與Taobao的架構哪一個更加優秀?在交付拖延的時候,咱們能夠將問題歸咎於開發團隊的效率低下。在出現質量問題的時候,咱們能夠將問題歸咎於測試團隊 的疏忽大意。在負載撐不住的時候,咱們能夠將問題歸咎於運維團隊不夠專業,甚至是競爭對手的DDoS攻擊。那麼,在出現什麼樣的問題的時候,咱們能夠將責 任歸咎於架構呢?運維
因此,現狀就是:架構師是一個很難作好的職業。可是,從某種意義上來講,又是一個很是容易混的職業。(固然,混是另外一種須要持續修煉的高端技能。)所以,架構師也是特別須要強調自我修養與職業道德的職業。學習
什麼是架構?什麼是架構師?測試
對於架構的定義,有不少種,我比較贊成的一種定義是:「架構是一組關鍵決策」。這樣的決策包括 但不限於:使用什麼操做系統、語言、框架與類庫;是否在架構中使用某種全新的技術方案;優先考慮或知足哪一方面的需求以及如何在技術上實現這一點;更進一 步的,面對一個不斷髮展的系統,哪些部分須要優先重構or優化、哪些決策須要從新考慮甚至修改;再進一步,某些前瞻性的考慮,也是架構決策的一部分,等到 問題發生再來解決,一樣是架構方面考慮不周。優化
可以作出這些決策的,就是架構師。或者說,在一個團隊中,實際的最終決策者,就是事實上的架構師。不管他被賦予什麼樣的頭銜。在一個團隊中,咱們總能找到這樣的角色(不管他作得是否是稱職),而一個優秀的架構師,就是一般可以作出「較多」正確決策的人。操作系統
架構師的工做是什麼?架構設計
僅僅作出決策是不夠的,咱們能夠從時間線上來觀察:在作出決策以前,架構師須要足夠了解本身的「可選項」,不管是用戶的實際需求,仍是最新出現的技術和框架,而且都得要有足夠深刻的理解(不然就是在拍腦殼作決策)。這時,架構師的角色,是一個「研究者」。翻譯
在綜合各項因素,甚至是相互矛盾的各類需求以後,在考慮到團隊的實際能力與交付壓力以後,在平衡了先進性與可靠性、擴展性與穩定性、重要性與緊迫性以後,架構師作出了一組決策。這時,架構師的角色,是一個「設計師」。設計
爲了確保本身架構設計可以被正確地實施和貫徹,架構師須要與研發團隊密切配合,或者說服、或者引導、或者輔導、或者鼓動、甚至須要某種「強有力的推動手段」,這對於架構師的「硬實力」與「軟實力」都提出了很高的要求。這時,架構師的角色,是一個「Top Coder」。
在某些大公司,架構師還需作不少的文檔工做,這些文檔並非交付給開發團隊的說明性文檔。而是某種向上級證實某某方案可行,某某架構有效的證實性文檔。這時,架構師的角色,是一個「說服者」。
從上面的描述,咱們也能夠發現,架構師像是一個千面人:須要與上下先後左右的不一樣角色打交道;多面手:須要瞭解甚至掌握諸多不一樣的知識和技能。要想作好這個工做,提高自我修養是根本之道!
什麼是架構師的自我修養?
1. 以理解用戶爲榮,以想固然爾爲恥
架構師不是產品經理,不是市場人員,不是客服人員。可是,若是隻懂技術,只考慮技術,不能深刻的理解用戶的需求(強調一下,用戶的真實需求!),就會作出「純粹追求技術先進性」的想固然爾的架構出來。
2. 以腳踏實地爲榮,以誇誇其談爲恥
架構師固然須要很強的表達能力,甚至還須要有忽悠能力。可是,不管是表達仍是忽悠,都必須以「實力爲基礎」。若是不能腳踏實地,積累實力,只會誇誇其談。那就至關可恥了。
3. 以一馬當先爲榮,以指手畫腳爲恥
仍是那個經典的臺詞「兄弟們跟我上」與「弟兄們給我上」的區別。若是對於一些困難的問題,架構師本身都搞不定,卻擺出一副成竹在胸的表情:「這不是很簡單的嗎?你到網上搜一下嘛,資料大把大把的。」這種作派,就很使人不齒。
4. 以實踐檢驗爲榮,以道聽途說爲恥
若是某種技術,架構師本身都沒有作過評測,沒有看過框架代碼,沒有在過去的實踐中應用過。卻由於一篇文章,一個講座,甚至某個大公司曾經用過這樣的證據,就將一種技術引入到項目之中。這樣的決策,不多有不失敗的。
5. 以先見之明爲榮,之後知後覺爲恥
「過分設計」固然是一個貶義詞,可是架構師必定要有前瞻能力。不能等到火燒起來了,再去救火。雖然在企業裏,的確存在「救火英雄升遷快」的現象。可是,一個優秀的架構師,應該以「消除隱患於無形」爲榮。
6. 以兼容幷包爲榮,以專斷專行爲恥
在架構領域,不多有惟一解、最優解。大多數時候,咱們只能在多個各有優劣的方案中,反覆權衡,考慮取捨。這時,開闊的視野、開放的心胸,就顯得尤其重要。若是一味的專斷專行,聽不進團隊裏其餘同事的意見(尤爲是那些學習了喬布斯的架構師),就會很是危險。
7. 以主動學習爲榮,以固步自封爲恥
技術的進步實在太快,曾經有一種誇張的說法:「平均天天誕生一種革命性的、顛覆性的技 術」。雖然有不少新技術,都在如此宣稱,做爲架構師,卻必須不斷地主動學習,瞭解,甚至在某些領域作一些初步的嘗試。這樣的過程,在架構師的整個職業生涯 中,都沒法中止。一旦產生了「固步自封」的念頭,這個架構師也就「不過爾爾」了。
8. 以勇猛精進爲榮,以疏忽懈怠爲恥
架構師是一份困難的工做,更加劇要的是:隨着架構設計的完成,架構師的工做,纔剛剛開始。接下 來的任務,會很是瑣碎,也許會更加困難。這份工做的主題是:「架構看護」儘量保護架構,不會隨着時間的推移,隨着特性的增長,漸漸變得腐化。不少最初設 計得至關優秀的架構,到最後變得不堪入目。說到底,仍是要怪架構師沒有可以堅持本身當初的決策。
如何提高架構師的自我修養?
在《中庸》裏,子曰:「好學近乎知,力行近乎仁,知恥近乎勇。知斯三者,則知因此修身;知因此修身,則知因此治人;知因此治人,則知因此治天下國家矣。」
簡單的翻譯解釋下:好學就能顯得有智慧(至少能有知識),力行就能不脫離羣衆(因不忘本而能具 備仁慈之心),知恥就能守底線(有所爲有所不爲之勇)。能作到這三點,就算是懂得如何提高本身的修養了。懂得如何提高修養,才能懂得如何駕馭團隊。懂得如 何駕馭團隊,才能創做出真正偉大的,甚至風行全球的軟件產品來。