2007 年 4 月 24 日
和 IBM 體系結構專(zhuān)家親密接觸。了解他們?yōu)楹我瞿壳八龅氖乱约叭绾芜_到目前的職位。探索他們職業(yè)生涯中遇到的種種曲折,了解他們如何通過(guò)這些經(jīng)歷最終進(jìn)入 IT 體系結構領(lǐng)域中。
長(cháng)大后,您想干什么?雖然我已經(jīng)工作了很長(cháng)時(shí)間了(已經(jīng)到了不愿意公開(kāi)自己的工作年限的地步了),我仍然在考慮這個(gè)問(wèn)題?;蛟S您也是這樣。事實(shí)上,如果您和我一樣是生育高峰期出生的,您可能將不斷問(wèn)自己這個(gè)問(wèn)題,給出各種不同的答案,直到有一天極不情愿地被推入退休隊伍中為止。
本月我們將詢(xún)問(wèn)專(zhuān)家組一個(gè)類(lèi)似的問(wèn)題(不過(guò)我們將問(wèn)的是他們的過(guò)去,而不是他們對將來(lái)的看法):
為什么您覺(jué)得 IT 體系結構方面的工作適合您,為了成為架構師,您走過(guò)了什么樣的路?
正如您將看到的,IBM 技術(shù)帶頭人也經(jīng)歷了同樣的心路歷程。事實(shí)上,他們似乎都有一個(gè)共同的特點(diǎn),就是始終都在積極地嘗試獲得新的經(jīng)驗和知識?;蛟S這使得他們有些像雜家, Grady Booch 就使用這個(gè)詞來(lái)描述自己,而這又被 Merriam Webster 定義為“閑人”或“不安分的人”。(此處并不是說(shuō)“不誠實(shí)或沒(méi)用的人”。)更可能的是,這使他們成為博學(xué)家(即 Merriam Webster 所說(shuō)的“具有各方面知識”的人)。他們日子過(guò)得似乎都不錯!
對于希望成為 IT 架構師的普通人,這可能會(huì )使他們望而卻步。那么,究竟在 IT 領(lǐng)域中工作的哪些人如此有創(chuàng )造力而同時(shí)又過(guò)得這樣快樂(lè )呢?但他們每個(gè)人都是很久以前從普通人開(kāi)始一步步做起的。他們并不是一下子就獲得了成為 IT 架構師的所有技能,他們經(jīng)歷了漫長(cháng)而艱難的過(guò)程,并深入各種不同領(lǐng)域才得到了所需的技能。設計方面也是如此。其他人則是在嘗試了其他角色后才選擇這個(gè)職業(yè)。
考慮到我們的專(zhuān)家組成員對新鮮事務(wù)的好奇心,我忍不住認為這可能并不是他們中的任何人的最終歸宿。如果我們要討論的是他們以后的職業(yè)生涯,我想會(huì )發(fā)現他們在將來(lái)承擔起新的任務(wù)、對新的挑戰發(fā)起攻擊。我們都經(jīng)歷了很長(cháng)的成長(cháng)過(guò)程,但我認為他們有可能還會(huì )繼續這個(gè)過(guò)程。因此,如果下次問(wèn)他們這個(gè)問(wèn)題也會(huì )非常有意義:“長(cháng)大后,您想干什么?”讓我們拭目以待吧。
developerWorks Architecture 團隊——
Paul Dreyfus,編輯
developerWorks
![]() ![]() |
![]()
|

回憶:我看到自己參加會(huì )議、在白板上畫(huà)圖、處理一個(gè)接一個(gè)的問(wèn)題。在團隊的幫助下,我嘗試利用過(guò)去所積累的知識在問(wèn)題領(lǐng)域中的各種力量和約束之間求得平衡。模式?或許吧。我喜歡體會(huì )團隊活力在周?chē)鲃?dòng)的那種感覺(jué)——每一分鐘,我都能在同事仔細描述各種情況的細枝末葉時(shí)獲得啟發(fā)和學(xué)到新的東西:為什么這個(gè)情況略有不同,因而必須修改模式,以處理實(shí)際情況。
編寫(xiě)代碼的日子:編寫(xiě)代碼是孤獨的探尋過(guò)程。這個(gè)探尋過(guò)程同時(shí)也是永不停止的。有時(shí)候還沒(méi)有回報。找到錯誤,會(huì )得到表?yè)P。如果最終的交付內容/版本中沒(méi)有錯誤,則不會(huì )提到這些代碼中的重要性和您在其中投入的精力!
我喜歡編程——不過(guò)現在很少進(jìn)行此類(lèi)工作了,僅在學(xué)術(shù)中需要時(shí)才會(huì )做這樣的工作。處理項目時(shí),我已不再進(jìn)行代碼編寫(xiě)工作了。
香港,1980 年:我開(kāi)始使用 BASIC 和 Fortran 進(jìn)行編程。我非常喜歡編程。轉眼到了 1995 年,我開(kāi)始進(jìn)行 Java™ 編程,享受接口實(shí)現和松散耦合所帶來(lái)的純粹樂(lè )趣。但應該如何設計系統結構呢?
即使獲得了最好的運行代碼,仍然需要一個(gè)能夠承受非功能需求沖擊的結構。因此,您需要能夠對各種相互沖突的約束進(jìn)行權衡,在重復考慮當前情況的細微差異的前提下進(jìn)行決策。
我比較認可“模式生成體系結構”這樣的學(xué)術(shù)流派。從藍圖(一組基本模式)開(kāi)始,然后根據自己的實(shí)際情況進(jìn)行擴展和自定義。這就在最佳實(shí)踐和現實(shí)具有特定的無(wú)名品質(zhì)(QWAN,Quality Without a Name)之間獲得了最佳的平衡點(diǎn),這一點(diǎn)我非常喜歡。
我喜歡自己的架構師工作。 :)
![]() ![]() |
![]()
|

開(kāi)始的時(shí)候(大部分時(shí)間,甚至到現在也是如此),我們并不進(jìn)行“體系結構設計”。我們只編寫(xiě)程序,其中的任何體系結構都是意外出現的。
我在 14 歲時(shí)編寫(xiě)了第一個(gè)程序(使用的是 Fortran,當然我對于良好的設計所知并不多,體系結構方面懂的就更少了)。上大學(xué)時(shí)(最初在 Air Force Academy,后來(lái)在 Santa Barbara 的 University of California),我遇到了當時(shí)形成了深度設計的早期理念的很多人:David Parnas、Mary Shaw、Tony Hoare、Edsger Dijkstra 等。剛剛二十歲出頭的時(shí)候,我擔任過(guò)一些相當大(甚至按照今天的標準也可以這么說(shuō))的實(shí)時(shí)分布式系統的項目工程師和項目經(jīng)理的角色,為美國軍事航天項目提供支持。
1982 年退役后,我加入剛剛創(chuàng )建的 Rational®,參與了 Ada 項目的大量工作。我的大部分時(shí)間都奔走于美國各地,與合同客戶(hù)和軍隊協(xié)作,以幫助他們應用軟件工程的最佳實(shí)踐以及這個(gè)新興的語(yǔ)言。
我一直是個(gè)雜家,出現在科學(xué)所指引的地方。我逐漸發(fā)現商業(yè)領(lǐng)域的很多組織開(kāi)始邀請我幫助他們進(jìn)行類(lèi)似的工作,因此我開(kāi)始偏離 Rational 的核心業(yè)務(wù),將我的精力投入到這個(gè)更大的領(lǐng)域中。也大約在這段時(shí)間,我撰寫(xiě)了第一篇有關(guān)面向對象的設計的論文,并開(kāi)始編寫(xiě)我自己的第三本書(shū)(與此主題相關(guān))——其中所有內容不過(guò)是對我通過(guò)這些項目得到的經(jīng)驗的總結。我還與 Bjarne Stroustrup 進(jìn)行了合作(他是 C++ 的發(fā)明者,我們甚至還一起去參加了全國性的巡回演講),因為我們發(fā)現他的語(yǔ)言設計方法和我的系統設計方法非常相似。
在那段時(shí)間里,我仍然進(jìn)行編程工作:我使用 ObjectPascal(在 Mac 平臺上)編寫(xiě)了 Rational Rose 的原型,并采用 Smalltalk(PC 平臺上)編寫(xiě)了第二個(gè)更為完整的版本。Dave Stevenson 和我是第一個(gè) Rational 建模產(chǎn)品的架構師(采用 C++ 編寫(xiě);這對 Rational 是一項突破,因為之前的所有產(chǎn)品都是使用 Ada 完成的)。
這些產(chǎn)品進(jìn)入市場(chǎng)后,我再次承擔起作為架構師和體系結構指導人的角色,為我們的一系列最大的客戶(hù)服務(wù)。在此期間,我受到 Philippe Kruchten 的工作的很大影響;他領(lǐng)導進(jìn)行了早期的流程設計等方面的工作,同時(shí)他還是 Canadian Air Traffic Control System 的首席架構師之一。他也參與了有關(guān)體系結構描述的 IEEE 標準方面的工作。
![]() |
|
最近這些年,Kent Beck 和我組織了名為 Hillside Group 的模式研討會(huì );這個(gè)研討會(huì )今天仍然是模式文化的重心。我是 World Wide Institute of Software Architects (WWISA) 的最早成員之一,同時(shí)也是后來(lái)成立的 American Institute of Software Architects (AISA) 的第一批成員之一,這兩個(gè)組織都致力于發(fā)展軟件體系結構實(shí)踐。
這段時(shí)間里,隨著(zhù) Rational 的業(yè)務(wù)全面納入 IBM 中,我也回到了我原來(lái)進(jìn)行的體系結構方面的工作。我不僅對 IT 體系結構感興趣,而且也對軟件密集型系統的每個(gè)領(lǐng)域的體系結構原則感興趣。體系結構方面仍然有很多東西我們不知道——它所代表的東西、它所不能代表的東西、如何最好地表示它、體系結構級別存在何種模式等等。因此,我花費了大量的時(shí)間通過(guò)實(shí)踐和研究來(lái)進(jìn)行學(xué)習。在實(shí)踐方面,我仍然繼續擔任我們客戶(hù)(甚至也包括尚不是我們客戶(hù)的組織)的架構師兼體系結構指導人的角色。在研究領(lǐng)域,我正在編寫(xiě) Handbook of Software Architecture,該書(shū)的目標是確定各種有意義的軟件密集型系統的體系結構。我與 Software Engineering Institute (SEI) 的體系結構人員進(jìn)行了大量的合作。同時(shí),我也非常密切地關(guān)注著(zhù) Murray Cantor 在系統工程方面的進(jìn)展。我在嘗試幫助人們記住,“SOA” 中的“A”表示“體系結構”,另外還參與了一些新興商業(yè)和行業(yè)體系結構標準方面的工作。
我仍然在進(jìn)行編程工作(大部分時(shí)間都是用 Java),但我想自己現在終于知道了如何設計我所編程的系統的體系結構。
![]() ![]() |
![]()
|

我在此銀行中擔任助理咨詢(xún)師,我所屬的團隊負責設計廣泛分布于全球范圍內的信用證解決方案。我全面接觸了正式軟件開(kāi)發(fā)生命周期方法、經(jīng)過(guò)業(yè)界檢驗的工程原則、軟件產(chǎn)品堆棧和大量商業(yè)銀行領(lǐng)域的概念。有了這些經(jīng)驗,我大膽地來(lái)到瑞士,為多家銀行提供咨詢(xún)服務(wù),指導他們解決多個(gè)領(lǐng)域的技術(shù)問(wèn)題(如進(jìn)行電子文檔存檔,以實(shí)現異類(lèi)數據集成)。瑞士人對精工和質(zhì)量方面的關(guān)注是非常有遠見(jiàn)的,而他們對采用新興技術(shù)的渴望讓我有機會(huì )接觸各種創(chuàng )新產(chǎn)品。
![]() |
|
到此時(shí),我已非常深入地了解了銀行業(yè)務(wù),并加入了一個(gè)全球性 SI 的研發(fā)部門(mén),重新回到我最擅長(cháng)的領(lǐng)域。在這里,他們允許我對應用程序層進(jìn)行分析,并能夠直接研究 OS 內核和基礎硬件的基本細節。我對 UNIX SVR4 進(jìn)行了修改——調整引導和調度算法、優(yōu)化設備驅動(dòng)程序、調整事件和中斷處理、對機器代碼進(jìn)行反向工程、研究前輩(Ritchie、Thompson、Joy)編寫(xiě)的組件、使其識別 x86 和 RISC 處理器內部指令、處理后來(lái)出現的新興微內核和實(shí)時(shí)操作系統。從中獲得的經(jīng)驗鞏固了我對解決方案和應用程序實(shí)際 如何運行的認識。
隨后進(jìn)入 .COM 時(shí)代,全世界都開(kāi)始更多地接觸面向對象的概念,而我也不希望被這個(gè)潮流拋在腦后。因此,我開(kāi)始擔任一家新成立的公司的首席工程師,該公司當時(shí)正在研發(fā)用于解決異類(lèi)企業(yè)數據源的實(shí)時(shí)集成的產(chǎn)品。我負責設計和構建核心運行時(shí)基礎設施、元數據管理和數據訪(fǎng)問(wèn)框架。這個(gè)公司真的是一個(gè) OO 新兵訓練營(yíng)。我的同事(大部分都剛剛畢業(yè))都具有完全的 OO 意識——我甚至懷疑他們將 Gang-of-Four 的書(shū)作為早餐!我很快便成了 OO 的信徒,對 OO 設計、模式和技術(shù)以及如何將其應用于 Java 以及早期 J2EE 了如指掌。除了核心產(chǎn)品體系結構外,我還承擔其他一些任務(wù):客戶(hù)銷(xiāo)售、提供 UI 工具和人為因素方面的培訓、生成安裝二進(jìn)制文件、排除客戶(hù)部署的故障等等。
很快我開(kāi)始渴望感受大公司的那種節奏,隨后加入 IBM。最初我有些擔心自己會(huì )迷失在藍色巨人懷抱中,但很快發(fā)現 IBM 的運作方式就像帶保護傘的 VC,充滿(mǎn)了主人翁意識和創(chuàng )新。我最初是 WebSphere Application Server 產(chǎn)品的一名開(kāi)發(fā)人員,進(jìn)行的是系統管理和 EJB 容器組件方面的工作。之后,我加入了 IBM Research 的一個(gè)孵化項目 NextWeb,為 Web 服務(wù)建議和創(chuàng )建綜合框架,包括“on-the-glass”服務(wù)。由此引出了各種臨時(shí)標準,并最后定型為 OASIS WSRP TC。同時(shí),我還負責設計 WebSphere Portal Server 中的一些組件的體系結構,以將這些孵化技術(shù)投入實(shí)際應用。
到此時(shí),我掌握了 Web 服務(wù)和初期 SOA 的要點(diǎn)。我開(kāi)始為 IBM 戰略業(yè)務(wù)合作伙伴提供技術(shù)指導,引導他們充分利用我們的中間件投資組合,從而更好地完成他們的重要產(chǎn)品功能。隨著(zhù) SOA 技術(shù)不斷成熟,我的這些服務(wù)范圍開(kāi)始擴展到大型 IBM 客戶(hù)和相關(guān)的適配器方面——共享技術(shù)策略、指導他們進(jìn)行體系結構試點(diǎn)項目以及將他們的問(wèn)題轉給我們的軟件產(chǎn)品團隊。目前,我的工作重點(diǎn)已經(jīng)發(fā)生了進(jìn)一步的變化,負責將全球客戶(hù)活動(dòng)中發(fā)現的關(guān)鍵差距和問(wèn)題反映到 IBM 軟件投資組合和解決方案資產(chǎn)中,從而幫助推動(dòng) IBM 軟件部的 SOA 需求策略的發(fā)展。
我非常幸運,能夠親身經(jīng)歷 IT 的諸多方面,正如前面提到的,還通過(guò)這些經(jīng)歷磨練了我的基本學(xué)習技能。就今天而言,如果在處理技術(shù)理念僵局或應付要命的競選活動(dòng)(是的,在 IBM 也有這樣的活動(dòng))讓我感覺(jué)到自己的精力不足,為了重新打起精神,我只需要從書(shū)架上取下我的畢業(yè)論文看看就能辦到。
![]() ![]() |
![]()
|

在我職業(yè)生涯之初,擔任的是開(kāi)發(fā)人員的工作,工作重點(diǎn)在較大的軟件工程中非常具體的元素;這通常意味著(zhù)主要在實(shí)現階段參與相關(guān)工作,而在體系結構設計期間卻涉及的不多。我當時(shí)所進(jìn)行的設計工作主要是“小型”設計,通常屬于一個(gè)應用程序中的工作。隨著(zhù)我職業(yè)生涯的發(fā)展,我越來(lái)越認識到,即使通過(guò)非常嫻熟的技能創(chuàng )建了軟件構建塊,但如果基本理解和體系結構不正確,項目成功的幾率也將大打折扣。因此我開(kāi)始主動(dòng)尋找能讓我更多參與此類(lèi)活動(dòng)的項目。這讓我傾向于喜歡發(fā)現解決方案的總體概貌。一段時(shí)間后,我開(kāi)始在項目進(jìn)行期間擔任架構師的角色。以后的故事您都知道啦 :)
![]() ![]() |
![]()
|

我上大學(xué)前沒(méi)有見(jiàn)過(guò)計算機(準確地說(shuō)是大二才首次看到計算機)。是的,我有些落后。實(shí)際上,我都是在那之后很久才首次看見(jiàn)計算機的。我在大二時(shí)見(jiàn)到了計算機終端。我當時(shí)學(xué)習了 FORTRAN,才發(fā)現以下事實(shí):
無(wú)論如何,我現在并不確定自己是否仍然對此很擅長(cháng)。我仍然喜歡我工作的技術(shù)方面的東西:調整代碼、編寫(xiě)小段 PHP、討論一些設計選擇、考慮重要的下一步工作。我定期到現場(chǎng)視察,花上一整天時(shí)間對項目進(jìn)行檢查,并與項目人員進(jìn)行討論?,F場(chǎng)人員說(shuō),盡管會(huì )受時(shí)差的影響而且每天工作時(shí)間很長(cháng),我似乎從來(lái)不覺(jué)得累。他們想知道我是如何做到的。這樣的日子是我工作中最有意思的日子,我非常喜歡。我對它們的喜愛(ài)程度超過(guò)了對咖啡的喜愛(ài)。
正是這個(gè)原因讓我覺(jué)得 IT 是我的正確選擇。那么,我走過(guò)的路是什么樣的呢?我不斷地探索新問(wèn)題(現在也是如此)。我所走過(guò)的路似乎是最具挑戰,也是最有趣的。
![]() ![]() |
![]()
|
基于廣泛 IT 領(lǐng)域實(shí)踐經(jīng)驗的堅實(shí)基礎

隨著(zhù)時(shí)間的推移,我的技能不斷提升,所接觸的項目范圍也越來(lái)越廣泛,我經(jīng)常發(fā)現所處理的軟件存在功能重復(或功能非常相近)。我會(huì )重新設計此類(lèi)冗余功能,以使其包含在應用程序內的可重用模塊中,從而減少要維護的代碼量,降低出現錯誤的潛在可能性。
此時(shí)我發(fā)現自己希望在更廣泛的范圍內應用這些技能。我想知道我所處理的所有這些應用程序如何一起工作。我想正是在此時(shí)我決定要成為一個(gè) IT 架構師。為了最終達到我的目標,我接觸了諸多 IT 領(lǐng)域的東西,包括 QA 測試和操作。我還在一個(gè)替換 ERP 系統的部署中扮演過(guò)主要角色:這項工作要求對舊 ERP 系統與對其依賴(lài)的外圍應用程序(或反過(guò)來(lái))間的所有接口進(jìn)行全面的檢查。
所有這些經(jīng)驗促成了我的 IT 體系結構技能的形成。我當然很同意 Bobby 的觀(guān)點(diǎn),為了成為高效率的 IT 架構師,務(wù)必通過(guò)操作、維護、測試和部署軟件獲得足夠的經(jīng)驗,從而形成堅實(shí)的基礎。
![]() ![]() |
![]()
|

在決定不從事法律方面的工作后,我在一家咨詢(xún)公司謀得了一個(gè)職位。我后來(lái)離職,并首次加入了一家小型計算機公司(當時(shí)規模?。㏕andem Computers。我在 Tandem 獲得了大量的經(jīng)驗,讓我對各個(gè)公司如何購買(mǎi)各種先進(jìn)技術(shù)以及如何使用技術(shù)有了更全面的了解。更為重要的是,由于在 Tandem 擔任過(guò)不同的角色,我擔任過(guò)指導咨詢(xún)師、程序員、軟件工程師和架構師的職責。我發(fā)現自己不僅需要進(jìn)行設計和編碼,還需要幫助為解決方案確定恰當的技術(shù),還必須考慮使用模式、服務(wù)質(zhì)量,而且必須同時(shí)考慮以后的需求和目前的需求。
我發(fā)現好的架構師都是善良的獨裁者,具有很強的技術(shù)、良好的寫(xiě)作能力、良好的口頭表達能力,能夠在各個(gè)層次進(jìn)行溝通。我很喜歡這個(gè)新角色。我之所以加入 IBM,是因為我遇到了很多非常聰明的人,他們都在非常大的公司工作,與 CEO、CIO 交流,影響著(zhù)技術(shù)方向,并負責設計主要解決方案(其成功對高級執行人員非常重要)的體系結構。我也希望成為這樣的人——現在我是了。
![]() ![]() |
![]()
|
當您不再進(jìn)行編碼工作轉而將重點(diǎn)放在設計和集成上,會(huì )發(fā)生什么

![]() |
|
當時(shí)我剛剛走出學(xué)校的大門(mén)。我非常失望,發(fā)現自己所學(xué)的所有關(guān)于并行計算機科學(xué)理論并沒(méi)有在那個(gè)年代的計算機系統上得到利用——至少在我所知的數據庫系統上是如此。我的目標是設計一個(gè)并行版本的重組命令,從而不必在所有周末都在綠色屏幕(指綠色的單色顯示器)前度過(guò)。而正是這個(gè)使我開(kāi)始進(jìn)行數據庫設計、并行編程和多任務(wù)操作系統設計。當我將原來(lái)約兩天半的重組執行時(shí)間降低為約 7 個(gè)小時(shí)后,我升了職,我的老板告訴我,他認為我以后會(huì )成為一名好的架構師(如此之類(lèi)的說(shuō)法)!很快,我成為了一家小咨詢(xún)公司(后來(lái)被一家更大的計算機供應商收購)的數據庫咨詢(xún)師,開(kāi)始為很多客戶(hù)設計和調整數據庫。
接下的五年左右,我在教客戶(hù)如何設計數據庫和應用程序,以最有效地使用 CPU 資源。這意味著(zhù)要討論應用程序和數據庫體系結構——而這使我開(kāi)始接觸 IT 體系結構。我最初以數據庫設計為核心的工作重點(diǎn)讓我開(kāi)始探索實(shí)體關(guān)系模型(一項大部分數據庫設計人員仍然在使用的技術(shù))。后來(lái),在 80 年代末期,我開(kāi)始研究語(yǔ)義建模(我當時(shí)認為這種技術(shù)非常不錯),后來(lái)又開(kāi)始研究對象建模和對象數據庫。大約在這段時(shí)間,我首次接觸了“元數據”和“元數據庫存儲庫”——當時(shí)正是應用開(kāi)發(fā)周期 (AD/Cycle) 的年代。數年后(也就是 90 年代中期),同時(shí)發(fā)生了一系列有意義的事件,建模語(yǔ)言(如 UML)、元數據語(yǔ)言(如 Meta-Object Facility、XML DTD 以及后來(lái)的 XML 模式)和中間件(如最初的 CORBA 和后來(lái)的 J2EE 、.NET 及 ESB)開(kāi)始采用面向對象的方式,并最終發(fā)展為基于組件和面向服務(wù)的系統。
從這期間的某個(gè)時(shí)段起,我的名片上開(kāi)始出現“數據庫架構師”、“對象架構師”、“軟件架構師”、“首席架構師”之類(lèi)的字樣。也正是這段時(shí)間,我被推舉到 Object Management Group (OMG) 的“體系結構委員會(huì )”;這是一個(gè)行業(yè)標準組織,致力于推廣各種行業(yè)標準,如 Common Object Request Broker Architecture (CORBA)、統一建模語(yǔ)言(Unified Modeling Language,UML)以及后來(lái)的模型驅動(dòng)的體系結構(Model-Driven Architecture,MDA)。我想人們最終認為我是個(gè)“架構師”,是因為我幾年前開(kāi)始不再編寫(xiě)代碼,而開(kāi)始將更多的精力放在如何使系統一起工作——工具、應用程序和數據集成的世界。
現在我需要考慮的是各個(gè)“體系結構”如何一起工作,如“如何將模型驅動(dòng)的體系結構和面向服務(wù)的體系結構概念一起使用”。使用開(kāi)放源代碼(主要是 Eclipse 和 Apache 項目)和開(kāi)放標準(主要來(lái)自 W3C、PMG 和 OASIS)基于真實(shí)客戶(hù)場(chǎng)景設計一起工作的軟件工具是這段時(shí)間我在 IBM 作為架構師所進(jìn)行的工作。我還要花時(shí)間為重要客戶(hù)提供協(xié)助,幫助他們定義體系結構和使用工具與中間件時(shí)的策略方向。我想我仍然是個(gè)架構師,因為我現在是 IBM 軟件部體系結構委員會(huì )指導委員會(huì ) (IBM Software Group Architecture Board Steering Committee)、IBM Eclipse 審查委員會(huì ) (IBM Eclipse Review Board) 和 OMG 體系結構委員會(huì ) (OMG Architecture Board) 的成員。
毫無(wú)疑問(wèn),我現在意氣風(fēng)發(fā),準備繼續在體系結構的賽場(chǎng)上馳騁幾年。也可以說(shuō),我現在對體系結構如醉如癡——特別與 IBM 內外這么多業(yè)內出色的架構師在一起時(shí)。
![]() ![]() |
![]()
|

能夠做各個(gè)方面的事情,這才是 IT 的樂(lè )趣所在??梢詷嬎家粋€(gè)新想法、對其進(jìn)行展開(kāi)、向其他人展示、獲得反饋,然后對其進(jìn)行改進(jìn)。而且可以任何時(shí)間在任何地點(diǎn)做這樣的事情。其他哪種職業(yè)能讓您有這樣自由進(jìn)行創(chuàng )新的機會(huì )呢?
因此要尋找任何能夠培養所有這些技能的機會(huì )。不要不敢接觸任何新技術(shù)和編寫(xiě)“Hello World”一類(lèi)的簡(jiǎn)單應用程序。始終有新東西值得學(xué)習和嘗試。
![]() ![]() |
![]()
|

和很多同事一樣,我并沒(méi)有成為架構師的想法。但和他們一樣,在我的 IT 領(lǐng)域的成長(cháng)過(guò)程中,成為架構師的路似乎是一個(gè)自然的發(fā)展過(guò)程。我的職業(yè)生涯始于 80 年代末期,最開(kāi)始在 IBM AIX 開(kāi)發(fā)實(shí)驗室工作。我當時(shí)的體系結構概念全是關(guān)于 AIX 的速度/數據提供和功能。我并不理解自己作為 C 和 C++ UNIX 編碼人員和測試人員能如何幫助客戶(hù)實(shí)現和部署任務(wù)關(guān)鍵型應用程序。其中的很多應用程序都作為所謂的“資本主義社會(huì )”的催化劑或為其提供主要支持。
離開(kāi) AIX 開(kāi)發(fā)實(shí)驗室后,我開(kāi)始擔任與客戶(hù)協(xié)作的 IT 專(zhuān)家,嘗試實(shí)現客戶(hù)機-服務(wù)器系統。我從事此工作后不久,.COM 熱潮開(kāi)始了,而很多人稱(chēng)為“Java 進(jìn)化”的趨勢也在這個(gè)時(shí)候出現了。換了公司后,我于 90 年代中期開(kāi)始在 Sun Microsystems JavaSoft 組織擔任第一份名片上有“架構師”字樣的工作。從這之后到現在這段時(shí)間內,我在不同的 IT 專(zhuān)家角色(執行師和 IT 架構師)之間不斷來(lái)回轉換著(zhù)。
![]() |
|
盡管與架構師相比,我更喜歡“執行師”這個(gè)詞,但“架構師”接受度似乎更廣泛,也似乎更受尊敬。我們架構師對技術(shù)非常感興趣,因為我們知道技術(shù)如何支持體系結構以及體系結構如何支持 IT。作為 IT 專(zhuān)家,我通常在知道問(wèn)題前就已知道了解決方案。例如,我口袋里有 Java 這樣的錘子,無(wú)論手里的釘子或螺絲釘(問(wèn)題)的大小如何,我都能夠使用 Java 將其解決。這種理念在很長(cháng)一段時(shí)間內都非常適合我的情況。在上世紀 90 年代末期和本世紀之初,我最終認識到,無(wú)論我的編程技能多么先進(jìn),對結果的影響始終微乎其微。我隨后認識到:“體系結構更多地與理解問(wèn)題是什么相關(guān),而不是考慮應該使用何種工具和技術(shù)來(lái)解決此問(wèn)題。”
我從這些經(jīng)歷所總結得來(lái)的首要原則是:全面理解問(wèn)題將幫助您確定使用何種技術(shù)來(lái)解決此問(wèn)題。
![]() ![]() |
![]()
|

我與一些非常聰明的人合作過(guò),學(xué)到了大量知識,知道如何將大的復雜問(wèn)題分解為較小的可行單元并同時(shí)兼顧全局。我認為這是架構師幫助解決難題和進(jìn)行大型項目時(shí)的關(guān)鍵方面之一。我喜歡盡可能從多個(gè)角度看待問(wèn)題,以找到最佳解決方案。我很希望親自動(dòng)手解決問(wèn)題,非常喜歡接觸新軟件、新體系結構、新領(lǐng)域和新技術(shù)——并將其應用到我的項目中。這是一個(gè)持續的學(xué)習過(guò)程,我很喜歡這樣的生活。
現在可以方便地通過(guò)多種渠道進(jìn)行學(xué)習(網(wǎng)絡(luò )課程、自學(xué)、網(wǎng)站、演示程序等等),學(xué)習新技術(shù)已不再是難事。關(guān)鍵是如何將其應用到實(shí)際生活中——而這正是好的體系結構決策與其他決策的區別所在。這非常具有挑戰性,我所知的做到這一點(diǎn)的唯一有效方法就是不斷參加新項目,了解自己不熟悉的新領(lǐng)域。
![]() ![]() |
![]()
|

![]() |
|
不過(guò),我成長(cháng)為架構師的道路有些曲折。我本科時(shí)學(xué)習的是生物學(xué)和計算機科學(xué)。我努力利用多學(xué)科方法進(jìn)行微生物學(xué)或免疫學(xué)(繼承我父親的衣缽)領(lǐng)域的基礎研究。我真正的第一份工作是在 80 年代中期參與政府的一份合同履行工作;計算機在當時(shí)還是一種奢侈品。幸運的是,我的客戶(hù)財力雄厚,購買(mǎi)了多臺 PC。征得了實(shí)驗室主管的同意,我使用計算機開(kāi)發(fā)了一些程序,用于進(jìn)行費時(shí)且手工計算時(shí)容易出錯的必要計算工作,以便得到化驗結果。
在實(shí)驗室進(jìn)行了幾年腦生物化學(xué)研究后,我覺(jué)得自己對計算機和設計系統方面的東西有很高的熱情。我重返學(xué)校,并完成了計算機科學(xué)碩士學(xué)位課程。幸運的是,我從研究生院畢業(yè)后,就馬上獲得了參與設計一個(gè)首創(chuàng )性電信服務(wù)提供系統的體系結構的機會(huì )——同樣也是為政府工作。(這項工作讓我不得不從頭學(xué)習很多東西。)我們開(kāi)發(fā)的系統將最終為政府的每個(gè)部門(mén)提供服務(wù)。這五年在一體化電話(huà)公司服務(wù)方面的工作經(jīng)歷讓我獲得了指導其他工程師所必要的經(jīng)驗,最終成為了所有員工中出色的一員。
我在電信并購狂潮開(kāi)始前離開(kāi)了電信方面項目的工作,并隨后加入 IBM,擔任組件代理團隊的架構師。以后的事情大家都知道了。最終,我發(fā)現 IT 體系結構為我提供了跨組織邊界工作的機會(huì ),使我能夠設計對客戶(hù)業(yè)務(wù)帶來(lái)切實(shí)影響的系統體系結構。
![]() ![]() |
![]()
|

我首先從事的是軟件測試工作,我接受這個(gè)工作完全是因為可以通過(guò)其在編寫(xiě)軟件的團隊中獲得一個(gè)職位(盡管當時(shí)我并未編寫(xiě)過(guò)軟件)。測試讓我思考這樣一些類(lèi)型的問(wèn)題:如何知道何時(shí)軟件正確工作?如果某個(gè)功能不正確工作,如何判斷?什么最容易出問(wèn)題,怎樣會(huì )引起問(wèn)題?后來(lái)發(fā)現,這些問(wèn)題對測試人員非常有意義。另外,我還發(fā)現這些問(wèn)題可以幫助您了解如何創(chuàng )建好的軟件。
我的第一項編程工作是對現有代碼進(jìn)行維護。這項工作實(shí)際上教會(huì )了我如何編寫(xiě)可維護(或不可維護)的代碼,以及如何恰當設計來(lái)促進(jìn)重用。代碼應該可供兩類(lèi)讀者閱讀和理解:
我遇到了很多代碼都是僅滿(mǎn)足了第一類(lèi)讀者的需求,而忽略了第二類(lèi)讀者。一直到今天,我都盡力不犯這樣的錯誤。
因此了解如何測試和維護代碼幫助我成為了一個(gè)更好的代碼編寫(xiě)人員。能夠進(jìn)行代碼編寫(xiě)工作,幫助我學(xué)會(huì )了如何設計組件和框架以及如何將實(shí)現隱藏在接口后。必須測試自己的代碼,讓我學(xué)會(huì )編寫(xiě)能夠作為可重用組件分離且能夠作為單元進(jìn)行測試的代碼。然后,我開(kāi)始為不同的部分進(jìn)行編程:數據庫、消息傳遞、工作流等,甚至還包括本身具有多個(gè)部分的應用程序,如 EJB 和 Servlet。有了這些經(jīng)驗,我開(kāi)始將應用程序視為各大部分一起工作的整體,封裝了每個(gè)部分如何實(shí)現的細節。隨著(zhù)我開(kāi)始將應用程序視為由各大部分、分布層次以及運行所需的專(zhuān)用引擎組成,我開(kāi)始像架構師一樣思考問(wèn)題了。
因此,我的建議是,從底層做起,循序漸進(jìn)。掌握每個(gè)層次的能力;您將需要以此為基礎來(lái)進(jìn)入下一個(gè)未知的層次。缺少這個(gè)基礎的架構師工作起來(lái)會(huì )比較費勁。
![]() |
|
體系結構是我的正確選擇,因為它是特定的參與層次,使我能夠最高效地給項目帶來(lái)最積極的影響。這在以前指的就是(目前有時(shí)候還是如此)測試、代碼維護、開(kāi)發(fā)、設計??赡苣骋惶爝@將會(huì )涉及其他什么內容。(管理?可能不會(huì )。)但就目前來(lái)說(shuō),體系結構是我幫助完成項目的最佳方式。
在以前的專(zhuān)欄文章中,David Jackson、Grady Booch 和 Jenny Choy 分別建議架構師要注重“溝通與推動(dòng)”、“溝通與傾聽(tīng)”及“建立聯(lián)系”。這些也都是很好的建議,但并不一定是作為工程師時(shí)學(xué)到的東西。您可能會(huì )想到如何構建應用程序的最好方法,但如果無(wú)法通過(guò)溝通將這些想法傳遞給團隊,說(shuō)服他們按照您的計劃行事,您唯一的出路就是自己一個(gè)人完成所有工作。
![]() ![]() |
![]()
|
Ali Arsanjani 博士是 IBM Global Services 的 SOA and Web Services Center of Excellence 的首席架構師,主要負責收集和制定 SOA 和 Web 服務(wù)的建模、分析、設計和實(shí)現方面的最佳實(shí)踐。他是內部的 IBM 全球 SOA and Web Services Community of Practice(擁有 4000 名成員)的負責人,是 SOA 的面向服務(wù)的建模和體系結構(Service-Oriented Modeling and Architecture,SOMA)方法的主要作者之一。他目前的工作重點(diǎn)是支持建模 (SOMA)、評估、策略與計劃、管理、體系結構和實(shí)現的 SOA 工具,以及其在 IBM 內部和外部的實(shí)際應用。請訪(fǎng)問(wèn)他的博客:Best Practices in Service-Oriented Architecture。
Grady 是 IBM Fellow,曾參與過(guò)全球幾乎能想象得到的所有領(lǐng)域的很多復雜的以軟件為中心的系統,在其中擔任架構師或體系結構顧問(wèn)。Grady 編寫(xiě)過(guò)六本暢銷(xiāo)書(shū),發(fā)表了數百篇關(guān)于軟件工程的文章,其中包括在上個(gè)世紀 80 年代早期發(fā)布的數篇論文,后來(lái)從這些論文中發(fā)展出來(lái)了面向對象的設計的術(shù)語(yǔ)和實(shí)踐。請訪(fǎng)問(wèn)他的博客:Software architecture, software engineering, and Renaissance Jazz。
Sanjay Bose 是 SOA Requirements Hub 的程序總監,供職于 IBM Software Strategy 部門(mén),負責 Enterprise Integration Design Center,該中心對 IBM Software 投資組合需求進(jìn)行標識,并通過(guò)參與企業(yè)客戶(hù)和 IBM Software 產(chǎn)品開(kāi)發(fā)實(shí)驗室的工作來(lái)開(kāi)發(fā)解決方案組件和資產(chǎn)。他有超過(guò) 12 年的 IT 行業(yè)從業(yè)經(jīng)驗,主要涉及創(chuàng )建產(chǎn)品體系結構、設計和細化技術(shù)策略以及使用分布式技術(shù)設計企業(yè)應用程序系統。他擅長(cháng)的領(lǐng)域包括 SOA、Enterprise Service Bus (ESB)、Web 服務(wù)、Java™ 2 Platform, Enterprise Edition (J2EE) 和電子商務(wù)技術(shù)。他與人合著(zhù)了 SOA Compass 一書(shū),并在 IBM developerWorks and Systems Journal 上發(fā)表了一些文章。他目前在賓夕法尼亞州匹茲堡居住和工作,業(yè)余時(shí)間他喜歡參加哲學(xué)講座、讀書(shū)、看電影和玩 Sony PlayStation。請訪(fǎng)問(wèn)他的博客:SOA, ESB, and beyond。
Jorge Diaz 是 IBM Software Services for WebSphere 的一位解決方案架構師。他的工作重點(diǎn)是提供中間件和分布式系統集成領(lǐng)域的策略體系結構,負責歐美地區的相關(guān)工作。Diaz 先生與各個(gè)大客戶(hù)密切合作,幫助他們使用各種技術(shù)(包括 Web 訪(fǎng)問(wèn))來(lái)引入面向服務(wù)的體系結構。
Donald Ferguson 是 IBM 的 200,000 技術(shù)雇員中的 53 個(gè) IBM Fellow(IBM 最高的技術(shù)職位)之一。Don 還是 IBM Software Group 的首席架構師。Don 是 SWG Architecture Board 的主席,該委員會(huì )監督 WebSphere、DB2®、Lotus®、Tivoli® 和 Rational® 產(chǎn)品的體系結構和集成。Don 原來(lái)曾擔任過(guò) WebSphere 系列產(chǎn)品的首席架構師。他于 1985 年加入 IBM Research。他的興趣愛(ài)好包括帶他的孩子們、與他們玩耍、分布式系統、簡(jiǎn)化應用程序開(kāi)發(fā)、系統管理、Web 服務(wù)、事務(wù)處理、性能以及空手道。請訪(fǎng)問(wèn)他的博客:Middleware and tools。
Chris Ferris 是 IBM 的 Software Standards Strategy Group 的一位資深技術(shù)成員。他有超過(guò) 25 年的 IT 行業(yè)從業(yè)經(jīng)驗,其中大部分時(shí)間都在參與分布式系統的體系結構、設計和工程方面的工作,并從 1999 年后就開(kāi)始積極參與 XML 和 Web 服務(wù)的開(kāi)放標準制訂工作。Chris 目前是 WS-I Basic Profile Working Group 的主席;該組織負責開(kāi)發(fā) WS-I Basic Profile。他是 IBM 在 W3C XML Protocols WG 的代表,并在其中擔任編輯。他還是 IBM 在 OASIS WS-RX TC 的代表。他曾被推選為 OASIS Technical Advisory Board (TAB) 的成員。此外,他還是 WS-Reliable Messaging 規范和 IBM RAMP 概要的作者和編輯。請訪(fǎng)問(wèn)他的博客 Web services, distributed computing, and interoperability。
Kerrie Holley 是 IBM 的 Services Oriented Architecture and Web Services Center of Excellence 的首席技術(shù)官。他擅長(cháng)的領(lǐng)域包括軟件工程、體系結構以及將業(yè)務(wù)要求轉換為以網(wǎng)絡(luò )為中心的分布式解決方案的設計。
杰出工程師 Sridhar Iyengar 負責 IBM Rational Software 開(kāi)發(fā)團隊的技術(shù)策略。他是 OMG Architecture 委員會(huì )和董事會(huì )的成員,對模型驅動(dòng)的體系結構標準的發(fā)展進(jìn)行指導。
Christina Lau 是 On Demand Development 團隊的一名架構師。她目前參與的項目包括創(chuàng )建 使用 Rational Software Architect 的模式解決方案 和試用業(yè)務(wù)創(chuàng )新和優(yōu)化功能。Christina 一位高級技術(shù)人員,同時(shí)也是 IBM Academy of Technology 的成員。她還是 Introduction to IBM Rational Application Developer 一書(shū)的合著(zhù)者。
Calvin Lawrence 是 IBM Software Group Emerging Technology 團隊的一位執行架構師。他的職責范圍包括通過(guò)關(guān)鍵策略活動(dòng)的支持來(lái)推廣戰略 IBM 體系結構、技術(shù)和產(chǎn)品,以及使用 IBM 技術(shù)確??蛻?hù)實(shí)現成功。他是 IBM Software Group Worldwide Technical Leadership Council 的前主席。
Sridhar Sudarsan 是 IBM Software Services for WebSphere 的一位高級 IT 架構師。他曾負責過(guò)全球很多客戶(hù)的企業(yè)體系結構解決方案的工作,包括金融、政府機構、汽車(chē)和 SRM 等垂直行業(yè)的大公司。他是 J2EE 中的批處理編程模型(該模型現在是 WebSphere XD 中的一個(gè)組件)的創(chuàng )建者之一,目前正在向客戶(hù)推廣這個(gè)模型,并致力于構建此技術(shù)相關(guān)的最佳實(shí)踐。他目前正在負責一家大型保險公司的大型 SOA Center of Excellence 的工作。
Andras Robert Szakal 是 IBM Federal Software Group 的首席架構師,同時(shí)也是杰出工程師和高級認證 IT 架構師。他還是 The Open Group 理事會(huì )成員。
Bobby Woolf 是一名 IBM Software Services for WebSphere 咨詢(xún)師,負責幫助客戶(hù)使用 WebSphere 實(shí)現成功。他與人合著(zhù)了 Enterprise Integration Patterns 和 The Design Patterns Smalltalk Companion 。請參閱 developerWorks 上 Bobby 的博客,以了解更多信息。
![]() | ||
|
| ![]() | 此內容是由 developerWorks 編輯團隊為您提供。如有建議或問(wèn)題,請通過(guò)以下郵件地址與編輯團隊聯(lián)系:dwinfo@us.ibm.com。 |
聯(lián)系客服