李泉
在北美從事軟件架構(gòu)師的工作近20年,一直以為這樣的工作遠(yuǎn)離普通大眾的生活。普通人即便不懂鋼琴或者繪畫(huà),也能夠從藝術(shù)大師的表演和作品中獲得享受。然而,軟件架構(gòu)師的工作過(guò)程及其結(jié)果無(wú)論多么完美,總是“其牙機(jī)巧制,皆隱在尊中”,“不足為外人道也”。我最近出版了一本關(guān)于如何成為軟件架構(gòu)師的(技術(shù))書(shū)后、邀我從人文角度寫(xiě)一篇讓普通大眾了解架構(gòu)師的文章時(shí),我惶恐了幾周的時(shí)間,出版這本書(shū)的準(zhǔn)備工作花了一年的時(shí)間,但所針對(duì)的讀者群,一直是很“小眾”的架構(gòu)師和程序員群體。如何向普通大眾展現(xiàn)這其中深層次上的思考,對(duì)我來(lái)說(shuō)還真是一個(gè)不小的挑戰(zhàn)。
回顧過(guò)去的20年,軟件應(yīng)用的確是越來(lái)越貼近普通人的生活了。無(wú)論是城市還是偏遠(yuǎn)的山村,越來(lái)越多的人在日常生活里越來(lái)越離不開(kāi)各種軟件應(yīng)用,比如網(wǎng)購(gòu)、社交、出行、就業(yè)等的軟件平臺(tái)和應(yīng)用。就像有一百個(gè)人吃了雞蛋,總會(huì)有幾個(gè)人好奇想去看看那下蛋的母雞 ——大家可能會(huì)想:能設(shè)計(jì)出這些越來(lái)越復(fù)雜的軟件應(yīng)用的到底是些什么樣的人呢?
在英文里,軟件架構(gòu)師和建筑師使用的是同一個(gè)詞 ——Architect。其實(shí),軟件架構(gòu)的理論,尤其是早期的理論中也經(jīng)常將建筑學(xué)中的術(shù)語(yǔ)和方法論借鑒過(guò)來(lái)?!八{(lán)圖”一詞即是個(gè)例子。
20年前的軟件系統(tǒng)大多比較簡(jiǎn)單,很多時(shí)候程序員直接進(jìn)行編程、而跳過(guò)了架構(gòu)設(shè)計(jì)這個(gè)環(huán)節(jié)。然而,近20年來(lái),軟件系統(tǒng)本身越來(lái)越復(fù)雜,不僅需要提供的功能越來(lái)越龐雜、牽涉到的其他的現(xiàn)有系統(tǒng)也越來(lái)越多。另外,軟件項(xiàng)目外包、第三方實(shí)施等的現(xiàn)實(shí),也要求有人來(lái)對(duì)整個(gè)項(xiàng)目的規(guī)劃和設(shè)計(jì)負(fù)責(zé)。由此,軟件架構(gòu)師這個(gè)角色就變得舉足輕重了,在大多數(shù)大型軟件系統(tǒng)和應(yīng)用的項(xiàng)目里直接決定著項(xiàng)目的成敗。如果將軟件系統(tǒng)和應(yīng)用的項(xiàng)目團(tuán)隊(duì)比作一只部隊(duì),那么架構(gòu)師的作用就是總參謀長(zhǎng)加上一部分總司令的作用。
我先來(lái)分享一下親身經(jīng)歷過(guò)的幾個(gè)架構(gòu)設(shè)計(jì)的項(xiàng)目。
某跨國(guó)石油公司的能源交易部門(mén)于2002年希望建立一個(gè)全球范圍內(nèi)能源產(chǎn)品( 包括石油、天然氣、電力、污染排放指標(biāo)等)的交易結(jié)算和風(fēng)險(xiǎn)評(píng)估平臺(tái),能源產(chǎn)品可在全世界各地進(jìn)行交易、交易實(shí)時(shí)地與交易對(duì)方進(jìn)行結(jié)算、本部門(mén)所持有能源產(chǎn)品組合的細(xì)節(jié)及其系統(tǒng)風(fēng)險(xiǎn)同時(shí)被實(shí)時(shí)地更新。如果交易的一方或雙方隸屬于某個(gè)母公司時(shí),母公司本身所持有能源產(chǎn)品組合的細(xì)節(jié)及其系統(tǒng)風(fēng)險(xiǎn)也被實(shí)時(shí)地更新、任何過(guò)度風(fēng)險(xiǎn)的情形都會(huì)被及時(shí)預(yù)警。
美國(guó)某著名的航空快遞公司在2005年時(shí)尋找一個(gè)高效、耐用的消息交換平臺(tái),能夠每天交換8億6千萬(wàn)個(gè)在郵件遞送過(guò)程中由每一個(gè)處理中心的進(jìn)出掃描而產(chǎn)生的消息。而這些消息在全天中的任何時(shí)間、在世界上的任何地方不斷地產(chǎn)生著。在此平臺(tái)上需要進(jìn)一步構(gòu)建供廣大消費(fèi)者使用的郵件跟蹤服務(wù)。到2010年,這個(gè)平臺(tái)的消息總處理能力達(dá)到了每天50億。并且同一個(gè)母公司下以不同注冊(cè)名稱(chēng)獨(dú)立運(yùn)營(yíng)的所有分公司所使用快遞服務(wù)的總量,及其使用模式可以被按母公司累加起來(lái)、為下一年針對(duì)不同母公司的大客戶(hù)進(jìn)行更好的服務(wù)定價(jià)提供可靠的依據(jù)。
美國(guó)某知名零售連鎖店有800多家店面,銷(xiāo)售包括服飾、家電、日用品等在內(nèi)的上萬(wàn)種商品。每個(gè)星期,總店都會(huì)在不同的商品上推出各種不同的促銷(xiāo)折扣以及減價(jià)券。有些時(shí)候這些促銷(xiāo)折扣和減價(jià)券的有效期只有某一天中的幾個(gè)小時(shí)。促銷(xiāo)折扣及減價(jià)券的推出上線(xiàn)必須經(jīng)過(guò)特定權(quán)限的批準(zhǔn)。在整個(gè)過(guò)程中完全不允許出現(xiàn)停機(jī)現(xiàn)象。
美國(guó)某玩具公司擁有多個(gè)世界上最著名的玩具品牌。在2012年引入的產(chǎn)品生命周期管理軟件系統(tǒng)成為玩具產(chǎn)品設(shè)計(jì)、制造、市場(chǎng)開(kāi)發(fā)、銷(xiāo)售、服務(wù)等幾乎所有的企業(yè)職能部門(mén)共同需要的平臺(tái)。然而,由于歷史的原因,這些職能部門(mén)目前使用的外購(gòu)和自己開(kāi)發(fā)的應(yīng)用系統(tǒng)超過(guò)了50個(gè)。加之這些職能部門(mén)擴(kuò)散在北美、歐洲、中國(guó)、東南亞等多個(gè)地區(qū),實(shí)際上根本不可能讓這些職能部門(mén)全面放棄已經(jīng)使用了十幾年,甚至幾十年他們熟知的系統(tǒng)。然而,所有圍繞玩具產(chǎn)品的各類(lèi)職能的數(shù)據(jù)已經(jīng)全部轉(zhuǎn)移到新的產(chǎn)品平臺(tái)上。如何保證這些職能部門(mén)將繼續(xù)使用的現(xiàn)有系統(tǒng)能夠從新的產(chǎn)品平臺(tái)上及時(shí)有效地獲得不斷被更新的相關(guān)數(shù)據(jù)?
既然架構(gòu)師的角色這么重要,具備什么樣知識(shí)和素質(zhì)的人才能成為架構(gòu)師呢?
首先,一個(gè)好的架構(gòu)師不但要是IT技術(shù)上的專(zhuān)家、還必須是所解決的業(yè)務(wù)問(wèn)題方面的雜家。對(duì)需要解決的問(wèn)題都不了解,怎么能保證設(shè)計(jì)出來(lái)的架構(gòu)方案能夠完美地解決被指定的業(yè)務(wù)問(wèn)題呢?IT技術(shù)和每個(gè)行業(yè)都在日新月異地發(fā)展和變化。有能力持續(xù)不斷地、努力地并有效地進(jìn)行學(xué)習(xí),是成為一名優(yōu)秀架構(gòu)師的必備條件。
談到學(xué)習(xí),人們往往認(rèn)為只是對(duì)知識(shí)和事實(shí)的記憶和掌握。其實(shí),任何學(xué)習(xí)的過(guò)程應(yīng)該有三個(gè)境界:知識(shí)、洞察及影響。
在“知識(shí)”階段,主要活動(dòng)是搜集有關(guān)的基本信息、進(jìn)行整理,并根據(jù)現(xiàn)有的知識(shí)和理論體系推導(dǎo)出比較直接的結(jié)論。
在“洞察”階段,主要活動(dòng)是在第一階段中得到的事實(shí)和基本信息的基礎(chǔ)上進(jìn)行梳理、挖掘和思考,力圖找出更深層次上的關(guān)系、得出更進(jìn)一步的結(jié)論。
而在“影響”階段,主要活動(dòng)是圍繞著如何根據(jù)前面二個(gè)階段中得到的知識(shí)和洞察來(lái)確定行動(dòng)方案,以達(dá)到預(yù)定的目標(biāo)或效果?!坝绊憽保茨軌?qū)θ嘶蛘呤庐a(chǎn)生積極的、根本性的變化,是前面兩個(gè)階段中積累的真正目的。如果沒(méi)有“影響”,前面兩個(gè)階段的努力除了“自?shī)首詷?lè)”外毫無(wú)意義。而對(duì)“影響”的定義,為團(tuán)隊(duì)的共同努力確立了共同的目標(biāo)。
其次,完美地完成架構(gòu)師的工作需要技術(shù)、人員和流程三足鼎立,缺一不可。而技術(shù)只是其中的三足之一,除了扎實(shí)的專(zhuān)業(yè)技能,架構(gòu)師還必須在另外兩個(gè)方面表現(xiàn)出超強(qiáng)的領(lǐng)導(dǎo)力,并在必要時(shí)說(shuō)服項(xiàng)目的利益相關(guān)人,保證項(xiàng)目的順利完成。這些“軟實(shí)力”,其實(shí)和架構(gòu)師專(zhuān)業(yè)技能的“硬實(shí)力”同樣地重要。這些“軟實(shí)力”可能包括諸如區(qū)別手段和目的、處處講究形式邏輯、利用抽象思維的能力、因?qū)ο蟮牟煌M(jìn)行表述和交流、堅(jiān)持原則但也知道妥協(xié)、知之為知之,等等。