IT科技生態的三代論
我在一次和客戶的CDO交流時,得以聆聽到一個極有意思的觀點。該CDO認為:“一家企業科技部門的領導,應盡量確保IT的科技生態不能共存超過三代的系統。如果系統的代齡超出三代,科技生態就會變得太復雜,遺留的債務太多,一旦需要轉型,執行起來就會舉步維艱?!?/p>
對此觀點,我深表認同。
怎么定義科技生態的“代”?這似乎沒有一個定論,更何況,不同技術的更新速率也不盡相同,難以統一。例如,金融企業的IT系統都經歷過大型機、小型機和PC機集群時代,而服務器也經歷了物理機、虛擬機到如今的容器時代。雖說現在主流的開發語言都可以劃歸為高級語言,語言版本的變更似乎也很難給出代系的劃分,然而就Java來說,差不多可以把JDK1.4、JDK6、JDK8以及JDK11+劃分到不同的代。
因此,我們先不必糾結科技生態的“代”該怎么劃分,而是看這樣的三代論是否值得大多數傳統企業的CTO、CIO與CDO們深思。
1.為什么是三代?
大約靈感來自“富不過三代”的俗語?但我能想到的參考依據是Gartner提出的Pace-Layer應用戰略模型,如下圖所示:
它將企業應用分為三層,從下到上分別為:
- 保持穩定的記錄型系統(Systems of Record)
- 高響應的差異型系統(Systems of Differentiation)
- 主動變化的創新型系統(Systems of Innovation)?
既然企業應用有著不同的變化速率,技術形態與之對應,恰好形成三態:
- 記錄型系統:由于變化緩慢,在構建之初選擇的技術形態或許是新的,但隨著時間推移,技術變得越來越落后,由于系統沒有什么變化,自然也沒有重構或重寫的必要,如此就變成了繼續支撐業務的祖父級系統,我將其稱之為“固態”。
- 差異型系統:開發周期相對較長,業務會持續演進,為確保系統具備一定的先進性,可能需要迭代更新,直至到某個階段,需要進行技術棧遷移;又或者保留一部分舊有的穩定功能,而針對新功能,采用更新一代的技術,我將這種新舊并存的狀態稱之為“液態”。
- 創新型系統:創新業務往往具備趨勢前瞻的性質,需要快速打造、快速試錯,它可能在未來成為企業的核心,但在創新階段,企業對其技術的選擇相對寬容,可以選擇當下最新的技術,我將這種靈活快速的狀態稱之為“氣態”。
這三種形態可以對應雙態業務,即穩態業務和敏態業務,其中,穩態業務和敏態業務的重疊部分,就是位于中間態的液態:
由穩態業務和敏態業務組成的雙態業務不妨用太極圖體現:
北宋大儒理學宗師周敦頤認為:“無極而太極,太極動而生陽,動極而靜,靜而生陰,靜極復動,一動一靜,互為其根,分陰分陽。兩儀立焉。”太極體現的正是動靜與陰陽的轉換。
穩態與敏態并非固定不變。穩態需要敏態升級,敏態到了一定時期也需要沉淀,變為穩態。穩態并不意味著陳舊與糟糕,相反,它可能意味著復用,是企業重要的資產。敏態并不意味著常新而易變,一旦發現它存在不變的部分,就需要轉換為穩態。
動極而靜,靜極復動。
敏態走到極致,必然需要提煉其穩定的部分,否則敏態就會因為重復開發而增加成本;穩態走到極致,如果不向敏態遷移,就會僵化不變,腐化為技術債。因而,太極圖對雙態的呈現,完美地體現了穩態和敏態的周而復始。
企業在確定科技生態時,要考慮到業務的雙態,而為不同形態的業務確定科技生態時,又該遵循什么樣的技術參考依據,以保證科技生態的代齡不超過三代呢?那就要在企業內部提供確定代齡的客觀依據。
一個客觀依據是判斷該技術的成熟度。如何客觀地評價成熟度呢?一個辦法是參考Gartner每年發布的新興技術成熟度曲線,如2022年的成熟度曲線:
成熟度曲線將一項技術的發展劃分為多個階段:
- 創新萌芽期(Innovation Trigger)
- 過熱期(Peak of Inflated Expectations)
- 幻滅低谷期(Trough of Disillusionment)
- 復蘇期(Slope of Enlightenment)
- 生產力成熟期(Plateau of Productivity)?
原則上,只有位于生產力成熟期的技術才屬于液態,而創新萌芽期的技術則屬于氣態。
通過長期跟蹤Gartner的新興技術成長度曲線,隨著時間的推移,自然可以描繪出各種技術的代齡形態。
劃分代齡不能僅依據成熟度,因為一項成熟的技術不一定就是最適合該企業的技術,若有可能,可以參考其他科技公司對該技術做出的客觀評估。ThoughtWorks每半年發布的技術雷達可以作為其中一個參考:
ThoughtWorks的技術雷達有四個圓環,由內向外分別為:
- 采納:采納環中的條目往往是已被證實的、成熟可用的技術
- 試驗:試驗環里的條目具備了ThoughtWorks生產環境經驗,但還未得到充分證明
- 評估:評估環里的內容是值得研究的,通常屬于相對前瞻的技術
- 暫緩:已被業界采納,但ThoughtWorks技術咨詢委員認為體驗并不好的技術
技術雷達的條目不是一成不變的,每期技術雷達都可能出現新的,也可能已有的條目不再適合,就會被移走。與技術代齡的三態相對應,映射關系大致如下:
- 固態:曾經屬于采納環,但因為技術相對陳舊而被移走的條目
- 液態:屬于采納環的技術,也包括一部分屬于暫緩環的技術
- 氣態:屬于試驗環和評估環
企業在做技術選型時,如果選擇了開源項目,也可以根據開源項目社區的活躍度,項目的Star數量等對成熟度做出判斷。
借用技術雷達圖的技術象限劃分,再參考Gartner的成熟度曲線,可以為企業繪制出科技生態的代齡圖。
屬于固態代齡的階段,稱之為衰退期;屬于液態代齡的階段,稱之為成熟期;屬于氣態代齡的階段,稱之為成長期。這三個階段由左向右排列,衰退期的左側屬于死亡期,成長期的右側屬于萌芽期,原則上,企業應用需避免使用位于死亡期和萌芽期的技術。
科技生態的代齡圖是動態變化的,它相當于為企業的科技領導或技術負責人提供了生態藍圖,每一次技術的代齡變動,都可能給出警示。
如果希望更加直觀地了解到當前的應用系統是否違背了代齡要求,可以直接為企業的應用系統繪制代齡圖。
圖中使用圓形、三角形和菱形符號分別代表已建、在建和待建的應用系統。
圖中的紅色代表嚴重警示信號,包括如下情形:
- 位于死亡期的所有類型的企業應用,如編號11
- 位于衰退期的待建應用,如編號19
圖中的黃色代表警示信號,包括如下情形:
- 位于衰退期并接近死亡期的已建應用,如編號16
- 位于衰退期的在建應用,如編號20
- 位于成熟期的待建應用,如編號18
- 位于萌芽期的所有類型的企業應用,如編號14和17
針對發出警示信號的企業應用,相關負責人需要制訂策略,判斷是否需要調整其科技生態;如果是嚴重警示信號,則屬于技術債的內容,需要給出進行改造的強制策略。在估算改造成本后,需確定改造完成的最后期限。
該圖也可以作為數字化轉型的參考,如在選擇數字化轉型的試點應用時,可優先選擇屬于成長期的在建或待建應用系統。對于屬于衰退期的已建應用系統,如果它屬于穩態業務,也可以考慮保留現有的生態。