做人、做事,做架構(gòu)師――架構(gòu)師能力模型解析_第1頁
做人、做事,做架構(gòu)師――架構(gòu)師能力模型解析_第2頁
做人、做事,做架構(gòu)師――架構(gòu)師能力模型解析_第3頁
做人、做事,做架構(gòu)師――架構(gòu)師能力模型解析_第4頁
做人、做事,做架構(gòu)師――架構(gòu)師能力模型解析_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、做人、做事,做架構(gòu)師架構(gòu)師能力模型解析作者:周愛民來源:程序員雜志 酷勤網(wǎng)收集2009-04-08摘要酷勤網(wǎng)在管理體系里面,你的個(gè)人特性決定了你在哪個(gè)位置,而技術(shù)技能只是做事實(shí)施的必需。架構(gòu)師這個(gè)職務(wù),同時(shí)要求較高的個(gè)人素質(zhì)和技術(shù)能力,因此它的進(jìn)取之路總結(jié)起來就是:做人、做事,做架構(gòu)師。 要想從一名普通程序員發(fā)展成為優(yōu)秀的架構(gòu)師,“個(gè)人特性”與“技術(shù)技能”缺一不可;而“技術(shù)專業(yè)能力”、“人際關(guān)系能力”和“業(yè)務(wù)能力”更是優(yōu)秀架構(gòu)師重要的三種能力。文 / 周愛民(程序員2008年4月刊)引子究竟是什么讓你在同一個(gè)位置上例如程序員或技術(shù)負(fù)責(zé)人工作了三年、五年或者更久,而仍然得不到任何的發(fā)展空間?你覺

2、得自己已成為技術(shù)圈中的大牛,并信心滿滿地去拿明天就要頒發(fā)的某某大獎(jiǎng),然而卻仍然停留在同樣的技術(shù)職位上,去年到今年漲的薪水甚至填不平物價(jià)升幅?于是,你開始對(duì)老板不滿,對(duì)員工不滿,對(duì)昨天升職的那個(gè)同事不滿你開始計(jì)劃明天就要跑單,或者準(zhǔn)備考慮提出加薪卻又心懷忐忑。如果技術(shù)人員有發(fā)展的軌跡,那么他要么“看透工具的本質(zhì),把關(guān)注點(diǎn)轉(zhuǎn)移到團(tuán)隊(duì)的圈子里去”,要么“順著代碼鋪就的道路,亦步亦趨地成為良匠大師”。僅以技術(shù)方向而言,你大概可以做到架構(gòu)師、總架構(gòu)師甚至首席架構(gòu)師;但問題是:你現(xiàn)在還只是一個(gè)程序員。那要如何才能踏上通往架構(gòu)師之路呢?本文為你解析一個(gè)架構(gòu)師的能力模型。你能不能做一個(gè)好的架構(gòu)師?架構(gòu)師不是界

3、定一個(gè)技術(shù)高下的職位名稱,而是一個(gè)職務(wù)。所謂職務(wù),包括職職位,務(wù)工作。前者決定了你具備哪些資源,可以影響到怎樣的范圍,以及面向的機(jī)構(gòu),后者則簡單地是你需要完成的工作列表。所以我說“架構(gòu)師”不是指“一個(gè)能做架構(gòu)的人”。前者是把架構(gòu)師當(dāng)職能,后者是當(dāng)工人。能做一份工作列表中的事,并不等于就成為相應(yīng)職位上的人。在管理體系里面,你的個(gè)人特性決定了你在哪個(gè)位置,而技術(shù)技能只是做事實(shí)施的必需。架構(gòu)師這個(gè)職務(wù),同時(shí)要求較高的個(gè)人素質(zhì)和技術(shù)能力,因此它的進(jìn)取之路總結(jié)起來就是:做人、做事,做架構(gòu)師。因此“模型”由“個(gè)人特性”和“技術(shù)技能”兩個(gè)方面構(gòu)成,在第一張圖中,我特別說明“個(gè)人特性”既包括人際關(guān)系的能力,也

4、包括(具體)業(yè)務(wù)能力;“技術(shù)技能”也是如此。所以個(gè)人特性主要與“做人”有關(guān),部分地也包含“做事”的要素。圖1 架構(gòu)師能力模型“有效溝通”以及“學(xué)會(huì)談判”與做具體的事無關(guān),是個(gè)人能力特性的公共方面。前者是過程,后者是知道如何定目標(biāo)與求結(jié)果。而“風(fēng)險(xiǎn)與防備”是做事過程控制的關(guān)鍵,與前面兩項(xiàng)正好構(gòu)成了一個(gè)做事基本能力的完整體系?;旧?,這三項(xiàng)個(gè)人特性都是一個(gè)“普通程序員”所不具備的,甚至在大多數(shù)情況下,普通程序員并不愿意去具備這樣的個(gè)人特性,因?yàn)樵谠S多陷于技術(shù)泥淖的開發(fā)人員看來:溝通總是會(huì)使事情變得更加麻煩,談判則徒耗時(shí)間而無濟(jì)于事。然而事實(shí)上,在整個(gè)的架構(gòu)決策過程中,架構(gòu)師需要不停地溝通與談判。將

5、“架構(gòu)”變成“決策”的過程,其實(shí)就是對(duì)各個(gè)技術(shù)角色(及其思想)兼容并包的過程,你需要不斷地協(xié)調(diào)需求、實(shí)現(xiàn)之間的各種問題,也需要面對(duì)各種投資者(時(shí)間、資金、人才等方面的決策者)進(jìn)行談判,以確定項(xiàng)目的規(guī)模沒有規(guī)模也就沒有范圍,沒有范圍如何展開設(shè)計(jì)呢?一部分開發(fā)人員會(huì)認(rèn)為上述過程是“項(xiàng)目經(jīng)理”的事情,但真的如此嗎?當(dāng)你作為一個(gè)更高級(jí)別的架構(gòu)師,以至于要影響到多個(gè)項(xiàng)目的決策時(shí),你就全然不會(huì)有這種感受了。因?yàn)檫@種情況下,你的決策將先于項(xiàng)目的啟動(dòng),或者說你已經(jīng)不單單是一個(gè)技術(shù)角色了。設(shè)計(jì)是架構(gòu)能力的一部分,但架構(gòu)師不是設(shè)計(jì)師看清楚二者之間的不同,你才真正邁出了架構(gòu)師職業(yè)生涯的第一步。抽象是思維能力、模型化

6、是表達(dá)能力個(gè)人特性中另一個(gè)非常重要的方面是“抽象思維”,而這是與架構(gòu)師角色直接相關(guān)的一種能力。這種能力既有職業(yè)技能特征,又是普遍性的能力。所謂普遍性的能力,是指“抽象”在我們作為人這種個(gè)體的生活中無處不在。例如我們說花、草,說桌、椅我們用語言去指稱任何一個(gè)既已存在的(可以脫離我們的語言而自然存在的)事物時(shí),就用到了抽象。說“桌子”的時(shí)候,既沒有描述桌子的具體形式,也沒有說明它的規(guī)格,但我們用這個(gè)名詞時(shí),所有人都知道“桌子是什么”。所以,名詞概念是整個(gè)抽象邏輯系統(tǒng)中的主體。如果失去了這些名詞定義,我們基本上不能說話,也不能描述任何東西那便到了“只可意會(huì)不可言傳”的境地。用現(xiàn)有的成熟語匯去描述你的

7、系統(tǒng)時(shí),大多數(shù)人會(huì)理解你所表達(dá)的含義,例如我們說“這個(gè)系統(tǒng)設(shè)計(jì)為一個(gè)三層結(jié)構(gòu)”。然而架構(gòu)師面臨的系統(tǒng)在許多細(xì)節(jié)上并不見得能夠用成熟的語匯去描述,因此必須自已構(gòu)建一個(gè)抽象系統(tǒng),這就需要概念抽象能力、概念表達(dá)能力和基于概念的邏輯表達(dá)能力。概念抽象能力是一種思維能力。簡單地說,就是“把目標(biāo)分解或概括清楚”:你要么概而言之“它是什么”,要么詳細(xì)地說明“它包括什么”。必須使用大量的語匯來陳述這個(gè)“什么”,這不單單是表達(dá)為文字,也表達(dá)為你在思想過程中的一個(gè)完整系統(tǒng)。通常用的方法是“映射系統(tǒng)”。例如你可以用數(shù)學(xué)中的“數(shù)軸”來映射“實(shí)數(shù)域”。將目標(biāo)系統(tǒng)形式化為一個(gè)概念化的、可討論的結(jié)構(gòu)系統(tǒng)后,你的抽象過程就基

8、本結(jié)束了。圖2 能力模型中的個(gè)人特性然而這個(gè)“抽象系統(tǒng)”可能只構(gòu)建在你的思維意識(shí)里,還必須把它描繪出來。因?yàn)椴荒苤皇悄阕约核伎记宄?,系統(tǒng)就能設(shè)計(jì)完成。這個(gè)“描繪”就依賴于后面兩種表達(dá)能力,一種是描繪概念實(shí)體,一種是描繪實(shí)體上的邏輯有趣的是,這似乎又回到了“程序結(jié)構(gòu)算法”。現(xiàn)在大家回過頭來看看UML,或者更多種類的ML(建模語言),他們就用于表達(dá)這兩個(gè)方面的東西:要么是概念實(shí)體(例如用一個(gè)框表明系統(tǒng)邊界),要么是實(shí)體上的邏輯(例如用箭頭表明邏輯時(shí)序)。所以大家應(yīng)該清楚,我們?cè)偃绾畏Q贊UML,它也只是一種對(duì)模型化系統(tǒng)的“表達(dá)能力”,你只能把它當(dāng)一種輔助表達(dá)的工具去使用,它本身既不能幫助思考,也不見

9、得能作為抽象過程中的或抽象思維環(huán)境中的參考。任何一個(gè)優(yōu)秀的架構(gòu)師都有自己獨(dú)特的思考方式,這決定了他如何抽象系統(tǒng),以及如何“創(chuàng)造性地”設(shè)計(jì)與構(gòu)畫這個(gè)系統(tǒng)。這種“獨(dú)特的思考方式”貫徹他從孩童開始的整個(gè)成長過程,直至他形成獨(dú)立的社會(huì)觀、人生觀與世界觀。他認(rèn)識(shí)世界的方式和接受世界的能力決定于他如何思考,也反映了他這種思考方式的“獨(dú)特性”。但這并不表明他有特立獨(dú)行的行為特性(我們這里只說他的思考方式),我們不應(yīng)介意他是否用某種語言(例如UML或者形式化編程語言)來表達(dá)他的思考結(jié)果。推動(dòng):設(shè)計(jì)做大,實(shí)施做小架構(gòu)師首先是把問題的真正目標(biāo)確定下來,然后變成系統(tǒng)設(shè)計(jì)、平臺(tái)設(shè)計(jì)或架構(gòu)設(shè)計(jì)。而在此之后設(shè)計(jì)輸出將會(huì)有

10、兩個(gè)方向的發(fā)展,一是被忠實(shí)地貫徹下來,二是被變形地發(fā)展下去。兩個(gè)方向都存在致命的危險(xiǎn):架構(gòu)最終能否被完整實(shí)現(xiàn)。對(duì)前者來說,可能是架構(gòu)設(shè)計(jì)過度,或設(shè)計(jì)本身出現(xiàn)了錯(cuò)誤;后者則是對(duì)架構(gòu)直接的傷害。所以架構(gòu)師必須參與實(shí)施的全程尤其是在架構(gòu)被映射為目標(biāo)系統(tǒng)的前期。在這個(gè)階段中,架構(gòu)師的任務(wù)就是推動(dòng)架構(gòu)實(shí)施,以保證在項(xiàng)目全程的設(shè)計(jì)架構(gòu)體系的一致性。除了直接跟設(shè)計(jì)師或設(shè)計(jì)團(tuán)隊(duì)溝通,以保證他們的設(shè)計(jì)在你可以控制的范圍之內(nèi)以外,架構(gòu)師還必須有階段化設(shè)計(jì)的能力。這種能力用于將一個(gè)原本規(guī)模宏大的架構(gòu)設(shè)計(jì),變成較小的、易于實(shí)施的、對(duì)開發(fā)團(tuán)隊(duì)來說可控的關(guān)鍵點(diǎn)。例如在體系層次的規(guī)劃上,設(shè)計(jì)可能是獨(dú)立、異質(zhì)的、可遷移的存儲(chǔ)

11、框架來實(shí)現(xiàn)數(shù)據(jù)層,但在(前期的)實(shí)施上,這里可能被表達(dá)為本地?cái)?shù)據(jù)庫,并要求前端開發(fā)人員必須通過一個(gè)清晰的數(shù)據(jù)交互層來訪問例如一組數(shù)據(jù)存取接口,或一個(gè)獨(dú)立數(shù)據(jù)服務(wù)組件。開發(fā)人員可能在這里遇到障礙:因?yàn)橐ㄟ^這些中間層來訪問本地?cái)?shù)據(jù)庫,純粹是多余的。然而,正是這“多余的工作”提供了系統(tǒng)彈性,為并行團(tuán)隊(duì)開發(fā)公共存儲(chǔ)服務(wù)爭取了周期,也為將來的靈活部署與數(shù)據(jù)遷移提供了可能。這里的關(guān)鍵就在于,無論原始系統(tǒng)設(shè)定有多大,實(shí)施時(shí)總是在“做小”。每一個(gè)局部的實(shí)施塊都是可控的,并為它在整個(gè)體系空間中留下了位置和接口,這樣才可能由“小的部分”做大。一個(gè)大系統(tǒng)的架構(gòu)師可能同時(shí)在考慮許多個(gè)項(xiàng)目中的、不同位置的架構(gòu),并且清

12、楚這些項(xiàng)目最終的總體規(guī)模。而這,就是平臺(tái)架構(gòu)師和體系架構(gòu)師所涉的領(lǐng)域。圖3 架構(gòu)師模型圖中的“實(shí)現(xiàn)能力”架構(gòu)真的是“好不好”的問題嗎?如同我對(duì)工程的理解一樣,架構(gòu)問題的根本,也并不在于它是否完美或漂亮,而是在于是否合用。因此架構(gòu)師必須對(duì)實(shí)施架構(gòu)的團(tuán)隊(duì)以及實(shí)施過程有充分了解,知道他們的能力缺陷,知道實(shí)現(xiàn)過程要消耗的資源,清楚每個(gè)環(huán)節(jié)可能的故障以及先兆。只有這樣,架構(gòu)師才能設(shè)計(jì)一個(gè)讓這個(gè)團(tuán)隊(duì)能實(shí)現(xiàn),而且在實(shí)現(xiàn)過程中能受控的架構(gòu)。要知道,你作為架構(gòu)師被請(qǐng)來,不是畫幾張圖紙交給項(xiàng)目經(jīng)理,說:你們?nèi)プ霭?,做不出來是你們不?huì)做。即使你可以身體力行,在這個(gè)團(tuán)隊(duì)中教大家、培養(yǎng)大家,那么公司的開銷呢?風(fēng)險(xiǎn)呢?這

13、些東西難道就不考慮了?項(xiàng)目的周期因?yàn)閷?shí)現(xiàn)的復(fù)雜程度而無法控制時(shí),項(xiàng)目就死掉了。那么,追根究底來說,是不是架構(gòu)師的問題?是啊,你為什么會(huì)做了一份“不合用”的架構(gòu)呢?你都不知道項(xiàng)目如何開發(fā)、由誰實(shí)施、如何管理等等,又如何能面對(duì)這些實(shí)際環(huán)境去設(shè)計(jì)架構(gòu)呢?所以這一部分能力,是要在你的開發(fā)經(jīng)驗(yàn)、團(tuán)隊(duì)經(jīng)驗(yàn)以及用人識(shí)人的經(jīng)驗(yàn)中去找的。參考模型圖的“實(shí)現(xiàn)能力”下的“設(shè)計(jì)能力了解你的主要溝通對(duì)象”和“架構(gòu)推行”等分支,對(duì)你或有一些可用的提示。局部與全局架構(gòu)是一個(gè)從全局到局部的過程,而實(shí)施正好反過來,是從局部到全局。這也正是“設(shè)計(jì)做大,實(shí)施做小”的另一個(gè)層面的含義。設(shè)計(jì)大才可以見到全局,才知道此全局對(duì)彼全局的影響

14、;實(shí)施小才可能關(guān)注細(xì)節(jié),才談得上品質(zhì)與控制。事實(shí)上,大多數(shù)情況下架構(gòu)是在為“當(dāng)前項(xiàng)目之外”去考慮,這可以看成全局關(guān)注的一個(gè)組成部分。因此我們需要界定所謂“全局”的范圍:超出公司或整個(gè)產(chǎn)品系列、產(chǎn)品線或規(guī)劃的范圍才是多余的。所以當(dāng)架構(gòu)決策談及“全局”時(shí),其目標(biāo)并不見得是“保障當(dāng)前項(xiàng)目”,而又必須由當(dāng)前項(xiàng)目去完成。一個(gè)經(jīng)常被用到的例子是:如果僅為當(dāng)前項(xiàng)目考慮,那么只需要做成DLL模塊;如果為產(chǎn)品線考慮,可能會(huì)是“管道插件”的結(jié)構(gòu)形式。而“管道插件”的形式顯然比做成DLL模塊更費(fèi)時(shí),這個(gè)時(shí)間成本(以及其它成本)就變成了當(dāng)前項(xiàng)目的無謂開銷。這種全局策略對(duì)局部計(jì)劃的影響是大多數(shù)公司不能忍受的,也被很多團(tuán)

15、隊(duì)所垢病。然而這卻是架構(gòu)師角色對(duì)體系的“近乎必然”的影響如果你試圖在體系中引用架構(gòu)師這個(gè)角色的話。一些情況下,體系能夠容納這種影響,例如“技術(shù)架構(gòu)師”試圖推動(dòng)某種插件框架,而正好開發(fā)人員對(duì)這項(xiàng)技術(shù)感興趣,那就順其自然地花點(diǎn)工夫去實(shí)現(xiàn)了。但如果不是這樣,實(shí)施者或?qū)嵤﹫F(tuán)隊(duì)看不到“多余的部分”對(duì)他們的價(jià)值時(shí),來自局部的抵觸就產(chǎn)生了。這種情況下,平衡這些抵觸就成了架構(gòu)推行的實(shí)務(wù)之一。在我看來,“平衡”是全局的藝術(shù)和局部的技術(shù)。也就是說,一方面架構(gòu)師要學(xué)會(huì)游說,另一方面也要尋求更為簡潔的、成本更小的實(shí)現(xiàn)技術(shù)。只有當(dāng)整個(gè)體系都意識(shí)到(你所推行的)架構(gòu)的重要性,而且實(shí)施成本在他們可以接受的范圍之內(nèi)時(shí),他們才

16、會(huì)積極行動(dòng)起來。所以所謂平衡,其實(shí)也是折衷的過程。構(gòu)架師只有眼中見大,才知道哪些折衷可以做,而哪些不能。所謂設(shè)計(jì)評(píng)估(模型圖中的實(shí)現(xiàn)能力->設(shè)計(jì)能力->設(shè)計(jì)評(píng)估分支)并不是去分析一個(gè)設(shè)計(jì)結(jié)果好或不好,而是從中看到原始的需求,看到體系全局的意圖,然后知道在將設(shè)計(jì)變得更為“適當(dāng)”時(shí)可以做哪些折衷。同樣的原因,架構(gòu)師也必須知道自己的決策會(huì)產(chǎn)生的影響,才能控制它們,以防它們變成團(tuán)隊(duì)的災(zāi)難。有些時(shí)候,架構(gòu)師甚至需要拋棄一些特性,以使得項(xiàng)目能夠持續(xù)下去。因?yàn)楫a(chǎn)品的階段性產(chǎn)出只是整個(gè)戰(zhàn)略中的一個(gè)環(huán)節(jié),而不是全部。其它“怎么做一個(gè)架構(gòu)師”這個(gè)問題得分成兩個(gè)部分來看,一個(gè)是“做到”,一個(gè)是“做好”。

17、由于架構(gòu)師本身不過是一個(gè)技術(shù)職位,所以時(shí)機(jī)成熟了自然會(huì)做得到。但問題是,真有一天你被放在這個(gè)位置上了,你能做得好嗎?我瀏覽過幾套所謂培訓(xùn)機(jī)構(gòu)的有關(guān)架構(gòu)師的教程,也翻閱過一些講架構(gòu)的書。我發(fā)現(xiàn)他們普遍地是將架構(gòu)作為一種“職業(yè)技術(shù)”來講,就像培養(yǎng)程序員或者縫紉工一樣來教育。但就我的經(jīng)驗(yàn)來說,架構(gòu)并不是一件純粹表現(xiàn)技術(shù)能力的工作,所以并不是翻幾本書學(xué)幾種方法就可以投入“實(shí)戰(zhàn)”的。更深層的問題是,架構(gòu)師其實(shí)不是“戰(zhàn)”出來的。昨天跟同事討論這個(gè)話題,他把我們這幾年來的一些思考用了三句話來概括,非常精彩:從無到有的,是架構(gòu);從表到里的,是抽象;從粗到細(xì)的,是設(shè)計(jì)。那么到底什么是架構(gòu)呢?從上面的概括中你是看不到答案的。到底如何做架構(gòu)呢?從本文中你也是看不到答案的。然而我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論