俗話說:不想當架構師的程序員不是好程序員。成為架構師,幾乎是每位開發者入行初期的共同理想。但架構師并非只是一個單純的技術崗位,它需要技術能力與綜合能力的共同支持。了解架構師的職業定位與主要職責,掌握架構師所需的核心技能,是通往這一高階職位道路上的必修課。
在由51CTO舉辦的【T·TALK】全年系列技術分享活動的第二期中,51CTO內容中心特別邀請到了前貝殼金服小微企業生態CTO史海峰老師,為大家親述他的架構師修煉之道。以下為本次直播分享的核心內容整理,希望能為讀者帶來幫助。
T·TALK:在您看來,架構師的職業定位與核心職責是什么?
史海峰:
架構師的本質是更高級更資深的工程師,架構師的能力要求在工程師之上,一些大廠層級較多,架構師成了一個職級,高級工程師跳槽到小廠做架構師也是游刃有余。所以并不需要糾結工程師或架構師的邊界到底在哪里。
我傾向于認為架構師是一個角色,在足夠復雜、規模較大的系統才需要的角色,當系統架構不那么一目了然時,需要有人在更高的視角上去關注系統的整體。且架構師是高階職位,難以通過培訓批量生產,在能力方面更多的需要依賴于個人工作經驗的積累與一些軟性技能的支撐。
架構師的核心職責,是系統設計和實現的最核心的工程師,用七句話總結我對架構師職責的定義:
以工程思維全面理解業務需求
基于模型和基礎模式抽象簡化
提出恰當可行的整體解決方案在限定資源范圍完成明確目標
滿足業務需求且保證系統質量
在可預見的周期內具備擴展性
并在系統生命周期內持續演進
T·TALK:架構師需要掌握的的核心技能都有哪些?
史海峰:
借用李智慧老師《大型網站技術架構:核心原理與案例分析》中的說法:軟件架構師的最大價值不在于掌握多少先進的技術,而在于具有將一個大系統切分成N個低耦合的子模塊的能力,這些子模塊包含橫向的業務模塊,也包含縱向的基礎技術模塊。這種能力一部分源自專業的技術和經驗,還有一部分源自于架構師對業務場景的理解、對人性的把握、甚至對世界的認知。
在技術團隊中,架構師是技術領導者,要對最終設計和實現負責。多數情況下,架構是一種妥協、平衡的產物,掌握這個平衡度的,就是架構師。我們都知道,理想的架構是什么樣的,但又必須有所取舍,面對現實,提出可行方案。因此,架構師應當是胸懷理想的現實主義者,高度在理想,落地在現實。
以個人經驗來講,架構師需要具備五方面的能力。
1.全面的專業能力和經驗,包括技術能力和業務能力
2.自我驅動能力
3.高效學習能力
4.保持良好心態
5.善于溝通協作
一個合格的架構師,需要擁有很強的綜合能力,不能有明顯的短板。其中技術能力和業務能力屬于硬指標,可以通過學習和工作,跨過行業門檻獲得。而后四種能力,則可以稱為通用技能,或是軟技能、軟素質,對于團隊協作的技術職位都是需要的。
自我驅動、高效學習與保持良好心態是內功,用汽車比喻的話,自我驅動能力相當于發動機,高效學習能力則是方向盤和變速箱,良好心態就是汽車懸掛和制動系統。溝通協作則是外功,是最重的外在體現。架構師并不是一個人在戰斗,閉門造車是不可取的。而且架構師不是管理職位,在工作中更多充當領導者的角色,需要讓大家了解你的想法,需要團隊通力合作共同完成目標,這都是要靠溝通的。
T·TALK:作為一名架構師,您是如何理解系統架構的?
史海峰:
杰拉爾德·溫伯格的《系統化思維導論》中提到過:系統是對世界的一種看法。而世界是多元的、世界是有機的、世界是變化的,并且世界并不完美。通過這個邏輯引申一下,架構其實就是對系統的一種看法。
以人為例,我們可以認為人也是一個復雜系統,生命則可以理解為一個信息處理器,但不同的學科和理論體系對人的認識是不一樣的,比如現代醫學區分神經系統、循環系統、消化系統等等,傳統醫學講究陰陽五行五臟六腑。我們每天都和別人交流,別人說的話就是各種信息,我們的回應便是輸出反饋。架構不僅僅是靜態的視圖,還包含了整個系統的實現過程,所以要面向未來。架構設計需要能夠化繁為簡,將架構進行抽象,當然這個過程中每個人的理解是不一樣的,很難用一句話去總結。
在這個思路上繼續擴展,無論面對軟件還是硬件,都可以將其拆解為時間與空間,并對其進行時空的轉換,時間換空間,空間換時間,是在進行架構設計時最常見的做法,這其中并沒有嚴格的界限。最終架構設計還是要以人為本,需要更多思考系統的用戶是誰,維護者是誰,在不同場景之下系統將會對他們產生怎樣的影響。深入了解業務及需求,才能找到架構設計的最優解決方案,因為我們的時間與資源都是有限的。
還需要補充的一點是衡量系統架構的標準,一個好的架構首先要滿足需求、性能優良、實用友好,滿足使用者是架構設計的最核心目標。其次,需要做到的是結構合理、設計簡潔、成本可控,這幾項則更多地涉及到系統的開發效率。最后,穩定健壯、易于維護、易于分解同樣是優秀架構不可或缺的,舉個最簡單的例子,在一個系統中使用不同的命名規則和接口規范,可能會導致很嚴重的后果。實現這些要求,才能使系統擁有更高的上限。
T·TALK:在您做架構師的過程中,發生過哪些令您印象深刻的事件?
史海峰:
有兩件印象比較深刻的事情。首先是去當當面試的時候,那時并不知道互聯網企業具體是什么樣的,對架構師的概念也不是很清晰。當被問到如何解決錯誤訂單問題時,我沒有在技術棧方面做過多糾結,而是依靠在亞信處理相似場景的經驗,從系統整體角度出發,給出了恰當實用的解決方案。這件事給了我很大啟發,讓我對架構以及架構師的職責有了更深刻的認知。
其次,是在加入當當一年多后,和另一位架構師趙振林共同完成了一張當當的整體架構圖,將所理解的100多個系統都串聯了起來。雖然其中肯定是有遺漏甚至錯誤,但通過這張圖,我成功驗證了自己對當時公司整體架構的理解。這也讓我意識到,做架構師同樣是需要輸出的,自我感覺并不是總能靠得住,需要通過文字、圖案等一些方式將自己所了解的表達出去,并對自己的認知不斷進行校正。
T·TALK:在敏捷開發流行的今天,架構師該如何確保開發設計的質量呢?
史海峰:
我們曾經討論過這個問題,甚至討論敏捷的模式中是否需要有架構師,因為敏捷似乎是每次只解決一個問題,但如果只看眼前而忽略長遠,一定會出更大的問題。人無遠慮必有近憂,架構是演進的,目標不是自己說了算。變化越快的系統,其腐化就會越快,幾年之后就很可能會面臨重構。重構的同時,原有系統要迭代,然后并行,再切換掉,重構需要做架構設計,而且要盡可能有前瞻性,幫助團隊甩掉技術債,避免保留原來的局限。想要確保質量,日常迭代便要把握原則,就算敏捷也要做方案評審,做CodeReview ,該做性能測試做性能測試,該監控監控,該復盤復盤,確保把基本動作做到位。說回來,敏捷開發對團隊整體能力要求更高,每個成員都要對業務目標、架構原則、開發流程、協作機制有充分的認知,才能真正跑得又穩又快。
T·TALK:最后,能否從架構師的角度,給有志于此的開發者提供一些建議。
史海峰:
先拋個梗,架構設計是一門藝術,架構師作為架構設計的實踐者,要掌握四門功課:多打醬油,能和稀泥,肯背黑鍋,敢拉仇恨。
前面提到過沒有完美的架構,只有合適的架構。技術同學在工作中容易理想主義,不考慮ROI,廢寢忘食熬夜加班。但我們做的是工程,時間資源是有限的,要能夠在有限時間內交付符合預期的成果。因此,怎么能在復雜的系統里化繁為簡,舉重若輕,找到最簡單有效的解決方案,是做技術的同學應該更多思考的問題。最終我們要靠實踐獲得反饋,靠成果積累經驗,簡單一句話,光說不練假把式,光練不說傻把式,能說會練真把式。
關于工程師、架構師的成長,我寫過一些文章,大家可以到我的公眾號“IT民工閑話”上搜索“工程師”和“架構師”關鍵字,可以進一步交流,共同成長。
疑難解答:架構設計的框架如何選擇?
史海峰:
架構設計的框架有很多,比如付曉巖老師在《企業級業務架構設計》開篇有介紹,但無論哪個體系,都是方法和手段,我們不能被體系所限制。應當更多地去了解其中的思維模式,初步了解并不會花費太多的時間。當我們對大部分體系都有所理解后,才能夠更準確的選擇出最能夠幫助到你且最適用于你目前工作的架構體系,而后再去對其進行深究。
疑難解答:架構師需要有產品經理的經驗么?
史海峰:
是否具備產品經理的經驗并不是關鍵因素。從個人發展的角度講,在初入職場的時候,只要把本職工作做好就可以了。而在三五年后,則需要考慮差異化競爭,發揮自己的專長,這需要對某一領域進行深耕,成為領域內的專家。接下來要發揮更大價值,則需要與更多相關角色打交道,要能夠換位思考,對不同角色工作的方式與輸入輸出有感性的認知。架構師要知道團隊中每一個角色的關注點是什么,不只局限于自己擅長的領域,要讓整個團隊都能夠了解你的設計思維,這樣才能使團隊擁有更好的配合度,形成合力。
嘉賓介紹:
史海峰,前貝殼金服小微企業生態CTO。
曾在神州數碼、亞信聯創長期從事電信行業業務支撐系統集成工作,參與中國移動、中國聯通多個項目,具有豐富的大型業務系統研發實施經驗。
曾在當當負責總體架構規劃、技術規范制定和技術預研推廣,善于把握復雜業務需求,提出創新性解決方案,參與多個重點項目的方案設計,在項目中對系統架構進行持續改造優化。負責技術委員會組織管理工作,發掘最佳實踐、推動技術革新、開源產品,組織內外部技術交流。
曾負責餓了么技術創新部產品研發團隊,完成多個創新性業務項目及技術產品。
曾在貝殼金服負責小微企業生態金融服務產品規劃、技術團隊管理、系統建設。
下期預告
3月2日,周三晚八點,【T·TALK】將通過51CTO技術棧視頻號舉辦第三場線上直播分享活動。屆時,「開源之道」發起人及主創、《開源之謎》作者適兕老師將為廣大聽眾帶來《開源項目如何走商業化道路》的主題分享。作為一位觀察開源近20年的資深開源布道師,適兕老師將從自身視角出發,跳出技術之外,與大家探討開源的崛起歷程、開源的商業化成功以及開源未來發展的諸多可能。
分享內容涵蓋開源作者“刪庫”背后的故事解讀、開源的發展歷史回顧、軟件的交易邏輯分析、軟件開源的本質屬性探討以及對未來開源軟件全面商業化的展望。感興趣的同學可掃描下圖二維碼添加小助手微信提前預約直播。期待您的關注與支持!