我在一次和客户的CDO交流时,得以聆听到一个极有意思的观点。该CDO认为:“一家企业科技部门的领导,应尽量确保IT的科技生态不能共存超过三代的系统。如果系统的代龄超出三代,科技生态就会变得太复杂,遗留的债务太多,一旦需要转型,执行起来就会举步维艰。”
对此观点,我深表认同。
怎么定义科技生态的“代”?这似乎没有一个定论,更何况,不同技术的更新速率也不尽相同,难以统一。例如,金融企业的IT系统都经历过大型机、小型机和PC机集群时代,而服务器也经历了物理机、虚拟机到如今的容器时代。虽说现在主流的开发语言都可以划归为高级语言,语言版本的变更似乎也很难给出代系的划分,然而就Java来说,差不多可以把JDK1.4、JDK6、JDK8以及JDK11+划分到不同的代。
因此,我们先不必纠结科技生态的“代”该怎么划分,而是看这样的三代论是否值得大多数传统企业的CTO、CIO与CDO们深思。
1
为什么是三代?
大约灵感来自“富不过三代”的俗语?但我能想到的参考依据是Gartner提出的Pace-Layer应用战略模型,如下图所示:
它将企业应用分为三层,从下到上分别为:
既然企业应用有着不同的变化速率,技术形态与之对应,恰好形成三态:
这三种形态可以对应双态业务,即稳态业务和敏态业务,其中,稳态业务和敏态业务的重叠部分,就是位于中间态的液态:
由稳态业务和敏态业务组成的双态业务不妨用太极图体现:
北宋大儒理学宗师周敦颐认为:“无极而太极,太极动而生阳,动极而静,静而生阴,静极复动,一动一静,互为其根,分阴分阳。两仪立焉。”太极体现的正是动静与阴阳的转换。
稳态与敏态并非固定不变。稳态需要敏态升级,敏态到了一定时期也需要沉淀,变为稳态。稳态并不意味着陈旧与糟糕,相反,它可能意味着复用,是企业重要的资产。敏态并不意味着常新而易变,一旦发现它存在不变的部分,就需要转换为稳态。
动极而静,静极复动。
敏态走到极致,必然需要提炼其稳定的部分,否则敏态就会因为重复开发而增加成本;稳态走到极致,如果不向敏态迁移,就会僵化不变,腐化为技术债。因而,太极图对双态的呈现,完美地体现了稳态和敏态的周而复始。
2
一个客观依据是判断该技术的成熟度。
如何客观地评价成熟度呢?一个办法是参考Gartner每年发布的新兴技术成熟度曲线,如2022年的成熟度曲线:
成熟度曲线将一项技术的发展划分为多个阶段:
原则上,只有位于生产力成熟期的技术才属于液态,而创新萌芽期的技术则属于气态。
通过长期跟踪Gartner的新兴技术成长度曲线,随着时间的推移,自然可以描绘出各种技术的代龄形态。
划分代龄不能仅依据成熟度,因为一项成熟的技术不一定就是最适合该企业的技术,若有可能,可以参考其他科技公司对该技术做出的客观评估。ThoughtWorks每半年发布的技术雷达可以作为其中一个参考:
ThoughtWorks的技术雷达有四个圆环,由内向外分别为:
技术雷达的条目不是一成不变的,每期技术雷达都可能出现新的,也可能已有的条目不再适合,就会被移走。与技术代龄的三态相对应,映射关系大致如下:
企业在做技术选型时,如果选择了开源项目,也可以根据开源项目社区的活跃度,项目的Star数量等对成熟度做出判断。
3
借用技术雷达图的技术象限划分,再参考Gartner的成熟度曲线,可以为企业绘制出科技生态的代龄图。
属于固态代龄的阶段,称之为衰退期;属于液态代龄的阶段,称之为成熟期;属于气态代龄的阶段,称之为成长期。这三个阶段由左向右排列,衰退期的左侧属于死亡期,成长期的右侧属于萌芽期,原则上,企业应用需避免使用位于死亡期和萌芽期的技术。
科技生态的代龄图是动态变化的,它相当于为企业的科技领导或技术负责人提供了生态蓝图,每一次技术的代龄变动,都可能给出警示。
如果希望更加直观地了解到当前的应用系统是否违背了代龄要求,可以直接为企业的应用系统绘制代龄图。
图中使用圆形、三角形和菱形符号分别代表已建、在建和待建的应用系统。
图中的红色代表严重警示信号,包括如下情形:
图中的黄色代表警示信号,包括如下情形:
针对发出警示信号的企业应用,相关负责人需要制订策略,判断是否需要调整其科技生态;如果是严重警示信号,则属于技术债的内容,需要给出进行改造的强制策略。在估算改造成本后,需确定改造完成的最后期限。
该图也可以作为数字化转型的参考,如在选择数字化转型的试点应用时,可优先选择属于成长期的在建或待建应用系统。对于属于衰退期的已建应用系统,如果它属于稳态业务,也可以考虑保留现有的生态。