能力要成體系
這兩天關(guān)于我那篇“架構(gòu)師的能力模型”的BLOG上的討論終于停歇了,所有的幾十個回復(fù)我都一一看過。大多數(shù)不是在第一時間看到,也差不遠了。正好CSDN的blog又新添了回訪的功能,于是一一回訪,看了看批評我的,或者贊許我的都是些誰。
但是我一篇也沒有回復(fù),回訪時也沒給人家留個信兒。以前的或許是懶,或者是沒想說的,這次卻不是。這次真的是故意不回。這有原因。
今天要講這個話題,一方面是因為這篇“架構(gòu)師的能力模型”的blog,另一方面則是看到了另一篇名為“真的漢子”的blog。后面這個,稍后會再講它的關(guān)系,我們這里還先說我的這篇博客所反映出來的信息。
我調(diào)查了一下回復(fù)者的先后,大概是越到后面,贊同的或者基本贊同的就越多;越在前面反倒是批評者眾。這個順序很重要,因為它正好反映了一種架構(gòu)師能力,就是謹慎。
我們先來說這套“架構(gòu)師的能力模型”的圖。批評者要么認為這套圖在求大求全,是超人模型;要么在認為這是不切實際,追求完美。其實都不是。首先大家對我所指的“架構(gòu)師”要有個概念。我們很多人都有設(shè)計工作,比較做數(shù)據(jù)庫設(shè)計或者具體功能的設(shè)計。這些設(shè)計中也有“架構(gòu)”和“框架”的概念,例如插件架構(gòu)/框架。但是,這是“架構(gòu)設(shè)計”,不是“架構(gòu)”;是一種技術(shù),而不是一種能力。在我的架構(gòu)師模型中,這些大概只占到“實現(xiàn)能力->設(shè)計能力”中的很少一部分。
因此先強調(diào)我說的“架構(gòu)師”不是指“一個能做架構(gòu)的人”。前者是把架構(gòu)師當職能,后者是當工人。
那么我到底說的是怎樣的“架構(gòu)師”呢?comiunknown給了一個稍稍接近一點點的答案:
--------------------
1、3年的coder;
2、1年的客戶溝通工作;
3、1年的team leader;
4、無限的學(xué)習(xí)、思考期,學(xué)會分析別人的系統(tǒng),思考為什么這么設(shè)計的原因,如果
讓我來設(shè)計,那些地方可以改進;
5、還要有一定的天賦/靈氣,能夠從紛亂的客戶要求中挖掘出真正的需求。
--------------------
后面兩條我基本同意,事實上也言及了我給出的能力模型圖中的幾個分支。但前三條,卻正體現(xiàn)了一種行業(yè)積弊:浮躁。連Peter Norvig都在說“十年學(xué)會編程”了,那么我們那些“招聘五年開發(fā)經(jīng)驗的Web架構(gòu)師”的小廣告是不是該撤了?
那么,我們那種兩年三年開發(fā),或者從某某學(xué)校畢業(yè)就想當架構(gòu)師的想法,是不是也該放下了?
然而,我也得承認有絕頂高手。大家智商不一樣,沒準兒Peter Norvig要十年才學(xué)會編程,某些人三年兩年也學(xué)得會、學(xué)得好。當然了,這個我說服不了大家。但是要清楚的是,我們在這里說“架構(gòu)師”,而“開發(fā)能力和設(shè)計能力”只是架構(gòu)師能力的很少一部分,即使有人比Peter Norvig(或其它更多的大牛們)更牛,那么起碼也不能說自己“學(xué)會寫程序”就成了架構(gòu)師吧。
還是沒解釋“什么是架構(gòu)師”對不?當然。我就來說說“什么是架構(gòu)師”,而什么又是“做架構(gòu)”。
做架構(gòu)差不多就是畫圖紙。象UML這樣的東西就是制圖元素,基本上你能用好一些建模語言,能構(gòu)畫出一個房子的基本骨架來,就是“會做架構(gòu)”了。這些東西在學(xué)校能學(xué)、書上能教,照貓畫虎個三年兩年來,沒有虎的威風(fēng),也有虎的樣子的。這在“能力模型”中也有,大概在“實現(xiàn)能力->設(shè)計能力->設(shè)計期語言”、“實現(xiàn)能力->模型化”以及一些其它很小的分支里頭。
而要有虎的威風(fēng)氣勢,這起碼要看過虎,而且要有面對真虎凜然不慎的心胸。在架構(gòu)設(shè)計中,這樣的能力也可以先從學(xué)習(xí)中來找,這是模型中“實現(xiàn)能力->設(shè)計能力->了解既有系統(tǒng)或模型”的主要內(nèi)容,在“實現(xiàn)能力->設(shè)計能力->設(shè)計評估”中,也有大部分內(nèi)容是關(guān)于這一點的。
在“設(shè)計評估”里有一句“懂得欣賞的才是藝術(shù)家”,我們這里在說讓你學(xué)會欣賞的“法子”,卻不見得你有品評者的心胸。所以類似于“學(xué)會肯定別人的設(shè)計”這些也成了你的能力,而你應(yīng)該注意到,這里的“學(xué)會肯定……”已經(jīng)不單純是技術(shù)能力的范疇了,它已經(jīng)涉及到你的性格修養(yǎng)。
當然有人說“架構(gòu)是一門藝術(shù)”。作為藝術(shù)性格很強的高手、專學(xué)者或者“精英”,很多人并不會肯定別人,而是拘于自我認為自己是超人。這樣的人中國自古就不缺,也有善評稱其“雅士”或“獨特”的,其藝術(shù)作品也大多成就斐然。但是有這樣品質(zhì)的能力,雖然不能說不好,卻一定不能拿來做架構(gòu)師。
因為他只會“做架構(gòu)”,或者說只能“做非常好的架構(gòu)”。卻不懂得如何“推行架構(gòu)”。
架構(gòu)真的是“好不好”的問題嗎?如同我對工程的理解一樣,架構(gòu)的問題的根源,也并不在于它是不是完美或者漂亮,而是在于是否合用。因此,架構(gòu)師必須對實施架構(gòu)的團隊,以及實施的過程有充分的了解,知道他們的能力缺陷,知道實現(xiàn)過程要消耗的資源,清楚每個環(huán)節(jié)可能的故障以及先兆。只有這樣,架構(gòu)師才能設(shè)計一個讓這個團隊能實現(xiàn),而且在實現(xiàn)過程中能受控的架構(gòu)。
要知道,你作為架構(gòu)師被請來,不是畫幾張圖紙交給項目經(jīng)理,說:你們?nèi)プ霭桑霾怀鰜硎悄銈儾粫觥<词鼓憧梢陨眢w力行,在這個團隊中教大家、培養(yǎng)大家,那么公司的開銷呢?風(fēng)險呢?這些東西難道就不考慮了?項目的周期因為實現(xiàn)的復(fù)雜程度而無法控制時,項目就死掉了。那么,追根究底來說,是不是架構(gòu)師的問題?是啊,你為什么會做了一份“不合用”的架構(gòu)呢?
所以這一部分能力,是在要你的開發(fā)經(jīng)驗、團隊經(jīng)驗以及用人識人的經(jīng)驗中去找的,這些大概包括在模型圖的“實現(xiàn)能力->設(shè)計能力->了解你的主要溝通對象”和“實現(xiàn)能力->架構(gòu)推行”中。
你看我們說了這么多,還只講了幾個小的分支,主要還是在“實現(xiàn)能力”中打轉(zhuǎn)。大多數(shù)人的問題是:我們?yōu)槭裁匆私?/span>“決策背景”,以及類似于“談判”、“溝通”、“風(fēng)險”等等這些方面的能力呢?
我們說過“做架構(gòu)”不同于“是架構(gòu)師”。問題的關(guān)鍵就在于規(guī)模。如果你只是為一個幾人小組而設(shè)計一個架構(gòu),那么沒關(guān)系;大概你還會是實施人員,因此更是沒什么問題。但是,“架構(gòu)師”應(yīng)該面臨的是大規(guī)模項目,是百人、數(shù)百人規(guī)模的團隊的實施工作。架構(gòu)師身邊,除了具體的實現(xiàn)人員,還是更多的設(shè)計師、項目經(jīng)理、技術(shù)專家、老板、客戶……面對這些問題,你還能說“我會做架構(gòu)”就夠了嗎?
要知道,上述的每一個角色,都會對架構(gòu)造成“傷害”。我在做架構(gòu)實施過程中說得最多的,就是“架構(gòu)傷害”這個詞。因為每個角色都會對架構(gòu)有疑問、有想法。對于公司、客戶高層來說,即使你是最權(quán)威的專家,在沒能把你的設(shè)計講述清楚之前,他們也是不會盲目地通過項目的。因為專家拍腦袋的教訓(xùn),從(包括傳統(tǒng)行業(yè)在內(nèi)的)歷史上來看,真的是血淋淋的。
架構(gòu)必須面臨的是決策者的思想以及方向,你得明白他們?yōu)槭裁词且鲆粋€架構(gòu),希望這個架構(gòu)支撐多長時間周期的持續(xù)開發(fā)和經(jīng)營。然后,你得抺平這些“高端的思想”,把它變成一個可以具體實施的方案,因為具體到開發(fā)人員來說,他們是以完成任務(wù)為目標的,而不是去憧憬那些“高端的思想”。
作為架構(gòu)師,你要站在一個既務(wù)實也務(wù)虛的角色上,你得理解項目經(jīng)理、產(chǎn)品經(jīng)理和開發(fā)人員最切實際的實施方案,也得了解戰(zhàn)略決策者們?yōu)閷碜龀龅囊?guī)劃。重要的是,架構(gòu)師這個角色,對體系的保障正是面向這些規(guī)劃的——你看看,“可持續(xù)、可移植、彈性、集成性……”這些不都是對戰(zhàn)略的闡敘么?
現(xiàn)在你會還認為那些“超人能力”是不需要的嗎?你還堅持三年兩年就可以成就一個架構(gòu)師這樣美妙的的構(gòu)想嗎?當然,如果你要在一個小規(guī)模團隊中擔任架構(gòu)角色,實現(xiàn)一些架構(gòu)的設(shè)計工作,那么固然是行的,但請將眼光放開,想一想我們一直為大型團隊而煩惱的那些問題……國內(nèi)的軟件行業(yè),在大型團隊上來說,真的是沒有多少積累和思考的。
我們現(xiàn)在來說那些很快就回復(fù)的,以及回復(fù)時對上述問題根本沒有思考的人朋友,他們犯下的,不正是這幅模型圖最上面的那個分支中表現(xiàn)出來的問題嗎?在“學(xué)會交談”中就清清楚楚地寫著“學(xué)會聽”和“不要急于表達,以及肯否”。在這個例子中,真正的問題是:急于表達可能是個性問題;而急于肯否,則關(guān)乎于性格修養(yǎng)了。面臨一件事物時,過早的肯否,其實是使你失去了更深地了解它的機會。
我們現(xiàn)在看到的這幅“架構(gòu)師能力模型”,其實表達了個人能力、性格與心理素質(zhì)的一種組合,這絕不是單獨某個方面的提高或者補強。作為一個“工作型角色”(例如開發(fā)人員)來說,大要在技術(shù)方面擅長就很好了,專精更是不錯。這也是我們技術(shù)角色的一貫思維。但對于“職能型角色”(例如一定管理職務(wù)或者管理鏈條上的中間環(huán)節(jié))來說,“能力要成體系”就是重中之重了。
所以這又變成一個角色問題了。我們要從工作型角色變成職能型角色(例如做技術(shù)變成做管理),那么根本之處,便在于從專精能力變成有體系的能力培養(yǎng)。這就是我開始提到那篇“真的漢子”的博客文章的原因。周筠老師在講她的這篇博客時說,她的一些編輯在面對MSRA的這位作者時,表現(xiàn)很緊張、很怯,基本上已經(jīng)到了“不敢接微軟那位‘漢子’的話”的地步。我聽到這個故事的第一反應(yīng),是說:
--------------------
Aimingoo said (0:36:04):
這與膽量沒多大關(guān)系。
Aimingoo said (0:37:32):
1、承認錯誤 2、據(jù)理力爭
就這兩條,就可以跟這個人打好交道了。
但細想下去,我又接著說:
--------------------
Aimingoo said (0:38:26):
隨便說,第三條是“有禮有節(jié)”。這看起來是外交辭令。但是真的很有用。因為據(jù)理力爭是必要的,但把握不好尺度,事就會砸。
而對于很多人,這三條是一條一條過來的。
imingoo said (0:40:43):
先是做不好承認錯誤,什么事都認為自己對;接下來做不到據(jù)理力爭,是性格軟弱的一面;
最后是不懂禮節(jié),是缺乏教育的一面。
這三件做好,就算業(yè)務(wù)能力上有欠缺,也是人才了。
:)
然而我們看到,這里提及的三條,卻正是技術(shù)人員,以及我們前面講到的那種“藝術(shù)性格很強的高手”通常的問題。換在這樣的故事里,就是技術(shù)再強再好,也不會跟這位先生打好交道。所以,這真的是要當成“個人能力體系的不足”來看,而不能單純地“練練膽量”就可以了。
在我們講“架構(gòu)師能力模型”這個話題時,很多人認為這個模型求大求全,然而正是他們應(yīng)該“太大太全”的那一部分能力是他們所缺的;很多人認為這是超人模型,然而這正表現(xiàn)了他們對“架構(gòu)師”這個角色(而非“做架構(gòu)”的能力)的盲目。同樣,面對周筠老師所說的這位“漢子”,那些露怯者是不是“有一部分能力缺失”,或者對自己所處的“職能”(而非技術(shù)或職業(yè))角色有些盲目了呢?
所以能力的體系問題,愛立信的這個模型是對的。隨便說,這個三角模型將“個人內(nèi)在素質(zhì)”放在最中間,而這正好是我在“架構(gòu)師能力模型”圖中基本不講的,這個問題便留給大家去思考好了。正所謂省是自省,得是自得,做人便要越活越淺,知已不足方能厚補,從而顯得有力。而“做架構(gòu)師”以及“做好職能角色”這兩件事,合在一起便是一個自省自得,自我修養(yǎng)的功夫。放在表皮來看,用我常說的話來講,就是“能力要成體系”了。
===============
我的其它相關(guān)文章:
推個薦:十年學(xué)會編程
架構(gòu)師的能力模型(圖)
也說讀書
談企業(yè)軟件架構(gòu)設(shè)計