筆者在 InfoQ 前文《關(guān)于架構(gòu)演進發(fā)展的探討》和《架構(gòu)演進的第四個趨勢:行業(yè)級標(biāo)準(zhǔn)化》中,提出了筆者對架構(gòu)發(fā)展趨勢的一些淺見,也介紹了企業(yè)級業(yè)務(wù)架構(gòu)方法論的來龍去脈,本文擬基于上述文章提煉一下企業(yè)軟件(大家常說的 B 端軟件)架構(gòu)設(shè)計中的四大思維支柱供大家參考。
支柱一:整體思維
一、從敏捷說起
敏捷誕生正是為了解決傳統(tǒng)軟件工程普遍被認(rèn)為存在的“低效”問題,諸如周期長、不能快速響應(yīng)需求、成果長期不可見而易導(dǎo)致失敗等,因此,敏捷往往給人“一言不合就開干”的雷厲風(fēng)行的印象,而很多時候,敏捷在實操上也確實由于對“速度”和“形式”的片面追求忽視了對整體的合理設(shè)計,這樣的敏捷并不是真正的敏捷,而是“著急”。
敏捷開發(fā)的幾位殿堂級大師對設(shè)計的重要性有著非常深刻的認(rèn)知。Martin Fowler 認(rèn)為敏捷注重的是演進式設(shè)計,而不是輕視設(shè)計;Vernon 也批評一些敏捷開發(fā)實踐是用“任務(wù)板挪卡”代替了設(shè)計;Sutherland 在“OODA”循環(huán)中也強調(diào)掌握全景信息而非只從自身視角看問題的重要性,每次 Scrum 結(jié)束提出 MVP,都要重走一遍循環(huán),因為 MVP 就是為了獲得更多、更全的反饋信息,有了這些信息才能快速決策,快速決策絕非快拍腦袋,是因為有模式加速了對信息的處理速度,這才是敏捷的原動力,也是要總結(jié)方法論的原因,“全景信息 + 思維模式 = 快速決策”。
“OODA”循環(huán)如圖 1 所示:
圖 1 “OODA”循環(huán)(來自互聯(lián)網(wǎng))
敏捷開發(fā)由于其“高效”的特點,在支持快速試錯的同時,也支持快速犯錯,這是一體兩面的,不能只看到其由于快速提供交付物所具有的成果可見能力。缺少整體把控,敏捷也容易堆疊“技術(shù)債務(wù)”。所以,敏捷開發(fā)也需要有整體思維做指導(dǎo)而不是只關(guān)注“速度”。如果敏捷也需要整體思維,那本就因此被“詬病”的傳統(tǒng)軟件工程方法和系統(tǒng)分析方法也就更應(yīng)該“且行且珍惜”了,眾所周知,Zachman 模型、TOGAF 模型和 DODAF 模型都很強調(diào)全景信息。
二、切勿因小失大
所有局部問題的解決都離不開對整體的分析,分析的范圍不同,得出的結(jié)論也會不同。舉個簡單的例子,如果我們?yōu)楣δ荛_發(fā)任務(wù)排定優(yōu)先級,那么,10 個任務(wù)之間進行排序和 20 個任務(wù)之間進行排序,很有可能得出排序結(jié)論是有很大差異的,分析范圍會決定分析結(jié)論。隨著輸入的增加,各類因素在總體上的權(quán)重就會有變化,原本認(rèn)為重要的事情也可能因此不再重要了,最近大家又常提起一句話:“時代的一粒灰落在個人頭上就是一座山”,其實也有這個意味。
面向局部的分析和面向整體的分析是有很大差別的,而現(xiàn)在的企業(yè)管理越來越注重提升整體性,因此,B 端軟件的架構(gòu)設(shè)計、需求解讀都應(yīng)當(dāng)有一個全局觀,分析范圍不同,解決方案也可能不同。
過于關(guān)注局部,將視野局限在小范圍內(nèi),很可能會造成“因小失大”。近年某大型電商曾在自己的支付平臺上引進社交功能,但卻被用于不法用途,結(jié)果導(dǎo)致功能下線。該電商實力不凡,在系統(tǒng)設(shè)計方面也可謂獨步青云,但是出現(xiàn)這樣大的“失誤”,很可能是分析問題時,沒能更廣泛地觀察已有案例和功能實際價值對整體的貢獻,低估了相關(guān)影響。盡管上述說法未免“事后諸葛亮”,但我們不是一直希望避免出現(xiàn)此類問題嗎?那回首原因,沒做更全面的分析,就不能僅是一種“說辭”了。
三、工具何其難
基于整體分析的架構(gòu)設(shè)計是一件極其耗費心力的工作,我們不能總是依靠架構(gòu)師這臺“碳基計算機”,總給架構(gòu)師壓上千斤重擔(dān)而不提供支持,架構(gòu)師不是魔術(shù)師,我們也經(jīng)常忘記了,“架構(gòu)”是整個企業(yè)的架構(gòu)而不是架構(gòu)師的“架構(gòu)”。
工欲善其事必先利其器。工具不僅僅是軟件類工具,方法論、流程管理工具、已有的模型資產(chǎn)、架構(gòu)管理軟件都屬于工具的范疇,而所有這些資產(chǎn)中,其實最重要的兩樣是方法論和模型資產(chǎn)。
大家可能會覺得架構(gòu)管理軟件更重要、更直接,但是架構(gòu)管理軟件是根據(jù)架構(gòu)設(shè)計方法論和架構(gòu)設(shè)計實踐做出來的,所以方法論和模型資產(chǎn)是更重要的基礎(chǔ)性工具,而以目前架構(gòu)設(shè)計的“混亂”現(xiàn)狀而言,沒有通用的架構(gòu)管理工具也是必然的,因為公認(rèn)能普適的架構(gòu)理論和行業(yè)級標(biāo)準(zhǔn)化的模型資產(chǎn)都沒有,也就沒有合適的、可以真正直達“痛處”架構(gòu)管理工具,如果能做出這樣的工具,那么,一定可以開辟一個世界級的市場。
除了工具的支持,來自企業(yè)的整體支持也很重要,不過這就屬于資源層面而不僅僅是工具了。面向整體的設(shè)計,應(yīng)當(dāng)有整體的參與,企業(yè)的各個部分都應(yīng)當(dāng)參與到整體設(shè)計中,而整體設(shè)計也應(yīng)當(dāng)向整個企業(yè)傳導(dǎo)。走不出架構(gòu)師的架構(gòu)設(shè)計,沒有持久的維持能力;走不出 IT 部門的架構(gòu)設(shè)計,不會凝聚起整個企業(yè);走不出企業(yè)的架構(gòu)設(shè)計,就無法真正落地企業(yè)戰(zhàn)略。
支柱二:洞察能力
一、深入理解業(yè)務(wù)
洞察能力是個老話題,不過架構(gòu)領(lǐng)域本也沒多少新鮮事,任何架構(gòu)方法都需要深入實踐才能逐漸掌握要領(lǐng),架構(gòu)領(lǐng)域沒有快餐,不大可能“一夜頓悟”,也不要急著“PK”,更多的是需要反復(fù)去啃的“硬骨頭”。
做軟件設(shè)計,大家常說要對業(yè)務(wù)進行深入分析,要抓住需求本質(zhì),要有合適的抽象力度,這些說的其實都是洞察能力。洞察需要的是深入理解,而不僅僅是對需求的字面理解或者淺層的溝通。架構(gòu)領(lǐng)域一直不乏有對哲學(xué)方法論的應(yīng)用,比如本體論,筆者近期閱讀維特根斯坦的《邏輯哲學(xué)論》時也發(fā)現(xiàn),盡管難以深入理解大師的思想精髓,但是計算機領(lǐng)域?qū)γ嫦驅(qū)ο缶幊痰难芯颗c這本一次世界大戰(zhàn)期間寫就的哲學(xué)著作如出一轍。
加強洞察能力,一般都會認(rèn)為是要提升思維穿透能力,這當(dāng)然是必須的,但是從企業(yè)層面而言,也有相對容易操作的方式,就是加強深層次溝通。這首先需要企業(yè)逐步改變業(yè)務(wù)人員的和技術(shù)人員的比例,使技術(shù)人員能夠走到業(yè)務(wù)人員中間來,加強二者的融合。
所謂深層次溝通并不是兩個人要碰撞出哲學(xué)火花,如果兩個人之間只能具有一個聊聊需求的時間,就急著做產(chǎn)品上線了,那雙方之間的了解深度必然是有限的。技術(shù)人員如果能夠輪班走到業(yè)務(wù)人員中間提供實地支持,深入理解工作環(huán)境,實際感受業(yè)務(wù)壓力,理解的深度自然會增加。我們不需要指望技術(shù)人員變成哲學(xué)家來增加洞察力,只需要給予他們更多的觀察機會和思考時間。這并非“強人所難”,至少,國外的大銀行,如摩根大通、高盛、Capital One 等,已經(jīng)不乏這樣的操作了。
可能很多人會覺得這對中小企業(yè)不公平,不可操作,畢竟他們資源有限,但是,這也取決于你是否相信“未來的企業(yè)都是科技企業(yè)”,至少筆者相信,因為軟件將是未來最主要的生產(chǎn)方式。也許今天很多企業(yè)不用急著進行這個操作,但是,這不代表可以忽視這個問題,而越大的企業(yè)應(yīng)該越早動手,因為企業(yè)越大轉(zhuǎn)型越慢、周期越長、溝通模式越復(fù)雜,企業(yè)的全貌也越難以掌握。
二、努力推進標(biāo)準(zhǔn)化
如果軟件行業(yè)整體都具備了深入的洞察能力的話,那標(biāo)準(zhǔn)化就應(yīng)當(dāng)是件自然的事情,農(nóng)業(yè)和工業(yè)的發(fā)展都是這個歷程。農(nóng)業(yè)的耕種方法、選種和培育、肥料的制作,即便在今天看來極為簡陋的原始生產(chǎn)階段,為了提高農(nóng)業(yè)種植的成功率和產(chǎn)量,也是在進行著不懈的“標(biāo)準(zhǔn)化”努力。農(nóng)書早已有之,即便在著名的“焚書坑儒”中,也獲準(zhǔn)可以保留,可見古人對農(nóng)業(yè)技術(shù)的重視,更不用說在現(xiàn)代工業(yè)條件支持下的大規(guī)模農(nóng)業(yè)生產(chǎn)。與之相比,軟件行業(yè)真有那么特殊嗎?真的不會有標(biāo)準(zhǔn)化生產(chǎn)這個歷程嗎?
反思軟件行業(yè)目前的情況,也許只能說,洞察力依然不夠,至少沒有真正理解標(biāo)準(zhǔn)化對行業(yè)的意義,否則,一個已經(jīng)發(fā)展了 70 多年、精英輩出的行業(yè),不會在標(biāo)準(zhǔn)化資產(chǎn)、標(biāo)準(zhǔn)化生產(chǎn)方面如此“尷尬”,我們書寫了那么多的技術(shù)標(biāo)準(zhǔn),卻依然無法提供一套能夠有效復(fù)用的行業(yè)級軟件資產(chǎn),當(dāng)然,這種復(fù)用不是指搬過來就用,而是至少不用從頭做起。
開源提供了很好的支持未來大規(guī)模軟件生產(chǎn)的模式參考,而需要的是增加對標(biāo)準(zhǔn)化的管理的思考,這也許是未來開源的發(fā)展方向。
沒有標(biāo)準(zhǔn)化能力,軟件行業(yè)可能無法撐起未來對軟件生產(chǎn)的大規(guī)模需求。標(biāo)準(zhǔn)化是行業(yè)成熟的表現(xiàn),也是軟件行業(yè)對自身、對其他行業(yè)都具備深刻洞察力的體現(xiàn),更是設(shè)計師在設(shè)計時應(yīng)為之努力的方向。
支柱三:演進思維
一、唯快不破?
“快魚吃慢魚”幾乎成了當(dāng)今社會的集體“焦慮”, 企業(yè)由于競爭的壓力,對“立竿見影”的追求近乎“執(zhí)著”。筆者也是個二次元的愛好者,每每想到這個問題,自然會浮現(xiàn)出一部漫畫作品——《浪客劍心》,主人公緋村劍心的獨門絕技就是“拔刀”,一回合解決對手,拔刀的瞬間就致對手與死地。相信很多企業(yè)在搞軟件建設(shè)時也寄望于此,希望采用某個架構(gòu)、做成某個系統(tǒng)后,可以實現(xiàn)超級應(yīng)變能力。
然而漫畫作品中的主人公是在經(jīng)歷了地獄般的生死訓(xùn)練之后才具備如此能力,帶著一身的傷病,成了一臺需要精心保養(yǎng)否則很難“善終”的機器,用個通俗點兒的解釋就是職業(yè)壽命比較短。所以,“快”都是有代價、有基礎(chǔ)的,“快”是系統(tǒng)性訓(xùn)練的結(jié)果,不是哪個部門的“快”在支撐整個企業(yè)的“快”;“快”是整個企業(yè)持續(xù)演進出來的,而不是被外部因素突然賦予的。大家都不是漫威電影里的“超級英雄”,不是天賦異稟,也不是被蜘蛛咬一口就可以拯救世界。
不注重基礎(chǔ)的“快”,只能是“眼見他起高樓,眼見他樓塌了”。在業(yè)務(wù)領(lǐng)域里,我們不乏見到業(yè)務(wù)人員被逼急了而出現(xiàn)的業(yè)績造假、財務(wù)造假,而忽視軟件工程的底線要求,把技術(shù)人員催的太緊,也可能出現(xiàn)技術(shù)“造假”。也許筆者的說法不夠準(zhǔn)確,但是英國 TSB 銀行的案例也許可以當(dāng)成一個側(cè)寫吧。業(yè)績造假、財務(wù)造假對企業(yè)管理者而言還是可以搞清楚的問題,但是技術(shù)方面出的問題,相信大部分管理者可能搞不清楚。有興趣的讀者可以看看對計算機 BUG 的分類,像薛定諤類型、海森堡類型、分形類型等,這是連技術(shù)人員自己都搞不懂的 BUG 形態(tài)。
技術(shù)目標(biāo)的實現(xiàn)很難一蹴而就,也許不少傳統(tǒng)企業(yè)的管理者會問如今互聯(lián)網(wǎng)企業(yè)不是很具備“快”的樣子嗎?與傳統(tǒng)企業(yè)相比,他們是挺快,這是因為他們具有更好的技術(shù)管理能力和開發(fā)環(huán)境,有基礎(chǔ)設(shè)施支持人員能力的發(fā)揮,但是,不容忽視的是之前熱過的“996.ICU”這個話題。敏捷創(chuàng)始人可是說過,敏捷應(yīng)該是高效和不用加班的。這種透支技術(shù)人員身體,把軟件行業(yè)搞得像“血汗工廠”的做法,不應(yīng)該用對“理想”的追求一筆帶過。
傳統(tǒng)方法只要用的純熟、堅持對方法論的完善和演進,合適的條件下,一樣可以獲得“快”的效果。比如二神山的建設(shè)就是在瀑布模型和甘特圖的指導(dǎo)下實現(xiàn)“中國速度”的,感興趣的讀者可以找找二神山的工程師們公開分享的資料,看看他們對傳統(tǒng)方法的運用。
回到正題,架構(gòu)設(shè)計及其實現(xiàn)應(yīng)該注重的是演進思維,不可能“畢其功于一役”,再著急也無法忽視客觀規(guī)律。如同搞戰(zhàn)略設(shè)計,如果給設(shè)計人員的只有泡一碗方便面的時間,那交付的也只能是一碗戰(zhàn)略方便面。
二、演進方向
架構(gòu)設(shè)計要具備演進思維,演進思維除了意味著大目標(biāo)要分段實現(xiàn)外,也意味著對目標(biāo)該有一個整體認(rèn)知,這個認(rèn)知對企業(yè)軟件而言,就是要統(tǒng)一到企業(yè)的愿景和戰(zhàn)略上。本文筆者延續(xù)自己在《企業(yè)級業(yè)務(wù)架構(gòu)設(shè)計:方法論與實踐》一書中的觀點,將愿景定位于 20-30 年的長期方向,而將戰(zhàn)略定位于 3 年左右的“短期”方向。技術(shù)變化比較快,戰(zhàn)略周期長了不利于調(diào)整,但是太短也很難有明顯實施效果,尤其是對大型企業(yè)而言。
從長期愿景的角度看,數(shù)字化轉(zhuǎn)型是必然的,當(dāng)代的人碰巧處于時代切換的轉(zhuǎn)型陣痛期,作為經(jīng)歷“痛苦”的人,任何企業(yè)和個人都無法回避這個問題。筆者將其列為長期方向,是因為筆者所認(rèn)為的數(shù)字化與目前更為貼近信息化的各類主張不同,數(shù)字化不是一兩個系統(tǒng)或者某個架構(gòu)就可以快速解決的問題,而是整個社會的數(shù)字化,企業(yè)的數(shù)字化是社會數(shù)字化中的一環(huán),并且,不可能僅靠自身的數(shù)字化完成。
以數(shù)字化轉(zhuǎn)型為架構(gòu)設(shè)計思維演進的長期方向,在每個戰(zhàn)略周期內(nèi),密切跟蹤技術(shù)的發(fā)展,適時引入可能帶來業(yè)務(wù)模式變化的技術(shù),實現(xiàn)新技術(shù)與業(yè)務(wù)的融合,這種架構(gòu)駕馭能力才是未來企業(yè)競爭的關(guān)鍵。筆者對數(shù)字化轉(zhuǎn)型的詳細論述包含在即將面世的新書《銀行數(shù)字化轉(zhuǎn)型》中,本文不再過多著墨于此。
支柱四:開放思維
一、有中心而無權(quán)威
這個說法略有“不當(dāng)”,但筆者暫時沒有想到更形象的表述。實際工作中,架構(gòu)師在項目中是具有“權(quán)威”性的,這樣比較有利于項目的總體管理,大的項目可能會有很多架構(gòu)師,因為架構(gòu)師的分工也是很細的,因此,從效率上來講,也需要設(shè)立個“首架”。
“中心”會提高執(zhí)行效率,但是,架構(gòu)師必須具有開放性,保持謙虛,架構(gòu)師是“中心”,但不要總把“權(quán)威”看得太重,架構(gòu)是企業(yè)整體資產(chǎn),說的不客氣點兒,企業(yè)搞架構(gòu)也正是為了能夠擺脫對特定架構(gòu)師的“單點依賴”,使架構(gòu)工作能夠保持“業(yè)務(wù)連續(xù)性”。
架構(gòu)設(shè)計中要保持這種謙遜性,這樣才能讓更好的設(shè)計思路進入設(shè)計師的視野,進入設(shè)計方案。“海納百川,有容乃大”。所謂的技術(shù)權(quán)威,最好是自然形成的,而非來自于職權(quán)的任命;技術(shù)權(quán)威是用來“向我開炮”的,如果用來維護,很可能會產(chǎn)生適得其反的結(jié)果;技術(shù)權(quán)威最終代表的是問題能被更好地解決,而不是“唯馬首是瞻”。
架構(gòu)設(shè)計非常需要注重整體,盡可能考慮全景信息,這往往也意味者過于依賴“權(quán)威”架構(gòu)師其實是有風(fēng)險的,“智者千慮必有一失”,負擔(dān)太重也會造成核心架構(gòu)師“過載”。從這個角度講,架構(gòu)師團隊的開放協(xié)作,或者架構(gòu)師與項目團隊的開放協(xié)作是非常重要的,整體思維和開放思維之間相輔相成。
二、開放式架構(gòu)設(shè)計
關(guān)于開放銀行的討論去年和今年特別多,筆者也曾發(fā)布過相關(guān)文章,在筆者看來,與其稱之為開放銀行不如稱其為開放式架構(gòu)含義會更明確。企業(yè)之間在生態(tài)建設(shè)的“大旗”下,連接越來越緊密,而且從商業(yè)層面的連接逐漸下沉為技術(shù)層面的連接,API、SDK 等對接方式讓信息化程度較高的企業(yè)之間聯(lián)系更為密切。
隨著企業(yè)架構(gòu)理論和企業(yè)實踐能力的提升,企業(yè)內(nèi)部一體化程度會逐漸加強,并轉(zhuǎn)化為體現(xiàn)生態(tài)分工的跨企業(yè)系統(tǒng)協(xié)作,這要求架構(gòu)設(shè)計遵循開放的設(shè)計方向,以企業(yè)之間更好地對接為目標(biāo),實現(xiàn)跨企業(yè)的流程整合,這樣組成的“競合”關(guān)系更穩(wěn)定、更具競爭力。
面向開放式協(xié)作的架構(gòu)設(shè)計,要求企業(yè)有更好的、可讀性強、可公開的內(nèi)部架構(gòu),這樣才能有更好的協(xié)作前提,而今天這種充滿個性的架構(gòu)設(shè)計風(fēng)格,要逐漸向更加標(biāo)準(zhǔn)化、更容易溝通的方向發(fā)展。PPT 不是架構(gòu)師的發(fā)力點,對架構(gòu)的過度宣傳也許反而不利于架構(gòu)的健康發(fā)展,架構(gòu)風(fēng)格的過度自由也許會帶來溝通上的不自由。盡管今天架構(gòu)師們面對的企業(yè)環(huán)境、技術(shù)環(huán)境越來越復(fù)雜,但是,簡單依然是設(shè)計應(yīng)該持續(xù)追求的目標(biāo)。
本文總結(jié)的四大思維支柱相信各位讀者并不陌生,筆者只是將個人的一些理解融合進去。如果用“T”型人才或者“T”型思維類比的話,整體思維相當(dāng)于“T”字橫頭的“一”,洞察能力相當(dāng)于“∣”,演進思維相當(dāng)于小“T”逐步積累成大“T”,而開放思維相當(dāng)于多個“T”的連接,包括企業(yè)層面、架構(gòu)層面和架構(gòu)師層面的開放與連接。架構(gòu)說到底就是結(jié)構(gòu)和關(guān)系,架構(gòu)的四大思維支柱,談的也就是處理好結(jié)構(gòu)和關(guān)系的思考原則。文章終歸是一家之言,目的是拋磚引玉,希望有更多的人一起關(guān)注在當(dāng)前這個大家都認(rèn)定的“技術(shù)最好的時代”,我們應(yīng)該如何培育“架構(gòu)”這朵 IT 領(lǐng)域之花。
作者簡介:
付曉巖,《企業(yè)級業(yè)務(wù)架構(gòu)設(shè)計:方法論與實踐》圖書作者,騰訊云最具價值專家。原國有大行資深業(yè)務(wù)架構(gòu)師,負責(zé)業(yè)務(wù)架構(gòu)設(shè)計、項目管理,熱衷新技術(shù)探索與實踐,具有豐富的銀行業(yè)務(wù)經(jīng)驗和企業(yè)級項目業(yè)務(wù)架構(gòu)設(shè)計經(jīng)驗,曾主導(dǎo)客戶關(guān)系、金融市場、同業(yè)、資管、養(yǎng)老金等多個領(lǐng)域核心系統(tǒng)的業(yè)務(wù)架構(gòu)設(shè)計,現(xiàn)就職于建信金融科技有限責(zé)任公司。即將發(fā)行新書《銀行數(shù)字化轉(zhuǎn)型》,公眾號:曉談巖說。