2007 年 4 月 24 日
和 IBM 體系結(jié)構(gòu)專家親密接觸。了解他們?yōu)楹我瞿壳八龅氖乱约叭绾芜_(dá)到目前的職位。探索他們職業(yè)生涯中遇到的種種曲折,了解他們?nèi)绾瓮ㄟ^這些經(jīng)歷最終進(jìn)入 IT 體系結(jié)構(gòu)領(lǐng)域中。
長大后,您想干什么?雖然我已經(jīng)工作了很長時間了(已經(jīng)到了不愿意公開自己的工作年限的地步了),我仍然在考慮這個問題?;蛟S您也是這樣。事實上,如果您和我一樣是生育高峰期出生的,您可能將不斷問自己這個問題,給出各種不同的答案,直到有一天極不情愿地被推入退休隊伍中為止。
本月我們將詢問專家組一個類似的問題(不過我們將問的是他們的過去,而不是他們對將來的看法):
為什么您覺得 IT 體系結(jié)構(gòu)方面的工作適合您,為了成為架構(gòu)師,您走過了什么樣的路?
正如您將看到的,IBM 技術(shù)帶頭人也經(jīng)歷了同樣的心路歷程。事實上,他們似乎都有一個共同的特點,就是始終都在積極地嘗試獲得新的經(jīng)驗和知識?;蛟S這使得他們有些像雜家, Grady Booch 就使用這個詞來描述自己,而這又被 Merriam Webster 定義為“閑人”或“不安分的人”。(此處并不是說“不誠實或沒用的人”。)更可能的是,這使他們成為博學(xué)家(即 Merriam Webster 所說的“具有各方面知識”的人)。他們?nèi)兆舆^得似乎都不錯!
對于希望成為 IT 架構(gòu)師的普通人,這可能會使他們望而卻步。那么,究竟在 IT 領(lǐng)域中工作的哪些人如此有創(chuàng)造力而同時又過得這樣快樂呢?但他們每個人都是很久以前從普通人開始一步步做起的。他們并不是一下子就獲得了成為 IT 架構(gòu)師的所有技能,他們經(jīng)歷了漫長而艱難的過程,并深入各種不同領(lǐng)域才得到了所需的技能。設(shè)計方面也是如此。其他人則是在嘗試了其他角色后才選擇這個職業(yè)。
考慮到我們的專家組成員對新鮮事務(wù)的好奇心,我忍不住認(rèn)為這可能并不是他們中的任何人的最終歸宿。如果我們要討論的是他們以后的職業(yè)生涯,我想會發(fā)現(xiàn)他們在將來承擔(dān)起新的任務(wù)、對新的挑戰(zhàn)發(fā)起攻擊。我們都經(jīng)歷了很長的成長過程,但我認(rèn)為他們有可能還會繼續(xù)這個過程。因此,如果下次問他們這個問題也會非常有意義:“長大后,您想干什么?”讓我們拭目以待吧。
developerWorks Architecture 團(tuán)隊——
Paul Dreyfus,編輯
developerWorks
![]() ![]() |
![]()
|
回憶:我看到自己參加會議、在白板上畫圖、處理一個接一個的問題。在團(tuán)隊的幫助下,我嘗試?yán)眠^去所積累的知識在問題領(lǐng)域中的各種力量和約束之間求得平衡。模式?或許吧。我喜歡體會團(tuán)隊活力在周圍流動的那種感覺——每一分鐘,我都能在同事仔細(xì)描述各種情況的細(xì)枝末葉時獲得啟發(fā)和學(xué)到新的東西:為什么這個情況略有不同,因而必須修改模式,以處理實際情況。
編寫代碼的日子:編寫代碼是孤獨的探尋過程。這個探尋過程同時也是永不停止的。有時候還沒有回報。找到錯誤,會得到表揚。如果最終的交付內(nèi)容/版本中沒有錯誤,則不會提到這些代碼中的重要性和您在其中投入的精力!
我喜歡編程——不過現(xiàn)在很少進(jìn)行此類工作了,僅在學(xué)術(shù)中需要時才會做這樣的工作。處理項目時,我已不再進(jìn)行代碼編寫工作了。
香港,1980 年:我開始使用 BASIC 和 Fortran 進(jìn)行編程。我非常喜歡編程。轉(zhuǎn)眼到了 1995 年,我開始進(jìn)行 Java™ 編程,享受接口實現(xiàn)和松散耦合所帶來的純粹樂趣。但應(yīng)該如何設(shè)計系統(tǒng)結(jié)構(gòu)呢?
即使獲得了最好的運行代碼,仍然需要一個能夠承受非功能需求沖擊的結(jié)構(gòu)。因此,您需要能夠?qū)Ω鞣N相互沖突的約束進(jìn)行權(quán)衡,在重復(fù)考慮當(dāng)前情況的細(xì)微差異的前提下進(jìn)行決策。
我比較認(rèn)可“模式生成體系結(jié)構(gòu)”這樣的學(xué)術(shù)流派。從藍(lán)圖(一組基本模式)開始,然后根據(jù)自己的實際情況進(jìn)行擴(kuò)展和自定義。這就在最佳實踐和現(xiàn)實具有特定的無名品質(zhì)(QWAN,Quality Without a Name)之間獲得了最佳的平衡點,這一點我非常喜歡。
我喜歡自己的架構(gòu)師工作。 :)
![]() ![]() |
![]()
|
開始的時候(大部分時間,甚至到現(xiàn)在也是如此),我們并不進(jìn)行“體系結(jié)構(gòu)設(shè)計”。我們只編寫程序,其中的任何體系結(jié)構(gòu)都是意外出現(xiàn)的。
我在 14 歲時編寫了第一個程序(使用的是 Fortran,當(dāng)然我對于良好的設(shè)計所知并不多,體系結(jié)構(gòu)方面懂的就更少了)。上大學(xué)時(最初在 Air Force Academy,后來在 Santa Barbara 的 University of California),我遇到了當(dāng)時形成了深度設(shè)計的早期理念的很多人:David Parnas、Mary Shaw、Tony Hoare、Edsger Dijkstra 等。剛剛二十歲出頭的時候,我擔(dān)任過一些相當(dāng)大(甚至按照今天的標(biāo)準(zhǔn)也可以這么說)的實時分布式系統(tǒng)的項目工程師和項目經(jīng)理的角色,為美國軍事航天項目提供支持。
1982 年退役后,我加入剛剛創(chuàng)建的 Rational®,參與了 Ada 項目的大量工作。我的大部分時間都奔走于美國各地,與合同客戶和軍隊協(xié)作,以幫助他們應(yīng)用軟件工程的最佳實踐以及這個新興的語言。
我一直是個雜家,出現(xiàn)在科學(xué)所指引的地方。我逐漸發(fā)現(xiàn)商業(yè)領(lǐng)域的很多組織開始邀請我?guī)椭麄冞M(jìn)行類似的工作,因此我開始偏離 Rational 的核心業(yè)務(wù),將我的精力投入到這個更大的領(lǐng)域中。也大約在這段時間,我撰寫了第一篇有關(guān)面向?qū)ο蟮脑O(shè)計的論文,并開始編寫我自己的第三本書(與此主題相關(guān))——其中所有內(nèi)容不過是對我通過這些項目得到的經(jīng)驗的總結(jié)。我還與 Bjarne Stroustrup 進(jìn)行了合作(他是 C++ 的發(fā)明者,我們甚至還一起去參加了全國性的巡回演講),因為我們發(fā)現(xiàn)他的語言設(shè)計方法和我的系統(tǒng)設(shè)計方法非常相似。
在那段時間里,我仍然進(jìn)行編程工作:我使用 ObjectPascal(在 Mac 平臺上)編寫了 Rational Rose 的原型,并采用 Smalltalk(PC 平臺上)編寫了第二個更為完整的版本。Dave Stevenson 和我是第一個 Rational 建模產(chǎn)品的架構(gòu)師(采用 C++ 編寫;這對 Rational 是一項突破,因為之前的所有產(chǎn)品都是使用 Ada 完成的)。
這些產(chǎn)品進(jìn)入市場后,我再次承擔(dān)起作為架構(gòu)師和體系結(jié)構(gòu)指導(dǎo)人的角色,為我們的一系列最大的客戶服務(wù)。在此期間,我受到 Philippe Kruchten 的工作的很大影響;他領(lǐng)導(dǎo)進(jìn)行了早期的流程設(shè)計等方面的工作,同時他還是 Canadian Air Traffic Control System 的首席架構(gòu)師之一。他也參與了有關(guān)體系結(jié)構(gòu)描述的 IEEE 標(biāo)準(zhǔn)方面的工作。
![]() |
|
最近這些年,Kent Beck 和我組織了名為 Hillside Group 的模式研討會;這個研討會今天仍然是模式文化的重心。我是 World Wide Institute of Software Architects (WWISA) 的最早成員之一,同時也是后來成立的 American Institute of Software Architects (AISA) 的第一批成員之一,這兩個組織都致力于發(fā)展軟件體系結(jié)構(gòu)實踐。
這段時間里,隨著 Rational 的業(yè)務(wù)全面納入 IBM 中,我也回到了我原來進(jìn)行的體系結(jié)構(gòu)方面的工作。我不僅對 IT 體系結(jié)構(gòu)感興趣,而且也對軟件密集型系統(tǒng)的每個領(lǐng)域的體系結(jié)構(gòu)原則感興趣。體系結(jié)構(gòu)方面仍然有很多東西我們不知道——它所代表的東西、它所不能代表的東西、如何最好地表示它、體系結(jié)構(gòu)級別存在何種模式等等。因此,我花費了大量的時間通過實踐和研究來進(jìn)行學(xué)習(xí)。在實踐方面,我仍然繼續(xù)擔(dān)任我們客戶(甚至也包括尚不是我們客戶的組織)的架構(gòu)師兼體系結(jié)構(gòu)指導(dǎo)人的角色。在研究領(lǐng)域,我正在編寫 Handbook of Software Architecture,該書的目標(biāo)是確定各種有意義的軟件密集型系統(tǒng)的體系結(jié)構(gòu)。我與 Software Engineering Institute (SEI) 的體系結(jié)構(gòu)人員進(jìn)行了大量的合作。同時,我也非常密切地關(guān)注著 Murray Cantor 在系統(tǒng)工程方面的進(jìn)展。我在嘗試幫助人們記住,“SOA” 中的“A”表示“體系結(jié)構(gòu)”,另外還參與了一些新興商業(yè)和行業(yè)體系結(jié)構(gòu)標(biāo)準(zhǔn)方面的工作。
我仍然在進(jìn)行編程工作(大部分時間都是用 Java),但我想自己現(xiàn)在終于知道了如何設(shè)計我所編程的系統(tǒng)的體系結(jié)構(gòu)。
![]() ![]() |
![]()
|
我在此銀行中擔(dān)任助理咨詢師,我所屬的團(tuán)隊負(fù)責(zé)設(shè)計廣泛分布于全球范圍內(nèi)的信用證解決方案。我全面接觸了正式軟件開發(fā)生命周期方法、經(jīng)過業(yè)界檢驗的工程原則、軟件產(chǎn)品堆棧和大量商業(yè)銀行領(lǐng)域的概念。有了這些經(jīng)驗,我大膽地來到瑞士,為多家銀行提供咨詢服務(wù),指導(dǎo)他們解決多個領(lǐng)域的技術(shù)問題(如進(jìn)行電子文檔存檔,以實現(xiàn)異類數(shù)據(jù)集成)。瑞士人對精工和質(zhì)量方面的關(guān)注是非常有遠(yuǎn)見的,而他們對采用新興技術(shù)的渴望讓我有機(jī)會接觸各種創(chuàng)新產(chǎn)品。
![]() |
|
到此時,我已非常深入地了解了銀行業(yè)務(wù),并加入了一個全球性 SI 的研發(fā)部門,重新回到我最擅長的領(lǐng)域。在這里,他們允許我對應(yīng)用程序?qū)舆M(jìn)行分析,并能夠直接研究 OS 內(nèi)核和基礎(chǔ)硬件的基本細(xì)節(jié)。我對 UNIX SVR4 進(jìn)行了修改——調(diào)整引導(dǎo)和調(diào)度算法、優(yōu)化設(shè)備驅(qū)動程序、調(diào)整事件和中斷處理、對機(jī)器代碼進(jìn)行反向工程、研究前輩(Ritchie、Thompson、Joy)編寫的組件、使其識別 x86 和 RISC 處理器內(nèi)部指令、處理后來出現(xiàn)的新興微內(nèi)核和實時操作系統(tǒng)。從中獲得的經(jīng)驗鞏固了我對解決方案和應(yīng)用程序實際 如何運行的認(rèn)識。
隨后進(jìn)入 .COM 時代,全世界都開始更多地接觸面向?qū)ο蟮母拍?,而我也不希望被這個潮流拋在腦后。因此,我開始擔(dān)任一家新成立的公司的首席工程師,該公司當(dāng)時正在研發(fā)用于解決異類企業(yè)數(shù)據(jù)源的實時集成的產(chǎn)品。我負(fù)責(zé)設(shè)計和構(gòu)建核心運行時基礎(chǔ)設(shè)施、元數(shù)據(jù)管理和數(shù)據(jù)訪問框架。這個公司真的是一個 OO 新兵訓(xùn)練營。我的同事(大部分都剛剛畢業(yè))都具有完全的 OO 意識——我甚至懷疑他們將 Gang-of-Four 的書作為早餐!我很快便成了 OO 的信徒,對 OO 設(shè)計、模式和技術(shù)以及如何將其應(yīng)用于 Java 以及早期 J2EE 了如指掌。除了核心產(chǎn)品體系結(jié)構(gòu)外,我還承擔(dān)其他一些任務(wù):客戶銷售、提供 UI 工具和人為因素方面的培訓(xùn)、生成安裝二進(jìn)制文件、排除客戶部署的故障等等。
很快我開始渴望感受大公司的那種節(jié)奏,隨后加入 IBM。最初我有些擔(dān)心自己會迷失在藍(lán)色巨人懷抱中,但很快發(fā)現(xiàn) IBM 的運作方式就像帶保護(hù)傘的 VC,充滿了主人翁意識和創(chuàng)新。我最初是 WebSphere Application Server 產(chǎn)品的一名開發(fā)人員,進(jìn)行的是系統(tǒng)管理和 EJB 容器組件方面的工作。之后,我加入了 IBM Research 的一個孵化項目 NextWeb,為 Web 服務(wù)建議和創(chuàng)建綜合框架,包括“on-the-glass”服務(wù)。由此引出了各種臨時標(biāo)準(zhǔn),并最后定型為 OASIS WSRP TC。同時,我還負(fù)責(zé)設(shè)計 WebSphere Portal Server 中的一些組件的體系結(jié)構(gòu),以將這些孵化技術(shù)投入實際應(yīng)用。
到此時,我掌握了 Web 服務(wù)和初期 SOA 的要點。我開始為 IBM 戰(zhàn)略業(yè)務(wù)合作伙伴提供技術(shù)指導(dǎo),引導(dǎo)他們充分利用我們的中間件投資組合,從而更好地完成他們的重要產(chǎn)品功能。隨著 SOA 技術(shù)不斷成熟,我的這些服務(wù)范圍開始擴(kuò)展到大型 IBM 客戶和相關(guān)的適配器方面——共享技術(shù)策略、指導(dǎo)他們進(jìn)行體系結(jié)構(gòu)試點項目以及將他們的問題轉(zhuǎn)給我們的軟件產(chǎn)品團(tuán)隊。目前,我的工作重點已經(jīng)發(fā)生了進(jìn)一步的變化,負(fù)責(zé)將全球客戶活動中發(fā)現(xiàn)的關(guān)鍵差距和問題反映到 IBM 軟件投資組合和解決方案資產(chǎn)中,從而幫助推動 IBM 軟件部的 SOA 需求策略的發(fā)展。
我非常幸運,能夠親身經(jīng)歷 IT 的諸多方面,正如前面提到的,還通過這些經(jīng)歷磨練了我的基本學(xué)習(xí)技能。就今天而言,如果在處理技術(shù)理念僵局或應(yīng)付要命的競選活動(是的,在 IBM 也有這樣的活動)讓我感覺到自己的精力不足,為了重新打起精神,我只需要從書架上取下我的畢業(yè)論文看看就能辦到。
![]() ![]() |
![]()
|
在我職業(yè)生涯之初,擔(dān)任的是開發(fā)人員的工作,工作重點在較大的軟件工程中非常具體的元素;這通常意味著主要在實現(xiàn)階段參與相關(guān)工作,而在體系結(jié)構(gòu)設(shè)計期間卻涉及的不多。我當(dāng)時所進(jìn)行的設(shè)計工作主要是“小型”設(shè)計,通常屬于一個應(yīng)用程序中的工作。隨著我職業(yè)生涯的發(fā)展,我越來越認(rèn)識到,即使通過非常嫻熟的技能創(chuàng)建了軟件構(gòu)建塊,但如果基本理解和體系結(jié)構(gòu)不正確,項目成功的幾率也將大打折扣。因此我開始主動尋找能讓我更多參與此類活動的項目。這讓我傾向于喜歡發(fā)現(xiàn)解決方案的總體概貌。一段時間后,我開始在項目進(jìn)行期間擔(dān)任架構(gòu)師的角色。以后的故事您都知道啦 :)
![]() ![]() |
![]()
|
我上大學(xué)前沒有見過計算機(jī)(準(zhǔn)確地說是大二才首次看到計算機(jī))。是的,我有些落后。實際上,我都是在那之后很久才首次看見計算機(jī)的。我在大二時見到了計算機(jī)終端。我當(dāng)時學(xué)習(xí)了 FORTRAN,才發(fā)現(xiàn)以下事實:
無論如何,我現(xiàn)在并不確定自己是否仍然對此很擅長。我仍然喜歡我工作的技術(shù)方面的東西:調(diào)整代碼、編寫小段 PHP、討論一些設(shè)計選擇、考慮重要的下一步工作。我定期到現(xiàn)場視察,花上一整天時間對項目進(jìn)行檢查,并與項目人員進(jìn)行討論?,F(xiàn)場人員說,盡管會受時差的影響而且每天工作時間很長,我似乎從來不覺得累。他們想知道我是如何做到的。這樣的日子是我工作中最有意思的日子,我非常喜歡。我對它們的喜愛程度超過了對咖啡的喜愛。
正是這個原因讓我覺得 IT 是我的正確選擇。那么,我走過的路是什么樣的呢?我不斷地探索新問題(現(xiàn)在也是如此)。我所走過的路似乎是最具挑戰(zhàn),也是最有趣的。
![]() ![]() |
![]()
|
基于廣泛 IT 領(lǐng)域?qū)嵺`經(jīng)驗的堅實基礎(chǔ)
隨著時間的推移,我的技能不斷提升,所接觸的項目范圍也越來越廣泛,我經(jīng)常發(fā)現(xiàn)所處理的軟件存在功能重復(fù)(或功能非常相近)。我會重新設(shè)計此類冗余功能,以使其包含在應(yīng)用程序內(nèi)的可重用模塊中,從而減少要維護(hù)的代碼量,降低出現(xiàn)錯誤的潛在可能性。
此時我發(fā)現(xiàn)自己希望在更廣泛的范圍內(nèi)應(yīng)用這些技能。我想知道我所處理的所有這些應(yīng)用程序如何一起工作。我想正是在此時我決定要成為一個 IT 架構(gòu)師。為了最終達(dá)到我的目標(biāo),我接觸了諸多 IT 領(lǐng)域的東西,包括 QA 測試和操作。我還在一個替換 ERP 系統(tǒng)的部署中扮演過主要角色:這項工作要求對舊 ERP 系統(tǒng)與對其依賴的外圍應(yīng)用程序(或反過來)間的所有接口進(jìn)行全面的檢查。
所有這些經(jīng)驗促成了我的 IT 體系結(jié)構(gòu)技能的形成。我當(dāng)然很同意 Bobby 的觀點,為了成為高效率的 IT 架構(gòu)師,務(wù)必通過操作、維護(hù)、測試和部署軟件獲得足夠的經(jīng)驗,從而形成堅實的基礎(chǔ)。
![]() ![]() |
![]()
|
在決定不從事法律方面的工作后,我在一家咨詢公司謀得了一個職位。我后來離職,并首次加入了一家小型計算機(jī)公司(當(dāng)時規(guī)模小)Tandem Computers。我在 Tandem 獲得了大量的經(jīng)驗,讓我對各個公司如何購買各種先進(jìn)技術(shù)以及如何使用技術(shù)有了更全面的了解。更為重要的是,由于在 Tandem 擔(dān)任過不同的角色,我擔(dān)任過指導(dǎo)咨詢師、程序員、軟件工程師和架構(gòu)師的職責(zé)。我發(fā)現(xiàn)自己不僅需要進(jìn)行設(shè)計和編碼,還需要幫助為解決方案確定恰當(dāng)?shù)募夹g(shù),還必須考慮使用模式、服務(wù)質(zhì)量,而且必須同時考慮以后的需求和目前的需求。
我發(fā)現(xiàn)好的架構(gòu)師都是善良的獨裁者,具有很強(qiáng)的技術(shù)、良好的寫作能力、良好的口頭表達(dá)能力,能夠在各個層次進(jìn)行溝通。我很喜歡這個新角色。我之所以加入 IBM,是因為我遇到了很多非常聰明的人,他們都在非常大的公司工作,與 CEO、CIO 交流,影響著技術(shù)方向,并負(fù)責(zé)設(shè)計主要解決方案(其成功對高級執(zhí)行人員非常重要)的體系結(jié)構(gòu)。我也希望成為這樣的人——現(xiàn)在我是了。
![]() ![]() |
![]()
|
當(dāng)您不再進(jìn)行編碼工作轉(zhuǎn)而將重點放在設(shè)計和集成上,會發(fā)生什么
![]() |
|
當(dāng)時我剛剛走出學(xué)校的大門。我非常失望,發(fā)現(xiàn)自己所學(xué)的所有關(guān)于并行計算機(jī)科學(xué)理論并沒有在那個年代的計算機(jī)系統(tǒng)上得到利用——至少在我所知的數(shù)據(jù)庫系統(tǒng)上是如此。我的目標(biāo)是設(shè)計一個并行版本的重組命令,從而不必在所有周末都在綠色屏幕(指綠色的單色顯示器)前度過。而正是這個使我開始進(jìn)行數(shù)據(jù)庫設(shè)計、并行編程和多任務(wù)操作系統(tǒng)設(shè)計。當(dāng)我將原來約兩天半的重組執(zhí)行時間降低為約 7 個小時后,我升了職,我的老板告訴我,他認(rèn)為我以后會成為一名好的架構(gòu)師(如此之類的說法)!很快,我成為了一家小咨詢公司(后來被一家更大的計算機(jī)供應(yīng)商收購)的數(shù)據(jù)庫咨詢師,開始為很多客戶設(shè)計和調(diào)整數(shù)據(jù)庫。
接下的五年左右,我在教客戶如何設(shè)計數(shù)據(jù)庫和應(yīng)用程序,以最有效地使用 CPU 資源。這意味著要討論應(yīng)用程序和數(shù)據(jù)庫體系結(jié)構(gòu)——而這使我開始接觸 IT 體系結(jié)構(gòu)。我最初以數(shù)據(jù)庫設(shè)計為核心的工作重點讓我開始探索實體關(guān)系模型(一項大部分?jǐn)?shù)據(jù)庫設(shè)計人員仍然在使用的技術(shù))。后來,在 80 年代末期,我開始研究語義建模(我當(dāng)時認(rèn)為這種技術(shù)非常不錯),后來又開始研究對象建模和對象數(shù)據(jù)庫。大約在這段時間,我首次接觸了“元數(shù)據(jù)”和“元數(shù)據(jù)庫存儲庫”——當(dāng)時正是應(yīng)用開發(fā)周期 (AD/Cycle) 的年代。數(shù)年后(也就是 90 年代中期),同時發(fā)生了一系列有意義的事件,建模語言(如 UML)、元數(shù)據(jù)語言(如 Meta-Object Facility、XML DTD 以及后來的 XML 模式)和中間件(如最初的 CORBA 和后來的 J2EE 、.NET 及 ESB)開始采用面向?qū)ο蟮姆绞剑⒆罱K發(fā)展為基于組件和面向服務(wù)的系統(tǒng)。
從這期間的某個時段起,我的名片上開始出現(xiàn)“數(shù)據(jù)庫架構(gòu)師”、“對象架構(gòu)師”、“軟件架構(gòu)師”、“首席架構(gòu)師”之類的字樣。也正是這段時間,我被推舉到 Object Management Group (OMG) 的“體系結(jié)構(gòu)委員會”;這是一個行業(yè)標(biāo)準(zhǔn)組織,致力于推廣各種行業(yè)標(biāo)準(zhǔn),如 Common Object Request Broker Architecture (CORBA)、統(tǒng)一建模語言(Unified Modeling Language,UML)以及后來的模型驅(qū)動的體系結(jié)構(gòu)(Model-Driven Architecture,MDA)。我想人們最終認(rèn)為我是個“架構(gòu)師”,是因為我?guī)啄昵伴_始不再編寫代碼,而開始將更多的精力放在如何使系統(tǒng)一起工作——工具、應(yīng)用程序和數(shù)據(jù)集成的世界。
現(xiàn)在我需要考慮的是各個“體系結(jié)構(gòu)”如何一起工作,如“如何將模型驅(qū)動的體系結(jié)構(gòu)和面向服務(wù)的體系結(jié)構(gòu)概念一起使用”。使用開放源代碼(主要是 Eclipse 和 Apache 項目)和開放標(biāo)準(zhǔn)(主要來自 W3C、PMG 和 OASIS)基于真實客戶場景設(shè)計一起工作的軟件工具是這段時間我在 IBM 作為架構(gòu)師所進(jìn)行的工作。我還要花時間為重要客戶提供協(xié)助,幫助他們定義體系結(jié)構(gòu)和使用工具與中間件時的策略方向。我想我仍然是個架構(gòu)師,因為我現(xiàn)在是 IBM 軟件部體系結(jié)構(gòu)委員會指導(dǎo)委員會 (IBM Software Group Architecture Board Steering Committee)、IBM Eclipse 審查委員會 (IBM Eclipse Review Board) 和 OMG 體系結(jié)構(gòu)委員會 (OMG Architecture Board) 的成員。
毫無疑問,我現(xiàn)在意氣風(fēng)發(fā),準(zhǔn)備繼續(xù)在體系結(jié)構(gòu)的賽場上馳騁幾年。也可以說,我現(xiàn)在對體系結(jié)構(gòu)如醉如癡——特別與 IBM 內(nèi)外這么多業(yè)內(nèi)出色的架構(gòu)師在一起時。
![]() ![]() |
![]()
|
能夠做各個方面的事情,這才是 IT 的樂趣所在。可以構(gòu)思一個新想法、對其進(jìn)行展開、向其他人展示、獲得反饋,然后對其進(jìn)行改進(jìn)。而且可以任何時間在任何地點做這樣的事情。其他哪種職業(yè)能讓您有這樣自由進(jìn)行創(chuàng)新的機(jī)會呢?
因此要尋找任何能夠培養(yǎng)所有這些技能的機(jī)會。不要不敢接觸任何新技術(shù)和編寫“Hello World”一類的簡單應(yīng)用程序。始終有新東西值得學(xué)習(xí)和嘗試。
![]() ![]() |
![]()
|
和很多同事一樣,我并沒有成為架構(gòu)師的想法。但和他們一樣,在我的 IT 領(lǐng)域的成長過程中,成為架構(gòu)師的路似乎是一個自然的發(fā)展過程。我的職業(yè)生涯始于 80 年代末期,最開始在 IBM AIX 開發(fā)實驗室工作。我當(dāng)時的體系結(jié)構(gòu)概念全是關(guān)于 AIX 的速度/數(shù)據(jù)提供和功能。我并不理解自己作為 C 和 C++ UNIX 編碼人員和測試人員能如何幫助客戶實現(xiàn)和部署任務(wù)關(guān)鍵型應(yīng)用程序。其中的很多應(yīng)用程序都作為所謂的“資本主義社會”的催化劑或為其提供主要支持。
離開 AIX 開發(fā)實驗室后,我開始擔(dān)任與客戶協(xié)作的 IT 專家,嘗試實現(xiàn)客戶機(jī)-服務(wù)器系統(tǒng)。我從事此工作后不久,.COM 熱潮開始了,而很多人稱為“Java 進(jìn)化”的趨勢也在這個時候出現(xiàn)了。換了公司后,我于 90 年代中期開始在 Sun Microsystems JavaSoft 組織擔(dān)任第一份名片上有“架構(gòu)師”字樣的工作。從這之后到現(xiàn)在這段時間內(nèi),我在不同的 IT 專家角色(執(zhí)行師和 IT 架構(gòu)師)之間不斷來回轉(zhuǎn)換著。
![]() |
|
盡管與架構(gòu)師相比,我更喜歡“執(zhí)行師”這個詞,但“架構(gòu)師”接受度似乎更廣泛,也似乎更受尊敬。我們架構(gòu)師對技術(shù)非常感興趣,因為我們知道技術(shù)如何支持體系結(jié)構(gòu)以及體系結(jié)構(gòu)如何支持 IT。作為 IT 專家,我通常在知道問題前就已知道了解決方案。例如,我口袋里有 Java 這樣的錘子,無論手里的釘子或螺絲釘(問題)的大小如何,我都能夠使用 Java 將其解決。這種理念在很長一段時間內(nèi)都非常適合我的情況。在上世紀(jì) 90 年代末期和本世紀(jì)之初,我最終認(rèn)識到,無論我的編程技能多么先進(jìn),對結(jié)果的影響始終微乎其微。我隨后認(rèn)識到:“體系結(jié)構(gòu)更多地與理解問題是什么相關(guān),而不是考慮應(yīng)該使用何種工具和技術(shù)來解決此問題。”
我從這些經(jīng)歷所總結(jié)得來的首要原則是:全面理解問題將幫助您確定使用何種技術(shù)來解決此問題。
![]() ![]() |
![]()
|
我與一些非常聰明的人合作過,學(xué)到了大量知識,知道如何將大的復(fù)雜問題分解為較小的可行單元并同時兼顧全局。我認(rèn)為這是架構(gòu)師幫助解決難題和進(jìn)行大型項目時的關(guān)鍵方面之一。我喜歡盡可能從多個角度看待問題,以找到最佳解決方案。我很希望親自動手解決問題,非常喜歡接觸新軟件、新體系結(jié)構(gòu)、新領(lǐng)域和新技術(shù)——并將其應(yīng)用到我的項目中。這是一個持續(xù)的學(xué)習(xí)過程,我很喜歡這樣的生活。
現(xiàn)在可以方便地通過多種渠道進(jìn)行學(xué)習(xí)(網(wǎng)絡(luò)課程、自學(xué)、網(wǎng)站、演示程序等等),學(xué)習(xí)新技術(shù)已不再是難事。關(guān)鍵是如何將其應(yīng)用到實際生活中——而這正是好的體系結(jié)構(gòu)決策與其他決策的區(qū)別所在。這非常具有挑戰(zhàn)性,我所知的做到這一點的唯一有效方法就是不斷參加新項目,了解自己不熟悉的新領(lǐng)域。
![]() ![]() |
![]()
|
![]() |
|
不過,我成長為架構(gòu)師的道路有些曲折。我本科時學(xué)習(xí)的是生物學(xué)和計算機(jī)科學(xué)。我努力利用多學(xué)科方法進(jìn)行微生物學(xué)或免疫學(xué)(繼承我父親的衣缽)領(lǐng)域的基礎(chǔ)研究。我真正的第一份工作是在 80 年代中期參與政府的一份合同履行工作;計算機(jī)在當(dāng)時還是一種奢侈品。幸運的是,我的客戶財力雄厚,購買了多臺 PC。征得了實驗室主管的同意,我使用計算機(jī)開發(fā)了一些程序,用于進(jìn)行費時且手工計算時容易出錯的必要計算工作,以便得到化驗結(jié)果。
在實驗室進(jìn)行了幾年腦生物化學(xué)研究后,我覺得自己對計算機(jī)和設(shè)計系統(tǒng)方面的東西有很高的熱情。我重返學(xué)校,并完成了計算機(jī)科學(xué)碩士學(xué)位課程。幸運的是,我從研究生院畢業(yè)后,就馬上獲得了參與設(shè)計一個首創(chuàng)性電信服務(wù)提供系統(tǒng)的體系結(jié)構(gòu)的機(jī)會——同樣也是為政府工作。(這項工作讓我不得不從頭學(xué)習(xí)很多東西。)我們開發(fā)的系統(tǒng)將最終為政府的每個部門提供服務(wù)。這五年在一體化電話公司服務(wù)方面的工作經(jīng)歷讓我獲得了指導(dǎo)其他工程師所必要的經(jīng)驗,最終成為了所有員工中出色的一員。
我在電信并購狂潮開始前離開了電信方面項目的工作,并隨后加入 IBM,擔(dān)任組件代理團(tuán)隊的架構(gòu)師。以后的事情大家都知道了。最終,我發(fā)現(xiàn) IT 體系結(jié)構(gòu)為我提供了跨組織邊界工作的機(jī)會,使我能夠設(shè)計對客戶業(yè)務(wù)帶來切實影響的系統(tǒng)體系結(jié)構(gòu)。
![]() ![]() |
![]()
|
我首先從事的是軟件測試工作,我接受這個工作完全是因為可以通過其在編寫軟件的團(tuán)隊中獲得一個職位(盡管當(dāng)時我并未編寫過軟件)。測試讓我思考這樣一些類型的問題:如何知道何時軟件正確工作?如果某個功能不正確工作,如何判斷?什么最容易出問題,怎樣會引起問題?后來發(fā)現(xiàn),這些問題對測試人員非常有意義。另外,我還發(fā)現(xiàn)這些問題可以幫助您了解如何創(chuàng)建好的軟件。
我的第一項編程工作是對現(xiàn)有代碼進(jìn)行維護(hù)。這項工作實際上教會了我如何編寫可維護(hù)(或不可維護(hù))的代碼,以及如何恰當(dāng)設(shè)計來促進(jìn)重用。代碼應(yīng)該可供兩類讀者閱讀和理解:
我遇到了很多代碼都是僅滿足了第一類讀者的需求,而忽略了第二類讀者。一直到今天,我都盡力不犯這樣的錯誤。
因此了解如何測試和維護(hù)代碼幫助我成為了一個更好的代碼編寫人員。能夠進(jìn)行代碼編寫工作,幫助我學(xué)會了如何設(shè)計組件和框架以及如何將實現(xiàn)隱藏在接口后。必須測試自己的代碼,讓我學(xué)會編寫能夠作為可重用組件分離且能夠作為單元進(jìn)行測試的代碼。然后,我開始為不同的部分進(jìn)行編程:數(shù)據(jù)庫、消息傳遞、工作流等,甚至還包括本身具有多個部分的應(yīng)用程序,如 EJB 和 Servlet。有了這些經(jīng)驗,我開始將應(yīng)用程序視為各大部分一起工作的整體,封裝了每個部分如何實現(xiàn)的細(xì)節(jié)。隨著我開始將應(yīng)用程序視為由各大部分、分布層次以及運行所需的專用引擎組成,我開始像架構(gòu)師一樣思考問題了。
因此,我的建議是,從底層做起,循序漸進(jìn)。掌握每個層次的能力;您將需要以此為基礎(chǔ)來進(jìn)入下一個未知的層次。缺少這個基礎(chǔ)的架構(gòu)師工作起來會比較費勁。
![]() |
|
體系結(jié)構(gòu)是我的正確選擇,因為它是特定的參與層次,使我能夠最高效地給項目帶來最積極的影響。這在以前指的就是(目前有時候還是如此)測試、代碼維護(hù)、開發(fā)、設(shè)計。可能某一天這將會涉及其他什么內(nèi)容。(管理?可能不會。)但就目前來說,體系結(jié)構(gòu)是我?guī)椭瓿身椖康淖罴逊绞健?/p>
在以前的專欄文章中,David Jackson、Grady Booch 和 Jenny Choy 分別建議架構(gòu)師要注重“溝通與推動”、“溝通與傾聽”及“建立聯(lián)系”。這些也都是很好的建議,但并不一定是作為工程師時學(xué)到的東西。您可能會想到如何構(gòu)建應(yīng)用程序的最好方法,但如果無法通過溝通將這些想法傳遞給團(tuán)隊,說服他們按照您的計劃行事,您唯一的出路就是自己一個人完成所有工作。
![]() ![]() |
![]()
|
Ali Arsanjani 博士是 IBM Global Services 的 SOA and Web Services Center of Excellence 的首席架構(gòu)師,主要負(fù)責(zé)收集和制定 SOA 和 Web 服務(wù)的建模、分析、設(shè)計和實現(xiàn)方面的最佳實踐。他是內(nèi)部的 IBM 全球 SOA and Web Services Community of Practice(擁有 4000 名成員)的負(fù)責(zé)人,是 SOA 的面向服務(wù)的建模和體系結(jié)構(gòu)(Service-Oriented Modeling and Architecture,SOMA)方法的主要作者之一。他目前的工作重點是支持建模 (SOMA)、評估、策略與計劃、管理、體系結(jié)構(gòu)和實現(xiàn)的 SOA 工具,以及其在 IBM 內(nèi)部和外部的實際應(yīng)用。請訪問他的博客:Best Practices in Service-Oriented Architecture。
Grady 是 IBM Fellow,曾參與過全球幾乎能想象得到的所有領(lǐng)域的很多復(fù)雜的以軟件為中心的系統(tǒng),在其中擔(dān)任架構(gòu)師或體系結(jié)構(gòu)顧問。Grady 編寫過六本暢銷書,發(fā)表了數(shù)百篇關(guān)于軟件工程的文章,其中包括在上個世紀(jì) 80 年代早期發(fā)布的數(shù)篇論文,后來從這些論文中發(fā)展出來了面向?qū)ο蟮脑O(shè)計的術(shù)語和實踐。請訪問他的博客:Software architecture, software engineering, and Renaissance Jazz。
Sanjay Bose 是 SOA Requirements Hub 的程序總監(jiān),供職于 IBM Software Strategy 部門,負(fù)責(zé) Enterprise Integration Design Center,該中心對 IBM Software 投資組合需求進(jìn)行標(biāo)識,并通過參與企業(yè)客戶和 IBM Software 產(chǎn)品開發(fā)實驗室的工作來開發(fā)解決方案組件和資產(chǎn)。他有超過 12 年的 IT 行業(yè)從業(yè)經(jīng)驗,主要涉及創(chuàng)建產(chǎn)品體系結(jié)構(gòu)、設(shè)計和細(xì)化技術(shù)策略以及使用分布式技術(shù)設(shè)計企業(yè)應(yīng)用程序系統(tǒng)。他擅長的領(lǐng)域包括 SOA、Enterprise Service Bus (ESB)、Web 服務(wù)、Java™ 2 Platform, Enterprise Edition (J2EE) 和電子商務(wù)技術(shù)。他與人合著了 SOA Compass 一書,并在 IBM developerWorks and Systems Journal 上發(fā)表了一些文章。他目前在賓夕法尼亞州匹茲堡居住和工作,業(yè)余時間他喜歡參加哲學(xué)講座、讀書、看電影和玩 Sony PlayStation。請訪問他的博客:SOA, ESB, and beyond。
Jorge Diaz 是 IBM Software Services for WebSphere 的一位解決方案架構(gòu)師。他的工作重點是提供中間件和分布式系統(tǒng)集成領(lǐng)域的策略體系結(jié)構(gòu),負(fù)責(zé)歐美地區(qū)的相關(guān)工作。Diaz 先生與各個大客戶密切合作,幫助他們使用各種技術(shù)(包括 Web 訪問)來引入面向服務(wù)的體系結(jié)構(gòu)。
Donald Ferguson 是 IBM 的 200,000 技術(shù)雇員中的 53 個 IBM Fellow(IBM 最高的技術(shù)職位)之一。Don 還是 IBM Software Group 的首席架構(gòu)師。Don 是 SWG Architecture Board 的主席,該委員會監(jiān)督 WebSphere、DB2®、Lotus®、Tivoli® 和 Rational® 產(chǎn)品的體系結(jié)構(gòu)和集成。Don 原來曾擔(dān)任過 WebSphere 系列產(chǎn)品的首席架構(gòu)師。他于 1985 年加入 IBM Research。他的興趣愛好包括帶他的孩子們、與他們玩耍、分布式系統(tǒng)、簡化應(yīng)用程序開發(fā)、系統(tǒng)管理、Web 服務(wù)、事務(wù)處理、性能以及空手道。請訪問他的博客:Middleware and tools。
Chris Ferris 是 IBM 的 Software Standards Strategy Group 的一位資深技術(shù)成員。他有超過 25 年的 IT 行業(yè)從業(yè)經(jīng)驗,其中大部分時間都在參與分布式系統(tǒng)的體系結(jié)構(gòu)、設(shè)計和工程方面的工作,并從 1999 年后就開始積極參與 XML 和 Web 服務(wù)的開放標(biāo)準(zhǔn)制訂工作。Chris 目前是 WS-I Basic Profile Working Group 的主席;該組織負(fù)責(zé)開發(fā) WS-I Basic Profile。他是 IBM 在 W3C XML Protocols WG 的代表,并在其中擔(dān)任編輯。他還是 IBM 在 OASIS WS-RX TC 的代表。他曾被推選為 OASIS Technical Advisory Board (TAB) 的成員。此外,他還是 WS-Reliable Messaging 規(guī)范和 IBM RAMP 概要的作者和編輯。請訪問他的博客 Web services, distributed computing, and interoperability。
Kerrie Holley 是 IBM 的 Services Oriented Architecture and Web Services Center of Excellence 的首席技術(shù)官。他擅長的領(lǐng)域包括軟件工程、體系結(jié)構(gòu)以及將業(yè)務(wù)要求轉(zhuǎn)換為以網(wǎng)絡(luò)為中心的分布式解決方案的設(shè)計。
杰出工程師 Sridhar Iyengar 負(fù)責(zé) IBM Rational Software 開發(fā)團(tuán)隊的技術(shù)策略。他是 OMG Architecture 委員會和董事會的成員,對模型驅(qū)動的體系結(jié)構(gòu)標(biāo)準(zhǔn)的發(fā)展進(jìn)行指導(dǎo)。
Christina Lau 是 On Demand Development 團(tuán)隊的一名架構(gòu)師。她目前參與的項目包括創(chuàng)建 使用 Rational Software Architect 的模式解決方案 和試用業(yè)務(wù)創(chuàng)新和優(yōu)化功能。Christina 一位高級技術(shù)人員,同時也是 IBM Academy of Technology 的成員。她還是 Introduction to IBM Rational Application Developer 一書的合著者。
Calvin Lawrence 是 IBM Software Group Emerging Technology 團(tuán)隊的一位執(zhí)行架構(gòu)師。他的職責(zé)范圍包括通過關(guān)鍵策略活動的支持來推廣戰(zhàn)略 IBM 體系結(jié)構(gòu)、技術(shù)和產(chǎn)品,以及使用 IBM 技術(shù)確??蛻魧崿F(xiàn)成功。他是 IBM Software Group Worldwide Technical Leadership Council 的前主席。
Sridhar Sudarsan 是 IBM Software Services for WebSphere 的一位高級 IT 架構(gòu)師。他曾負(fù)責(zé)過全球很多客戶的企業(yè)體系結(jié)構(gòu)解決方案的工作,包括金融、政府機(jī)構(gòu)、汽車和 SRM 等垂直行業(yè)的大公司。他是 J2EE 中的批處理編程模型(該模型現(xiàn)在是 WebSphere XD 中的一個組件)的創(chuàng)建者之一,目前正在向客戶推廣這個模型,并致力于構(gòu)建此技術(shù)相關(guān)的最佳實踐。他目前正在負(fù)責(zé)一家大型保險公司的大型 SOA Center of Excellence 的工作。
Andras Robert Szakal 是 IBM Federal Software Group 的首席架構(gòu)師,同時也是杰出工程師和高級認(rèn)證 IT 架構(gòu)師。他還是 The Open Group 理事會成員。
Bobby Woolf 是一名 IBM Software Services for WebSphere 咨詢師,負(fù)責(zé)幫助客戶使用 WebSphere 實現(xiàn)成功。他與人合著了 Enterprise Integration Patterns 和 The Design Patterns Smalltalk Companion 。請參閱 developerWorks 上 Bobby 的博客,以了解更多信息。
![]() | ||
| ![]() | 此內(nèi)容是由 developerWorks 編輯團(tuán)隊為您提供。如有建議或問題,請通過以下郵件地址與編輯團(tuán)隊聯(lián)系:dwinfo@us.ibm.com。 |