我在一次和客户的CDO交流时,得以聆听到一个极有意思的观点。该CDO认为:“一家企业科技部门的领导,应尽量确保IT的科技生态不能共存超过三代的系统。如果系统的代龄超出三代,科技生态就会变得太复杂,遗留的债务太多,一旦需要转型,执行起来就会举步维艰。”
对此观点,我深表认同。
怎么定义科技生态的“代”?这似乎没有一个定论,更何况,不同技术的更新速率也不尽相同,难以统一。例如,金融企业的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
针对发出警示信号的企业应用,相关负责人需要制订策略,判断是否需要调整其科技生态;如果是严重警示信号,则属于技术债的内容,需要给出进行改造的强制策略。在估算改造成本后,需确定改造完成的最后期限。
该图也可以作为数字化转型的参考,如在选择数字化转型的试点应用时,可优先选择属于成长期的在建或待建应用系统。对于属于衰退期的已建应用系统,如果它属于稳态业务,也可以考虑保留现有的生态。