1. 程式人生 > >怎樣才是真正的架構師

怎樣才是真正的架構師

西門子中國中央研究院首席架構師、圖書《架構之美——軟體架構的藝術》作者李偉,從架構師的定義和內涵、能力和素質要求、成長途徑等方面向您闡述成為一個真正的架構師需要經歷的歷程。

記者: 您認為具備哪些能力,才算是真正的架構師?

李偉:雖然業界有關什麼是“軟體架構”有著明確的定義及共識,但是確實沒有軟體架構師的定義。簡單地講,架構師是一個技術控制的角色。技術控制是從客戶或市場開始,一直到交付或服務的整個鏈條。如果大家對一個應用研發機構或產品研製機構的主要活動熟悉的話,就知道該鏈條上存在很多需要架構師負責的控制點。以西門子為例,西門子的戰略市場部門就會和業務部門的很多架構師進行協作。這主要是由於戰略市場部門的職能之一就是對未來十到十五年的技術和創新進行預判。這樣的技術預判,如果沒有架構師作為技術控制,單憑MBA出身的市場人員,大家能相信這樣的技術預判嗎?所以架構師需要具備一定程度的技術及創新預判能力。

從一個架構師的日常工作來看,他面對的基本上有七大問題:商業問題、系統問題、子系統問題、構件問題、技術問題、流程問題、專案管理問題。其中,前五項是一個架構師主要負責解決的。這裡我嘗試提幾個問題,讓大家檢驗一下自己是否具備解決這些問題的能力。

如果進行企業應用開發,你知道經典的商業運營手段一般有哪些嗎?例如:公司中一般有哪些典型的職能機構?最經典的公司財務部運作是什麼樣的?最經典的公司純研究機構的運作是什麼樣的?或者,最經典的公司純銷售機構是怎樣運作的?

如果你負責一個實時系統的架構,經典的架構構建步驟有幾步?一個醫學CT機系統應該用什麼架構風格來構建?軍用艦艇上的3C系統又應該使用什麼架構風格?除了我們都熟悉的MVC風格的架構,你還知道哪些架構風格?再具體一些,對於系統的併發問題,你知道業界流行的經典解決手段包括哪些?

如果你負責子系統及構件設計,經典的設計步驟有幾步?分別又有哪些活動?除了你熟悉的Gang of Four的23個設計模式,你還知道什麼設計實踐?再具體一些,設計中有關同步、事件、資源管理等,你知道哪些前人的最佳實踐呢?

實踐工作中,我們遇到的現實是:盲目追隨業界通用框架,即對框架或中介軟體的嚴重依賴。這些框架或中介軟體背後實際隱藏了很多技術、設計、應用場景,也就是說為設計開發人員隱藏了很多系統設計開發的複雜性。如果架構師把各項系統級架構質量的要求,想當然統統扔給這些框架或中介軟體去處理,將會帶來災難性的後果。業界有這樣一句話:“框架或中介軟體是用來幫助你的,而不是代替你去思考和工作的。”所以我們必須根據現實的系統要求,自己動腦筋去構建適合現狀的軟體架構!

簡而言之,架構師需要具備的能力=熟知最佳實踐+動腦靈活使用+技術及創新預判。

記者: 在中國,一個程式設計師如何才能成長為一個職業架構師?

李偉:曾經無意間讀過一篇紀事報告《最後的大師》。此文作者是應錢學森先生的邀請,來記錄自己的導師,清華大學物理系及清華大學創始人之一的葉企孫先生。葉先生早年在美國留學期間,在物理方面做出過傑出的貢獻。雖然大多數後人並不知道葉先生,但是他的學生沒有一個會忘記他,其中包括三錢、華羅庚、李政道、楊振寧等等。可以這樣說,你所知道的中國大師,大多都是他的學生。閱讀完此文,頗受啟發:真可謂“大師培養大師”。我非常欣賞這句話。

如果身邊有大師,自然是從程式設計師成長為架構師的捷徑了。我身邊沒有大師,便選擇這樣的道路:認真反思自己這些年來的學習和實踐,並將其上升為智慧。畢竟,智慧既是指導我繼續工作的原始動力,也將指導自己未來的創新工作。因此,我選擇了閱讀、學習和思考。

記者: 您認為在中國的軟體企業中,大家在普遍認識中對架構師這一職業有哪些誤區?

李偉:誤區一,架構師與專案經理沒有區別。大家經常在談論架構師時,混淆了專案經理的職責和架構師的職能。專案經理要對人、流程、錢等內容負責。但是架構師主要是對技術負責。所以我個人不是很喜歡在談論系統架構時,過多的談論流程或管理。雖然我也是流程方面和管理方面的專家。

誤區二,技術好的人就能成為架構師。其實,職業架構師與職業程式設計人員有著同樣重要的分量,只不過各自負責的工作內容及需要具備的能力各不相同。例如:架構師熟知如何將系統架構構建得適應系統後續國際化/本地化的工作;但是並不一定必須知道介面熱鍵在.NET下呼叫什麼來實現。

誤區三,架構師必須懂得業務領域的知識。從本質上來看,軟體架構本身就是在模仿人類大腦的問題思考和解決習慣。自然,專業架構師所掌握的知識就是解決那些反覆出現的相似問題的最佳手段。所以,業界都知道這樣一個著名的故事:一個非航天專業的軟體架構人員,可以被美國國家航天局請去做航天系統的架構評審。這一點兒都不奇怪,因為他知道解決系統併發問題時,當今最經典的那麼幾種手段,你能說航天系統的併發問題與企業應用併發問題本質上不一樣嗎?由於當前國內軟體研發的各種侷限,很多軟體從業人員的認知還停留在“懂業務+技術好”就是架構師這樣的層面上。其實,懂得經典的解決方法,並能從實踐中抽象出理論或最佳實踐的人,才是架構人員的專業水平。

記者: 在《架構之美——軟體架構的藝術》一書中,您認為最創新的理念有哪些?

李偉:一個架構從建立、進化、老化到消亡的整個過程,是此書的核心。如同宇宙萬物,架構也存在一個生命週期的概念。即“架構生命週期(Architecture Lifecycle)”。

怎樣才是一個真正意義上的軟體架構師?

當面臨構建一個軟體架構時,應該採用怎樣的流程去工作呢?

怎麼做才能構建出滿意的高品質架構及設計呢?

當我們階段性地完成了架構的構建,如何去評估結果呢?

軟體產品在演化,軟體架構也會跟隨演化,如何應對這種變化?

十年前開發的產品,架構文件殘缺不全,設計人員已經離職,怎麼把產品的架構從紛繁複雜的頭緒中清理出來呢?

如果我們要研發十幾個功能相似的產品,該如何高效地工作呢?

上述這些理念,基本上是一個職業架構人員所需具備的專業素養。奉獻給大家,以供參考。

(本文來自《程式設計師》10年05期,更多精彩內容敬請關注10年05期雜誌)