由于各個公司的領(lǐng)域,規(guī)模,人員配備等差異很大,形形色色的公司中頂著架構(gòu)師頭銜的諸般人等所從事工作的內(nèi)容以及所承擔的責任也是大相徑庭。務虛者有之,務實者也有之, 難以一概而論。甚至關(guān)于架構(gòu)一詞的具體含義在不同語境下也是很難達成共識的。然而作為架構(gòu)師,他應該做什么,能夠做什么,卻是我在自己的職業(yè)生涯中需要加以回答的問題。
軟件公司中的工作大致分為銷售,技術(shù),財務,打雜這幾類。架構(gòu)師所從事的工作大致上屬于技術(shù)這一攤,應該是一種高度專業(yè)化的技術(shù)工作。在我看來,一般所謂架構(gòu)師的工作主要是負責設(shè)計規(guī)范整個軟件項目/產(chǎn)品/產(chǎn)品線的整體結(jié)構(gòu),他所擺弄的是各種相關(guān)的技術(shù)元素。雖然作為公司的技術(shù)利益的代表者,架構(gòu)師會在某種程度上參與到公司的商業(yè)活動中(在某些巨型公司中,架構(gòu)師甚至可以通過標準規(guī)范對整個產(chǎn)業(yè)結(jié)構(gòu)施加影響),但是他更多的是接收商業(yè)需求將其轉(zhuǎn)化為技術(shù)約束,而很少是商業(yè)目標的制定者。業(yè)務架構(gòu)方面的設(shè)計更理想的是由業(yè)務專家進行,這個工作多半只需要技術(shù)的常識,而不需要對于技術(shù)本身的深刻洞察。在另一方面,雖然架構(gòu)師對于技術(shù)實現(xiàn)所需的技術(shù)/人力等資源需求會提出自己的估算和建議,但是他一般并不具備相應的手段和責任來具體管理整個實現(xiàn)過程。因此在我看來架構(gòu)師的管理職責并不是很大。當然,有些架構(gòu)師會更加接近商業(yè)和管理而遠離技術(shù),將他們稱之為"資深架構(gòu)師"可能更加合適。在某些大型系統(tǒng)的建設(shè)過程中,總體設(shè)計人員可以只負責收集各個子系統(tǒng)的技術(shù)要求,匯總后制定整體技術(shù)規(guī)范,所起的作用類似于協(xié)調(diào)人員,在這種情況下倒是對技術(shù)要求較低而對管理素質(zhì)要求較高了。
關(guān)于架構(gòu)的一個有趣的事實是,技術(shù)架構(gòu)本身其實很少存在設(shè)計問題。大部分問題只在于業(yè)務問題如何分解到既定的技術(shù)架構(gòu)上,一般的技術(shù)架構(gòu)也只是現(xiàn)有技術(shù)元素的簡單組合而已。所謂的架構(gòu)設(shè)計工作并不是在真正的系統(tǒng)全景下進行,它往往是基于已有經(jīng)驗所作的短暫延伸,是對業(yè)內(nèi)其他類似結(jié)構(gòu)的復制變形。我們所面臨的大量問題是選型問題,不是創(chuàng)造性問題,而是選擇性問題。架構(gòu)師最富技巧性的工作不是現(xiàn)在確定什么,做出選擇,而是確定現(xiàn)在可以不確定什么,可以將哪些選擇延遲。
在一般人看來,架構(gòu)師對于系統(tǒng)成敗必然起著關(guān)鍵性作用,否則他們憑什么屬于“活少錢多”的那伙人呢。但真實情況是,商業(yè)上的成敗很少是由技術(shù)架構(gòu)直接決定的。因為技術(shù)開放和快速傳播等原因造成了技術(shù)的趨同性,在技術(shù)層面上,大多數(shù)公司很難依靠技術(shù)形成差異化優(yōu)勢。競爭優(yōu)勢主要來源于業(yè)務理解和與用戶的接觸性,來自于歷史形成的業(yè)務格局。而在中國這樣一個營銷制導的商業(yè)世界中,架構(gòu)師的工作更難說是在構(gòu)造某種與眾不同的東西。只有少數(shù)大公司依靠把握標準才形成技術(shù)的話語權(quán),大部分人不過是在技術(shù)的大潮中隨波逐流罷了。“不求有功,但求無過”應該是架構(gòu)師基本的工作精神。技術(shù)失敗最常見的原因除了不夠?qū)I(yè)以外(在中國,“專業(yè)”的標準也許是不同的),就是過于自信,試圖去創(chuàng)造些新的結(jié)構(gòu),或者試圖全面應用某種不熟悉的技術(shù)。架構(gòu)建設(shè)應該是一個逐步改進的過程,不要激進盲動。
國內(nèi)的架構(gòu)師多數(shù)是從高級程序員發(fā)展而來,在工作期間多半是學習掌握外部知識,以掌握知識的細節(jié)程度和廣度為優(yōu)先。因為總是在別人搭好的平臺上活動,即使是參與過眾多大型系統(tǒng)的建設(shè),對于系統(tǒng)整體結(jié)構(gòu)一般也沒有提煉出自己的認識觀點。而有些大學設(shè)置了專業(yè),宣傳培養(yǎng)架構(gòu)師,但是實際上缺乏系統(tǒng)的實踐訓練,學生所學到的多半是高舉高打的套路,在實戰(zhàn)中的表現(xiàn)往往更差。掌握技術(shù)細節(jié)和自主的整體性思考對于架構(gòu)師而言都是不可或缺的。
雖然創(chuàng)新的技術(shù)未必是商業(yè)中核心的元素,但是真正的創(chuàng)造性仍然是每一個設(shè)計師的希冀。作為一名實踐者,我們都在某種程度上期望超越所經(jīng)歷的偶然,達到某種普遍的真理,在外部的物質(zhì)世界中留下自己的精神烙印。在這種意義下,架構(gòu)師的工作便不是簡單的技術(shù)背景或者技術(shù)理解可以涵蓋的了。我相信,在業(yè)務層和基礎(chǔ)技術(shù)設(shè)施之間存在著物理性的厚重的通用技術(shù)層,其中存在著大量的結(jié)構(gòu)規(guī)律等待我們的探索,這也正是Witrix平臺一直努力的方向。
軟件公司中的工作大致分為銷售,技術(shù),財務,打雜這幾類。架構(gòu)師所從事的工作大致上屬于技術(shù)這一攤,應該是一種高度專業(yè)化的技術(shù)工作。在我看來,一般所謂架構(gòu)師的工作主要是負責設(shè)計規(guī)范整個軟件項目/產(chǎn)品/產(chǎn)品線的整體結(jié)構(gòu),他所擺弄的是各種相關(guān)的技術(shù)元素。雖然作為公司的技術(shù)利益的代表者,架構(gòu)師會在某種程度上參與到公司的商業(yè)活動中(在某些巨型公司中,架構(gòu)師甚至可以通過標準規(guī)范對整個產(chǎn)業(yè)結(jié)構(gòu)施加影響),但是他更多的是接收商業(yè)需求將其轉(zhuǎn)化為技術(shù)約束,而很少是商業(yè)目標的制定者。業(yè)務架構(gòu)方面的設(shè)計更理想的是由業(yè)務專家進行,這個工作多半只需要技術(shù)的常識,而不需要對于技術(shù)本身的深刻洞察。在另一方面,雖然架構(gòu)師對于技術(shù)實現(xiàn)所需的技術(shù)/人力等資源需求會提出自己的估算和建議,但是他一般并不具備相應的手段和責任來具體管理整個實現(xiàn)過程。因此在我看來架構(gòu)師的管理職責并不是很大。當然,有些架構(gòu)師會更加接近商業(yè)和管理而遠離技術(shù),將他們稱之為"資深架構(gòu)師"可能更加合適。在某些大型系統(tǒng)的建設(shè)過程中,總體設(shè)計人員可以只負責收集各個子系統(tǒng)的技術(shù)要求,匯總后制定整體技術(shù)規(guī)范,所起的作用類似于協(xié)調(diào)人員,在這種情況下倒是對技術(shù)要求較低而對管理素質(zhì)要求較高了。
關(guān)于架構(gòu)的一個有趣的事實是,技術(shù)架構(gòu)本身其實很少存在設(shè)計問題。大部分問題只在于業(yè)務問題如何分解到既定的技術(shù)架構(gòu)上,一般的技術(shù)架構(gòu)也只是現(xiàn)有技術(shù)元素的簡單組合而已。所謂的架構(gòu)設(shè)計工作并不是在真正的系統(tǒng)全景下進行,它往往是基于已有經(jīng)驗所作的短暫延伸,是對業(yè)內(nèi)其他類似結(jié)構(gòu)的復制變形。我們所面臨的大量問題是選型問題,不是創(chuàng)造性問題,而是選擇性問題。架構(gòu)師最富技巧性的工作不是現(xiàn)在確定什么,做出選擇,而是確定現(xiàn)在可以不確定什么,可以將哪些選擇延遲。
在一般人看來,架構(gòu)師對于系統(tǒng)成敗必然起著關(guān)鍵性作用,否則他們憑什么屬于“活少錢多”的那伙人呢。但真實情況是,商業(yè)上的成敗很少是由技術(shù)架構(gòu)直接決定的。因為技術(shù)開放和快速傳播等原因造成了技術(shù)的趨同性,在技術(shù)層面上,大多數(shù)公司很難依靠技術(shù)形成差異化優(yōu)勢。競爭優(yōu)勢主要來源于業(yè)務理解和與用戶的接觸性,來自于歷史形成的業(yè)務格局。而在中國這樣一個營銷制導的商業(yè)世界中,架構(gòu)師的工作更難說是在構(gòu)造某種與眾不同的東西。只有少數(shù)大公司依靠把握標準才形成技術(shù)的話語權(quán),大部分人不過是在技術(shù)的大潮中隨波逐流罷了。“不求有功,但求無過”應該是架構(gòu)師基本的工作精神。技術(shù)失敗最常見的原因除了不夠?qū)I(yè)以外(在中國,“專業(yè)”的標準也許是不同的),就是過于自信,試圖去創(chuàng)造些新的結(jié)構(gòu),或者試圖全面應用某種不熟悉的技術(shù)。架構(gòu)建設(shè)應該是一個逐步改進的過程,不要激進盲動。
國內(nèi)的架構(gòu)師多數(shù)是從高級程序員發(fā)展而來,在工作期間多半是學習掌握外部知識,以掌握知識的細節(jié)程度和廣度為優(yōu)先。因為總是在別人搭好的平臺上活動,即使是參與過眾多大型系統(tǒng)的建設(shè),對于系統(tǒng)整體結(jié)構(gòu)一般也沒有提煉出自己的認識觀點。而有些大學設(shè)置了專業(yè),宣傳培養(yǎng)架構(gòu)師,但是實際上缺乏系統(tǒng)的實踐訓練,學生所學到的多半是高舉高打的套路,在實戰(zhàn)中的表現(xiàn)往往更差。掌握技術(shù)細節(jié)和自主的整體性思考對于架構(gòu)師而言都是不可或缺的。
雖然創(chuàng)新的技術(shù)未必是商業(yè)中核心的元素,但是真正的創(chuàng)造性仍然是每一個設(shè)計師的希冀。作為一名實踐者,我們都在某種程度上期望超越所經(jīng)歷的偶然,達到某種普遍的真理,在外部的物質(zhì)世界中留下自己的精神烙印。在這種意義下,架構(gòu)師的工作便不是簡單的技術(shù)背景或者技術(shù)理解可以涵蓋的了。我相信,在業(yè)務層和基礎(chǔ)技術(shù)設(shè)施之間存在著物理性的厚重的通用技術(shù)層,其中存在著大量的結(jié)構(gòu)規(guī)律等待我們的探索,這也正是Witrix平臺一直努力的方向。