當前位置:
首頁 > 最新 > 想要成為一個合格的架構師?看這篇文章就足夠了……

想要成為一個合格的架構師?看這篇文章就足夠了……

在互聯網圈,架構師這個名號的火熱程度堪比產品經理,它在產品經理沒火之前就已經風生水起。

僅以本文向帶給我許多歡樂和感悟的周星馳致敬。

架構師的定義

喬布斯是蘋果的產品架構師,比爾蓋茨是微軟的首席架構師,馬化騰也號稱騰訊的首席架構師。

有些人會覺得架構師很神秘,不知道整天腦袋裡在想什麼。那麼架構師到底是什麼樣的人?

聚焦到 IT 技術領域,基本可以還原,架構師的本質就是更高級更資深的程序員,架構師的能力要求在程序員或者說工程師之上,是一脈相承,有延續性的。

有些大廠因為層級較多(當然也是有更頂尖的人才),高級工程師跳到小廠做個架構師遊刃有餘。

所以我們並不糾結於工程師進階架構師的邊界到底在哪裡,實際上有的公司架構師是正式職位,有的只是項目的臨時職務。

架構師是足夠複雜、規模較大的系統才需要的角色,當系統架構不那麼一目了然,才需要有人在更高的視角上去關注整體性的東西。

架構師是高階職位,難以通過培訓批量生產,嚴重依賴於個人的工作經驗和成長,而且各方面都要求更高。

架構師的經驗體現在什麼地方呢?舉一個例子:

比如一個複雜的分散式系統,時時刻刻處理業務請求,要設計一套機制,保證所有的業務都能處理完成,無論成功失敗。

簡單的開發思維會考慮,儘可能的捕獲異常,給每一種錯誤類型編號,中途失敗的流程要進行回退,相信設計能否覆蓋所有情況。

有經驗的架構師則會清醒的認識到,這樣的系統隨著不斷升級和持續運行,一定會出現各種各樣的問題,不出問題是不可能的。

應用的潛在 Bug、業務邏輯漏洞、數據異常、網路抖動、硬體故障、人工誤操作,甚至還有莫名其妙未能找到原因只能歸結為靈異事件的問題,會層出不窮,等你解決。

我們需要做的是儘可能監控、捕獲到異常情況,通過技術手段修復多數的問題,少數不常見的或者難以自動解決的問題最終還是要考慮通過人工方式處理。

我們的目標是解決問題,通過分析,調整架構,優化邏輯,舊的問題解決後,還會有新的問題。

只要系統運行,就需要維護,軟體工程理論中系統上線後期維護都是一個重要的階段,此時系統是動態的,業務是連續的。

用近幾年很多人用過的比喻,開著飛機修飛機,開著火車修火車,在原有的系統上做修改,並不比從頭做一個系統輕鬆。

就像是 CAP 理論下,多數的選擇是最終一致性,即通過努力,無限趨近於問題最小化,時刻準備著迎接新問題,動態平衡才是系統運行的常態。

用七句話總結我對架構師的定義:

以工程思維全面理解業務需求

基於模型和基礎模式抽象簡化

提出恰當可行的整體解決方案

在限定資源範圍完成明確目標

滿足業務需求且保證系統質量

在可預見的周期內具備擴展性

並在系統生命周期內持續演進

以上只是描述了架構師本身,實際工作中還有許多干係人,包括了項目經理、業務需求提出方、產品經理、研發工程師、測試工程師、運維工程師、DBA 及各部門各層級的管理者,在一些外部合作的項目中還包括其他公司的各類人員。

項目由相關干係人組成的團隊完成,架構師必須與其中各類角色協作,以達成項目目標。

因此要有很好的綜合素養,對於相關干係人的職責必須有深入理解,熟悉項目操作流程,能夠與各方做好溝通。

比如現在都推行敏捷開發,快速迭代,一般的需求,小的敏捷團隊就可以實現,架構師可能不會參與,怎樣保證設計開發的質量?

更遠一點,怎麼保證在諸多小團隊各行其是的情況下,整體架構的合理性、先進性,甚至推進架構演化?

這其中會有很多流程外的溝通交流,架構,不是編碼規範、設計原則、技術框架,更多的時候是通過各種溝通,尤其是非正式溝通,所達成的共識。

這個共識越清晰,溝通成本就越低,工作就越高效,產品質量就越有保證。

架構師的核心價值

系統架構有哪些特徵?對架構師有怎樣的要求呢?我總結了如下五點:

技術開源化

開源已經成為互聯網技術的主流,多數公司使用開源技術,自行選型維護,出了問題自己解決,而且技術更新很快,需要能夠高效學習快速上手。

開源的技術流,與大眾創業、萬眾創新一樣,充分發揮創造力,各種風險和坑也都由使用者來買單。

產品敏捷化

業務調整快,小步快跑,快速試錯,必然弱化長期規劃,創業公司可以先上 MVP,已經上規模的公司怎麼保持活力?

可以將新的業務做成獨立的模塊,解耦,降低依賴,更重要的是時刻關注架構的靈活性,有備無患。

服務全網化

面向全網用戶,隨時提供服務,系統規模大,停止服務就會損失收入,要求儘可能無縫升級。

業務不可控性較大,業務量可能波動很大,一旦業務爆發,要有快速的彈性部署方案。

系統複雜化

難免有很多的臨時方案,以及有用沒用的功能堆積,會使系統的可維護性,架構合理性越來越差。

系統的交互越來越多,關聯性強,需要工具結合系統機制進行管理,否則就會失控。

人力高效化

根據摩爾定律,基礎設施成本日趨廉價,而人工成本則持續走高,這是兩個必然方向。

那麼就需要提供更好的技術平台,好鋼用在刀刃上,技術人員的能力要求越來越高,高效做有意義的事,簡單重複的東西讓機器去做。

架構師的核心價值是什麼?借用李智慧老師《大型網站技術架構核心原理與案例分析》中的說法:

軟體架構師的最大價值不在於掌握多少先進的技術,而在於具有將一個大系統切分成 N 個低耦合的子模塊的能力,這些子模塊包含橫向的業務模塊,也包含縱向的基礎技術模塊。

這種能力一部分源自專業的技術和經驗,還有一部分源自於架構師對業務場景的理解、對人性的把握、甚至對世界的認知。

在技術團隊中,架構師是技術的領導者,沒有人輔導,手把手教更是不可能,必須對最終設計和實現負責。

多數情況下,架構是一種妥協,一種平衡的產物,掌握這個平衡度的,就是架構師。

我們都知道,理想的架構是什麼樣的,但又必須抱殘守缺,面對現實,提出可行方案。

因此,架構師是胸懷理想的現實主義者,高度在理想,落地在現實,絕對是有挑戰,有難度。

架構師的核心能力

對於架構師的核心能力定義,《軟體架構師的 12 項修鍊》中有一張圖,可作參考。

周愛民老師也曾經在《程序員》上發表過《做人、做事,做架構師——架構師能力模型解析》。

就我的個人總結,架構師的核心能力包括六個方面:

做一個合格的架構師,需要各方面能力都比較強,不能有明顯的短板。

其中技術能力和業務能力屬於硬指標,可以通過學習和工作,跨過行業門檻獲得。

這裡主要分析下後四種,可稱為通用技能,對於團隊協作的技術職位都是需要的。

前三種自我驅動、高效學習、良好心態是內功,用汽車比喻的話,自我驅動能力相當於發動機,高效學習能力則是方向盤和變速箱,良好心態就是懸掛和制動系統。

溝通協作則是外功,最終的外在體現,內功與外功兩者之間就如同內因和外因,起決定作用的是內部因素。

自我驅動能力

這是一種特質,簡單說就是有上進心,不甘於混日子,閑不住,愛鑽研,始終有目標性的追求,有很強的自控力。

這種動力來自於興趣,比如對技術的熱愛,就是喜歡。

每個人都有自己的興趣點,可能不是 IT 技術,找對自己的方向很重要。

而且喜歡不一定就能做好,有時候努力夠了,成就要看天分,發現對自己不合適,幹活沒勁頭,不如及早調整。

具備這樣能力的人一般都很明顯,做事努力,用心,進步很快,相信大家在工作和學習過程中都遇到過。

舉一個加班的例子吧,搞 IT 的加班很常見,甚至可能許多人並不是真心愿意加班,但一定有很多人有這樣的經歷。

就是碰到一個技術問題,哪怕工期上沒有那麼緊迫,也要盯著它,甚至不吃飯,不喝水,絞盡腦汁要整明白,死磕到底,搞定為止。

自我驅動力表現在了這種高度專註的精神,遇到問題鬥志昂揚的衝勁,解決問題的成就感之上。

高效學習能力

IT 技術需要不斷學習,持續更新,真正的學習,是要靠自己的,要把學習養成習慣。

架構師很多時候要快速切入一個不熟悉的領域,必須要有高效的學習能力。

有些人會抓住一切機會學習,比如我的某位同事,等待面試的時候還拿著一本技術的書在看。

在同等的時間裡,怎樣能有最高效的吞吐量,獲得更多的有價值的信息量,並沉澱為自己的能力,就需要正確的方法。

每個人都有自己的特點,需要找到適合自己的學習方法,方法得當,事半功倍。

那麼學習的過程,也是一個不斷發現自我,形成模式,目標導向,反覆強化,不斷調整的過程。

比如曾經有位同學,每天下班回家,還要看英文原版的書,在家鑽研技術到後半夜,形成了習慣,成效自然顯著,後來去了百度。《從學渣到學霸-我的 100 天閱讀簡史》,可作為學習的借鑒。

保持良好心態

N 年前,曾經流行一句話,心態決定一切。TVB 有句經典台詞說得好,做人呢,最重要的就是開心。

積極正面的陽光心態,是把事情做好的基礎,因為工作中難免有意外和波折,不會一帆風順,好心態能夠為你保駕護航。

好心態一般什麼樣呢?謙虛平和、寬容、有韌性,活在當下,內心強大。不是說你是架構師就高人一等,要憑實力說話。

這其中還包括責任心,決定了心態的方向。比如我就認為,敬業是職業化的體現,那麼無論是否處在已經即將離職的狀態,都應該做好自己的職責,做一天和尚撞一天鐘。

善於溝通協作

架構師處在團隊中,且屬於技術核心角色,必須做許多溝通配合的工作,而且要做好,做到位。

這其中有幾方面需要強調,首先是團隊精神,架構師不能個人英雄主義,團隊的存在就是因為能做到比個人更好,團隊的成功才是最終的目標。

團隊成員各有千秋,合作愉快的基礎是理解萬歲,消除溝通障礙,架構師在這方面有更大的責任和義務。

技術人員相對簡單直接,也容易認可技術上的原則,以誠相待能夠最大程度上降低溝通的成本,事情說清楚就好。

而成就他人是一個技術領導者必備的素質,相信互惠互利,我為人人,人人為我,甚至要把更多的機會給別人,吃獨食的人難以服眾。

架構師的四門功課

架構設計是一門藝術,架構師作為架構設計的實踐者,要掌握四門功課,不是說學逗唱,而是:多打醬油,能和稀泥,肯背黑鍋,敢拉仇恨。

多打醬油

互聯網公司普遍存在人員流動性強,缺乏文檔的情況,而架構設計偏偏需要全方位考慮問題。

我就曾經遇到過這樣的事情,一大幫人開了兩小時的會,終於討論出一個都能夠接受的可行方案,結果第二天有個沒能參會的人回了個郵件,說他們有問題趟不過去,原來的方案得推翻重來。

技術最重要的一點就是復用,不重複造輪子,如果有的功能或者組件別人做過,拿過來用是最方便的。

所以架構師必須消息靈通,覆蓋全面,知己知彼,收集問題,儘可能了解全局。

多打醬油什麼意思,無論是否由你主導,主要的項目都要保持關注,多參與,多積累才有發言權。

這個過程中要不裝不拿,不懂多問,誰也不是全才,不必急於表達自己和做出判斷,謀定後動。

打醬油不僅獲取信息,還要輸出信息,哪怕事不關己,可以建議,但不能指手畫腳,獲取溝通的最大收益,形成技術部門共識。

一般來說,男同學都是單線程思維模式,要達到最好的效果,打醬油的時候也要專註精神不分二心。

當然也有奇人能夠做到並發處理,比如我的前同事老王,時間分片高頻切換事務處理輸入輸出,堪稱一台人形電腦。

噹噹技術部原來有一個開會的潛規則就很好,除了產品經理和項目經理,其他人開會都不帶電腦,只拿筆記本。

能和稀泥

架構的核心在於平衡,實用導向,最終要提出解決方案。

那麼就需要在這個過程中綜合考量,化解爭論,對事不對人,規避面子問題,努力充分溝通,達成共識。

充分了解各方意見,設身處地理解本質問題,提出多種方案,客觀的列出優缺點,以供決策。

但有時也有化解不了的矛盾,無論是基於技術理念、設計思路、自身定位還是意氣之爭,有時擱置也是一種可選項,比如鄧小平對釣魚島、台灣問題的處理方式。

之前有一個項目,我們提出的方案某個系統開發負責人不認可,期望用另一種實現方式。

那我們就把兩種方案都拉出來對比,每個系統的改動難度、問題都說清楚,最終對方還是接受了原來的方案。因為綜合考慮,這才是最優解。

肯背黑鍋

能力越大,責任越大,想做事就要有勇氣擔責任,抗風險,逃避責任是難有成就的。

舉個例子,曾經有一個緊急的需求,交給了一個同事,快上線的時候撂挑子說干不完,領導找到我,問能不能幹。

這種情況,時間緊任務重,要是接了沒幹出來,黑鍋就落在自己身上,但需求總要有人做,領導的信任更不能辜負,任務接下來干好了,後面就不必說了。

架構師作為主導,要清醒的意識到,需求和狀況總是變化的,總有考慮不周的,總有難辦的有挑戰的,總有不確定的各種風險,需要堅持推進達成目標。

如果推進不成或者發現之前的判斷甚至決策失誤,適時調整,不必鑽牛角尖,也要坦然承擔失敗的責任,這也是一種寶貴的經驗。

作為一個技術團隊,可能出現問題並非直接責任人是架構師,不必非要劃清界限,團隊的失敗,也是每個人的失敗。

最後要清楚,謀事在人,成事在天,事在人為,但要的確可為,明知不可為而為之,不是明智之舉。

敢拉仇恨

架構師要面對很多挑戰,技術人員都很有想法,都認為自己偉大光榮正確,不會因為你是架構師就乖乖地聽話,要以理服人。

一個設計方案的出爐,可能需要像諸葛亮一般舌戰群儒,說服很多人。

我遇到過這種情況,明明是好事兒,做起來也不難,就是有人不接受,不願意做。

那就需要堅持主張,胸懷坦蕩,沒有私心,正直誠實,打開天窗說亮話。

即便大家很熟,也不能抹不開面子,不講原則。

要注意一點,雖然真理經常是掌握在少數人手裡,但要讓多數人接受,不能被接受的真理也是沒有價值的,可能就不是真理。

所以架構師可以力排眾議,但不能成為千夫所指。

比如我們經常遇到時間緊迫要做臨時方案,不考慮擴展性,如果同類的業務模式重複出現,再做臨時方案雖然大家都輕車熟路,卻不是一個好的選擇。

因為有再一再二,就會有再三再四,只要把握住這一點,儘早進行架構改造,實現後就能快速響應後續的同類需求,這也體現了架構師的價值。

當你做的正確的事情多了,才會與團隊磨合,獲得大家的信任,而不是怨念,逐步樹立自己的權威,從此可以跟小夥伴們一起愉快地玩耍了。

作者:史海峰

簡介:餓了么北京研發中心中心總經理,負責餓了么北京研發中心整體業務發展。

編輯:陶家龍、孫淑娟


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 51CTO技術棧 的精彩文章:

收到一篇世界盃投稿,打開一看竟然是…

TAG:51CTO技術棧 |