2010-06-18 11:00:58 來(lái)源:
西門(mén)子中國(guó)中央研究院首席架構(gòu)師、圖書(shū)《架構(gòu)之美——軟件架構(gòu)的藝術(shù)》作者李偉,從架構(gòu)師的定義和內(nèi)涵、能力和素質(zhì)要求、成長(zhǎng)途徑等方面向您闡述成為一個(gè)真正的架構(gòu)師需要經(jīng)歷的歷程。
記者: 您認(rèn)為具備哪些能力,才算是真正的架構(gòu)師?
李偉:雖然業(yè)界有關(guān)什么是“軟件架構(gòu)”有著明確的定義及共識(shí),但是確實(shí)沒(méi)有軟件架構(gòu)師的定義。簡(jiǎn)單地講,架構(gòu)師是一個(gè)技術(shù)控制的角色。技術(shù)控制是從客戶(hù)或市場(chǎng)開(kāi)始,一直到交付或服務(wù)的整個(gè)鏈條。如果大家對(duì)一個(gè)應(yīng)用研發(fā)機(jī)構(gòu)或產(chǎn)品研制機(jī)構(gòu)的主要活動(dòng)熟悉的話(huà),就知道該鏈條上存在很多需要架構(gòu)師負(fù)責(zé)的控制點(diǎn)。以西門(mén)子為例,西門(mén)子的戰(zhàn)略市場(chǎng)部門(mén)就會(huì)和業(yè)務(wù)部門(mén)的很多架構(gòu)師進(jìn)行協(xié)作。這主要是由于戰(zhàn)略市場(chǎng)部門(mén)的職能之一就是對(duì)未來(lái)十到十五年的技術(shù)和創(chuàng)新進(jìn)行預(yù)判。這樣的技術(shù)預(yù)判,如果沒(méi)有架構(gòu)師作為技術(shù)控制,單憑MBA出身的市場(chǎng)人員,大家能相信這樣的技術(shù)預(yù)判嗎?所以架構(gòu)師需要具備一定程度的技術(shù)及創(chuàng)新預(yù)判能力。
從一個(gè)架構(gòu)師的日常工作來(lái)看,他面對(duì)的基本上有七大問(wèn)題:商業(yè)問(wèn)題、系統(tǒng)問(wèn)題、子系統(tǒng)問(wèn)題、構(gòu)件問(wèn)題、技術(shù)問(wèn)題、流程問(wèn)題、項(xiàng)目管理問(wèn)題。其中,前五項(xiàng)是一個(gè)架構(gòu)師主要負(fù)責(zé)解決的。這里我嘗試提幾個(gè)問(wèn)題,讓大家檢驗(yàn)一下自己是否具備解決這些問(wèn)題的能力。
如果進(jìn)行企業(yè)應(yīng)用開(kāi)發(fā),你知道經(jīng)典的商業(yè)運(yùn)營(yíng)手段一般有哪些嗎?例如:公司中一般有哪些典型的職能機(jī)構(gòu)?最經(jīng)典的公司財(cái)務(wù)部運(yùn)作是什么樣的?最經(jīng)典的公司純研究機(jī)構(gòu)的運(yùn)作是什么樣的?或者,最經(jīng)典的公司純銷(xiāo)售機(jī)構(gòu)是怎樣運(yùn)作的?
如果你負(fù)責(zé)一個(gè)實(shí)時(shí)系統(tǒng)的架構(gòu),經(jīng)典的架構(gòu)構(gòu)建步驟有幾步?一個(gè)醫(yī)學(xué)CT機(jī)系統(tǒng)應(yīng)該用什么架構(gòu)風(fēng)格來(lái)構(gòu)建?軍用艦艇上的3C系統(tǒng)又應(yīng)該使用什么架構(gòu)風(fēng)格?除了我們都熟悉的MVC風(fēng)格的架構(gòu),你還知道哪些架構(gòu)風(fēng)格?再具體一些,對(duì)于系統(tǒng)的并發(fā)問(wèn)題,你知道業(yè)界流行的經(jīng)典解決手段包括哪些?
如果你負(fù)責(zé)子系統(tǒng)及構(gòu)件設(shè)計(jì),經(jīng)典的設(shè)計(jì)步驟有幾步?分別又有哪些活動(dòng)?除了你熟悉的Gang of Four的23個(gè)設(shè)計(jì)模式,你還知道什么設(shè)計(jì)實(shí)踐?再具體一些,設(shè)計(jì)中有關(guān)同步、事件、資源管理等,你知道哪些前人的最佳實(shí)踐呢?
實(shí)踐工作中,我們遇到的現(xiàn)實(shí)是:盲目追隨業(yè)界通用框架,即對(duì)框架或中間件的嚴(yán)重依賴(lài)。這些框架或中間件背后實(shí)際隱藏了很多技術(shù)、設(shè)計(jì)、應(yīng)用場(chǎng)景,也就是說(shuō)為設(shè)計(jì)開(kāi)發(fā)人員隱藏了很多系統(tǒng)設(shè)計(jì)開(kāi)發(fā)的復(fù)雜性。如果架構(gòu)師把各項(xiàng)系統(tǒng)級(jí)架構(gòu)質(zhì)量的要求,想當(dāng)然統(tǒng)統(tǒng)扔給這些框架或中間件去處理,將會(huì)帶來(lái)災(zāi)難性的后果。業(yè)界有這樣一句話(huà):“框架或中間件是用來(lái)幫助你的,而不是代替你去思考和工作的。”所以我們必須根據(jù)現(xiàn)實(shí)的系統(tǒng)要求,自己動(dòng)腦筋去構(gòu)建適合現(xiàn)狀的軟件架構(gòu)!
簡(jiǎn)而言之,架構(gòu)師需要具備的能力=熟知最佳實(shí)踐+動(dòng)腦靈活使用+技術(shù)及創(chuàng)新預(yù)判。
記者: 在中國(guó),一個(gè)程序員如何才能成長(zhǎng)為一個(gè)職業(yè)架構(gòu)師?
李偉:曾經(jīng)無(wú)意間讀過(guò)一篇紀(jì)事報(bào)告《最后的大師》。此文作者是應(yīng)錢(qián)學(xué)森先生的邀請(qǐng),來(lái)記錄自己的導(dǎo)師,清華大學(xué)物理系及清華大學(xué)創(chuàng)始人之一的葉企孫先生。葉先生早年在美國(guó)留學(xué)期間,在物理方面做出過(guò)杰出的貢獻(xiàn)。雖然大多數(shù)后人并不知道葉先生,但是他的學(xué)生沒(méi)有一個(gè)會(huì)忘記他,其中包括三錢(qián)、華羅庚、李政道、楊振寧等等??梢赃@樣說(shuō),你所知道的中國(guó)大師,大多都是他的學(xué)生。閱讀完此文,頗受啟發(fā):真可謂“大師培養(yǎng)大師”。我非常欣賞這句話(huà)。
如果身邊有大師,自然是從程序員成長(zhǎng)為架構(gòu)師的捷徑了。我身邊沒(méi)有大師,便選擇這樣的道路:認(rèn)真反思自己這些年來(lái)的學(xué)習(xí)和實(shí)踐,并將其上升為智慧。畢竟,智慧既是指導(dǎo)我繼續(xù)工作的原始動(dòng)力,也將指導(dǎo)自己未來(lái)的創(chuàng)新工作。因此,我選擇了閱讀、學(xué)習(xí)和思考。
記者: 您認(rèn)為在中國(guó)的軟件企業(yè)中,大家在普遍認(rèn)識(shí)中對(duì)架構(gòu)師這一職業(yè)有哪些誤區(qū)?
李偉:誤區(qū)一,架構(gòu)師與項(xiàng)目經(jīng)理沒(méi)有區(qū)別。大家經(jīng)常在談?wù)摷軜?gòu)師時(shí),混淆了項(xiàng)目經(jīng)理的職責(zé)和架構(gòu)師的職能。項(xiàng)目經(jīng)理要對(duì)人、流程、錢(qián)等內(nèi)容負(fù)責(zé)。但是架構(gòu)師主要是對(duì)技術(shù)負(fù)責(zé)。所以我個(gè)人不是很喜歡在談?wù)撓到y(tǒng)架構(gòu)時(shí),過(guò)多的談?wù)摿鞒袒蚬芾?。雖然我也是流程方面和管理方面的專(zhuān)家。
誤區(qū)二,技術(shù)好的人就能成為架構(gòu)師。其實(shí),職業(yè)架構(gòu)師與職業(yè)編程人員有著同樣重要的分量,只不過(guò)各自負(fù)責(zé)的工作內(nèi)容及需要具備的能力各不相同。例如:架構(gòu)師熟知如何將系統(tǒng)架構(gòu)構(gòu)建得適應(yīng)系統(tǒng)后續(xù)國(guó)際化/本地化的工作;但是并不一定必須知道界面熱鍵在.NET下調(diào)用什么來(lái)實(shí)現(xiàn)。
誤區(qū)三,架構(gòu)師必須懂得業(yè)務(wù)領(lǐng)域的知識(shí)。從本質(zhì)上來(lái)看,軟件架構(gòu)本身就是在模仿人類(lèi)大腦的問(wèn)題思考和解決習(xí)慣。自然,專(zhuān)業(yè)架構(gòu)師所掌握的知識(shí)就是解決那些反復(fù)出現(xiàn)的相似問(wèn)題的最佳手段。所以,業(yè)界都知道這樣一個(gè)著名的故事:一個(gè)非航天專(zhuān)業(yè)的軟件架構(gòu)人員,可以被美國(guó)國(guó)家航天局請(qǐng)去做航天系統(tǒng)的架構(gòu)評(píng)審。這一點(diǎn)兒都不奇怪,因?yàn)樗澜鉀Q系統(tǒng)并發(fā)問(wèn)題時(shí),當(dāng)今最經(jīng)典的那么幾種手段,你能說(shuō)航天系統(tǒng)的并發(fā)問(wèn)題與企業(yè)應(yīng)用并發(fā)問(wèn)題本質(zhì)上不一樣嗎?由于當(dāng)前國(guó)內(nèi)軟件研發(fā)的各種局限,很多軟件從業(yè)人員的認(rèn)知還停留在“懂業(yè)務(wù)+技術(shù)好”就是架構(gòu)師這樣的層面上。其實(shí),懂得經(jīng)典的解決方法,并能從實(shí)踐中抽象出理論或最佳實(shí)踐的人,才是架構(gòu)人員的專(zhuān)業(yè)水平。
記者: 在《架構(gòu)之美——軟件架構(gòu)的藝術(shù)》一書(shū)中,您認(rèn)為最創(chuàng)新的理念有哪些?
李偉:一個(gè)架構(gòu)從創(chuàng)建、進(jìn)化、老化到消亡的整個(gè)過(guò)程,是此書(shū)的核心。如同宇宙萬(wàn)物,架構(gòu)也存在一個(gè)生命周期的概念。即“架構(gòu)生命周期(Architecture Lifecycle)”。
怎樣才是一個(gè)真正意義上的軟件架構(gòu)師?
當(dāng)面臨構(gòu)建一個(gè)軟件架構(gòu)時(shí),應(yīng)該采用怎樣的流程去工作呢?
怎么做才能構(gòu)建出滿(mǎn)意的高品質(zhì)架構(gòu)及設(shè)計(jì)呢?
當(dāng)我們階段性地完成了架構(gòu)的構(gòu)建,如何去評(píng)估結(jié)果呢?
軟件產(chǎn)品在演化,軟件架構(gòu)也會(huì)跟隨演化,如何應(yīng)對(duì)這種變化?
十年前開(kāi)發(fā)的產(chǎn)品,架構(gòu)文檔殘缺不全,設(shè)計(jì)人員已經(jīng)離職,怎么把產(chǎn)品的架構(gòu)從紛繁復(fù)雜的頭緒中清理出來(lái)呢?
如果我們要研發(fā)十幾個(gè)功能相似的產(chǎn)品,該如何高效地工作呢?
上述這些理念,基本上是一個(gè)職業(yè)架構(gòu)人員所需具備的專(zhuān)業(yè)素養(yǎng)。奉獻(xiàn)給大家,以供參考。
(責(zé)編:陳廣成)
免責(zé)聲明:本網(wǎng)站(http://www.www.gypb.net/)內(nèi)容主要來(lái)自原創(chuàng)、合作媒體供稿和第三方投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
本網(wǎng)站刊載的所有內(nèi)容(包括但不僅限文字、圖片、LOGO、音頻、視頻、軟件、程序等)版權(quán)歸原作者所有。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),請(qǐng)及時(shí)通知本站,予以刪除。
