一、引言
2020年是难忘的一年,这一年被业界称之为“低代码元年”。但它还有另一个更加深刻的关键词:“新冠”,这无疑是众望所归之选。
回想2020年疫情的爆发迅猛如龙卷风,短短数月间便切断了全球范围内无数人与人之间的物理联系。然而,值得庆幸的是,当时我们已然全面步入互联网时代:即使 N95 口罩再厚,也难以阻挡信息比特流的顺畅流通(宅男们依然能在 B 站享受快乐);哪怕居家隔离再久,企微/钉钉消息依旧能准时送达(社畜们的工作依旧忙碌)。
阿里云的逍遥子在 9 月份的云栖大会上提出:“新技术所代表的新生产力,必将成为我们全速战胜疫情、开创未来的关键动力。”
那么,在结束疫情两年后的2025年,当下究竟还有何种技术能够真正释放 IT 生产力,加速社会的数字化转型,助力世界重回正轨?我的答案依旧是:低代码(Low-Code)。
低代码基于经典的可视化和模型驱动理念,融合了最新的云原生与多端体验技术,能够在适宜的业务场景中实现显著的提效降本,为专业开发者带来一种全新的高生产力开发范式(Paradigm Shift)。同时,低代码还能使不懂代码的业务人员成为所谓的平民开发者(Citizen Developer),填补日益扩大的专业人才缺口,并推动业务与技术深度协作,形成终极敏捷形态(BizDevOps)。
本文旨在深入剖析低代码的背景知识,涵盖其定义与意义、相关概念、行业发展等,助力大家全方位了解这一新兴领域。
二、低代码的内涵
“Low-Code” 这一概念,对于初次接触的人而言,或许会引发诸多困惑: “Code” 代表代码,自是明了,但 “Low” 究竟何意?莫非是老板觉得我近期赶工所写的代码质量欠佳,显得 “Low”?又或者是指 “Low-level programming” 中的 “Low”,老板终于意识到让我这类编程奇才成天编写 Java 业务代码实属浪费,要让我去闭关研发一个高性能 C 语言网络库?显然这些猜测都不成立,那么它到底是什么意思呢?作为一名更愿意向 Google 寻求答案而非请教老板的程序员,我迅速展开了搜索。不出所料,第一条搜索结果便是充满自由气息、需翻墙才能访问的 Wikipedia 条目:Low-code development platform。
(一)Wikipedia 定义解析
从 Wikipedia 的定义中,我们可以提炼出以下关键信息:
低代码开发平台(LCDP)本质上是一种软件,它为开发者提供了一个用于创建应用软件的开发环境。对于程序员来说,低代码开发平台的性质与 IDEA、VS 等代码 IDE(集成开发环境)极为相似,都是服务于开发者的生产力工具。
与传统代码 IDE 不同的是,低代码开发平台提供的是更为高维且易用的可视化 IDE。在大多数情况下,开发者无需采用传统的手写代码方式进行编程,而是可以通过图形化拖拽、参数配置等更为高效的方式完成开发任务。
(二)Forrester 定义阐释
顺着 Wikipedia 的描述,我们还能发现 “Low-Code” 一词早在 2014 年便由 Forrester 提出,其对低代码开发平台的始祖级定义如下:
相较于 Wikipedia 的版本,这一定义更侧重于阐明低代码所带来的核心价值:
低代码开发平台能够实现业务应用的快速交付。这不仅意味着像传统开发平台一样具备开发应用的能力,更关键的是,低代码开发平台的重点在于开发应用的速度更快。而且,这种速度的提升是颠覆性的:根据 Forrester 在 2016 年的调研,大部分公司反馈低代码平台帮助他们将开发效率提升了 5 - 10 倍。我们有理由相信,随着低代码技术、产品和行业的不断成熟,这一提升倍数还将继续攀升。
低代码开发平台能够降低业务应用的开发成本。一方面,低代码开发在软件全生命周期流程上的投入都更低(代码编写量更少、环境设置和部署成本也更简单);另一方面,低代码开发显著降低了开发人员的使用门槛,非专业开发者经过简单的 IT 基础培训就能迅速上岗,既能充分调动和利用企业现有的各方面人力资源,也能大幅减少对昂贵专业开发者资源的依赖。
(三)低代码核心能力剖析
基于上述定义和分析,我们可以总结出低代码开发平台的以下三条核心能力:
- 全栈可视化编程:可视化包含两层含义,一是编辑时支持的点选、拖拽和配置操作,二是编辑完成后所见即所得(WYSIWYG)的预览效果。传统代码 IDE 也支持部分可视化能力(如早年 Visual Studio 的 MFC/WPF),但低代码更强调的是全栈、端到端的可视化编程,覆盖一个完整应用开发所涉及的各个技术层面(界面 / 数据 / 逻辑)。
- 全生命周期管理:作为一站式的应用开发平台,低代码支持应用的完整生命周期管理,即从设计阶段开始(有些平台还支持更前置的项目与需求管理),历经开发、构建、测试和部署,一直到上线后的各种运维(例如监控报警、应用上下线)和运营(例如数据报表、用户反馈)。
- 低代码扩展能力:在使用低代码开发时,大部分情况下仍离不开代码,因此平台必须能够支持在必要时通过少量代码对应用各层次进行灵活扩展,比如添加自定义组件、修改主题 CSS 样式、定制逻辑流程动作等。一些可能的需求场景包括:UI 样式定制、遗留代码复用、专用的加密算法、非标系统集成。
(四)低代码的真正含义
回到最初那个直击心灵的小白问题:Low-Code 中的 “Low”,到底是什么意思?答案已然明了:它既不是指抽象程度很低(相反,低代码开发方式的抽象程度比传统编程语言高一个层次),也不是指代码很 “low”(同样相反,低代码所生成的代码通常经过精心维护和反复测试,整体质量优于大部分手写代码),而是单纯的 “少写代码” —— 只在少数必要的情况下才手写代码,其余大部分时间都能借助可视化等非代码方式解决。
进一步深入来看,低代码的意义远不止少写代码:代码写得少,bug 自然也越少(正所谓 “少做少错”),因此开发环节的两大支柱性工作 “赶需求” 和 “修 bug” 都相应减少;需要测试的代码少了,测试用例也可以相应减少不少;除了开发阶段以外,平台还涵盖了后续的应用构建、部署和管理,使得运维操作也更为简化(Low-Code → Low-Ops)。
然而,少并非最终目的:如果单纯追求少的效果,通过砍需求、减人力、降低质量要求也能达到。低代码背后的哲学,是少即是多(Less is More),或者更准确地说是多快好省(Do More with Less) —— 能力更多、上线更快、质量更好,成本还更省,深刻践行了 “既要,又要,还要” 的价值观精髓。
(五)平台的职责与挑战
上文阐述了低代码为开发者提供的能力与吸引力,那么作为服务的提供方与应用的承载者,低代码开发平台自身应承担怎样的职责,又会面临多大的挑战呢?是否一定要像阿里云所主张的那样,“把复杂留给自己,把简单留给别人”?尽管这句话听起来颇有道理,但不知大家是否想过,为何我们非要执着于复杂,给自己找麻烦?难道是为了凸显 KPI 价值,还是觉得家里的饭菜不如公司的夜宵香?
经过一番冥思苦想,我从热力学第一定律中找到了答案:开发一个应用的总复杂度是恒定的,只能转移而无法凭空消失。若想让开发者承担更少的工作,尽情享受简单的乐趣,那么平台方就必须承担更多,默默承受尽可能多的复杂度。这就好比一个肌肉发达的杂技男演员,稳稳地托举着在高处旋转与跳跃的女搭档;上面的人显得越轻盈、毫不费力,下面的人就得越稳重、越用力。当然,并非说上面的女演员就很轻松,只是他们各自的分工不同,所承担的复杂度也各异。
根据《人月神话》作者 Fred Brooks 的划分,软件开发的复杂度可分为本质复杂度(Essential complexity)和偶然复杂度(Accidental complexity)。前者是解决问题时固有的最小复杂度,与你使用的工具、经验是否丰富、架构是否良好等因素无关;而后者则是除此之外在实际开发过程中引入的复杂度。通常来说,本质复杂度与业务要解决的特定问题域密切相关,因此我将其称为更好理解的 “业务复杂度”;这部分复杂度并非任何开发方法或工具能够解决的,包括低代码。而偶然复杂度一般与开发阶段的技术细节紧密相关,因此我相应地将其称为 “技术复杂度”;而这一部分复杂度,恰好是低代码所擅长且适合解决的。
为开发者尽可能屏蔽底层技术细节、减少不必要的技术复杂度,并支撑其更好地应对业务复杂度(满足灵活通用的业务场景需求),这是低代码开发平台应尽的核心职责。
在履行上述职责的同时,低代码开发平台作为一个面向开发者的产品,还需致力于为开发者提供简单直观的极致开发体验。这背后不仅需要付出巨大的工作量,还得在 “强大” 与 “易用” 这两个难以兼顾的矛盾点之间,努力找到一个符合自身产品定位与目标客户需求的平衡点 —— 这或许是设计一个通用低代码开发平台所面临的最大挑战。
三、低代码相关概念对比
(一)纯代码(Pro-Code / Custom-Code)
“纯代码” 可能是我杜撰的一个词汇,更常见的说法是专业代码(Pro-Code)或定制代码(Custom-Code);但意思都相同,即传统的以代码为中心(Code-Centric)的开发模式。我选择用 “纯代码”,是因为如果用 “专业代码” 会给人一种低代码不专业的错觉,而 “定制代码” 又容易让人误解成低代码无法支持定制的自定义代码。
当然,更准确的称谓我认为是 “高代码”(与低代码恰好对应,只是名字不太悦耳,被我舍弃了...),因为即使使用传统的代码 IDE,有些开发工作也支持(甚至更适合)以非代码方式完成,例如:iOS 端开发时使用的 SwiftUI 界面设计器、服务端开发数据库应用时使用的 PowerDesigner 建模工具。不过在传统开发模式下,这部分可视化工作只是起到辅助作用,最终通常会生成开发者可以直接修改的代码;开发者依然是以代码为中心来开展主要工作。
低代码与纯代码之间的关系,其实与视频和文章之间的关系颇为相似:
低代码就像是现代的 “视频”,大部分内容由直观易懂、表达能力强的图片组成,因此更容易被大众所接受。但与此同时,视频并非死板地只能有图片,完全可以添加少量文字(如字幕、标注)来弥补图片表达不够精确的问题。
纯代码则更像是传统的 “文章”,虽然长期以来一直是信息传播的主要媒介,但自视频技术诞生以及相应软硬件基础设施普及以来,便逐渐开始被抢去风头。如今,视频已成为大部分人获取信息的主要渠道(从电视电影到 B 站抖音),而经常读书读文章的人却越来越少。但不可否认的是,文章依然有其存在的意义和受众(不然我也不会费力敲这么多字),即使 “市场份额” 不断被挤压,它也永远会有立足之地。
如果按照上述类比关系推断,低代码未来或许会像视频一样,超越纯代码成为主流开发模式。Gartner 的预测也持相同观点:截止到 2024 年,全球已有超 65% 的应用程序是通过低代码的方式完成的,同时 75% 的大型企业使用了至少四种低代码开发工具进行应用开发。
然而,正如视频永远无法完全取代文章一样,低代码也永远无法彻底取代纯代码开发方式。未来,低代码和纯代码将以互补的形态长期共存,在各自适合的业务场景中发挥独特价值。在后续的 “低代码业务场景” 章节中,将详细列出现阶段更适合采用低代码模式开发的场景。
(二)零代码(Zero-Code / No-Code)
从分类的完备性角度出发,既然有 “纯代码”,自然也应有完全相反的 “零代码”(也称为 “无代码”)。零代码是指完全不需要写代码的应用开发平台,但这并不意味着零代码就比低代码更高级和先进,它只是做出了一个更极端的选择:彻底拥抱简单的图形可视化,完全摒弃复杂的文本代码。其背后的考量是,零代码开发平台期望能尽可能降低应用开发门槛,让人人都能成为开发者(注意:开发 ≠ 写代码),包括完全不懂代码的业务分析师、用户运营人员,甚至是产品经理(不懂装懂不算懂)。
即使是专业开发者,在技术分工日益精细的当下(前端 / 后端 / 算法 / SRE / 数据分析等),也很难找到一个能够独立开发和维护整套复杂应用的全栈工程师。但零代码有望改变这一现状:无论是对 Java 和 JavaScript 都分不清的技术小白,还是精通深度学习却无暇学习 Web 开发的算法专家,都可以通过零代码实现自己的技术梦想或全栈愿景。“改变世界的 idea 已有,就差一个程序员了”,这句玩笑话或许真的能成为现实;哦不,甚至都无需程序员,有 idea 的人自己就能动手开发。
当然,任何选择都需要付出代价,零代码也不例外。完全抛弃代码的代价是平台能力与灵活性受限:
一方面,可视化编辑器的表达能力远不及图灵完备的通用编程语言,不引入代码根本无法实现灵活的定制与扩展(当然,理论上也可以像 Scratch/Blockly 那样的图形编程语言,但这不过是换一种形式在手写代码罢了)。
另一方面,由于目标受众是非专业开发人员,平台所支持的操作会更趋于 “傻瓜化”(例如页面只支持大块业务组件的简单堆叠,不支持细粒度原子组件和灵活的 CSS 布局定义),同时也只会呈现相对 “亲民化” 的模型和概念(例如使用 “表格” 表示数据,而不是 “数据库”),无法支撑强大专业的底层开发原语和编程理念。
尽管零代码与狭义上的低代码存在上述明显差异,但从广义上来说,零代码可以被视为低代码的一个子集。Gartner 在其相关调研报告中,便是将 “No Code” 归纳在范围更广的低代码应用平台 “LCAP”(Low-Code Application Platform)之中。而当前市面上许多通用的低代码开发平台,也都兼具一定程度的零代码能力;比如低代码领域的领头羊 Mendix,既提供了简单易用的零代码 Web IDE - Mendix Studio,也包括一个功能更强大的低代码桌面 IDE - Mendix Studio Pro。
(三)HpaPaaS(高生产力应用 PaaS)
上文提到,“Low-Code” 一词是 Forrester 的 “杰作”。作为同样是国际知名调研机构(也可称得上是 “造词小能手”)的 Gartner,显然不愿轻易在这场可能决定低代码领域江湖地位的新概念作词大赛中认输,于是也在 2017 年创造了 “HpaPaaS”(High-productivity application Platform as a Service)这个听起来更为高大上的缩写词。
按照 Gartner 的定义,HpaPaaS 是一种支持声明式、模型驱动设计和一键部署的平台,具备云上的快速应用开发(RAD)、部署和运行特性;这与低代码的定义极为相似。然而,事实证明,名字起得过于专业并不一定是好事,“HpaPaaS” 最终还是败给了起源更早、更接地气也更顺口的 “Low-Code”:从 2019 年开始,Gartner 在其相关调研报告中也开始全面采用 “Low-Code” 一词(如 LCAP),亲手为 “HpaPaaS” 打上了 @deprecated 标记。
值得一提的是,“HpaPaaS” 这个词并非凭空而来,而是传承自 Gartner 之前提出的 “aPaaS”,它们之间的关系是:HpaPaaS 只是 aPaaS 的一个子类;除了 HpaPaaS 这种通过低代码实现的高生产力应用开发平台以外,aPaaS 还包括面向纯代码的传统应用开发平台(High-control aPaaS,即可控度更高的纯代码开发方式)。
再八卦一下,“aPaaS” 这个词也并非无中生有,而是与云计算的兴起有着深厚渊源。相信各位熟悉云计算的人都已猜到,aPaaS 与 IaaS/PaaS/SaaS 这些云计算远古概念一脉相承:aPaaS 介于 PaaS 和 SaaS 之间,相较于 PaaS 提供的服务更偏向应用,但又不像 SaaS 那样直接提供现成的软件服务。
四、低代码的必要性
低代码是什么或许并不那么重要,毕竟在这个信息爆炸的时代,新奇而短命的事物层出不穷。大多数所谓的新技术都只是昙花一现:出现了,被看到了;大部分人只是 “哦” 了一声,已阅但表示不感兴趣;小部分人惊叹于其奇思妙想,激动地点了个赞,然后回头继续使用原来的东西。真正决定新技术能否转化为新生产力的关键,并非技术本身有多么优秀和华丽,而是它是否真正被需要,即:为什么需要低代码?如果用不同的主语填充上述问题(冷知识:这叫做 “延迟主语初始化”),可以更全面地审视这个问题:
(一)为什么市场需要低代码?
在这个连大爷大妈都满口 “互联网 +” 和 “数字化转型” 的时代,企业越来越依赖应用(App)来优化企业内部的信息流转、强化与客户之间的触点连接。然而,尚处于发展初期的 IT 信息时代,也正面临着与我国社会主义初级阶段类似的供需关系矛盾:落后的软件开发生产力难以满足人民日益增长的业务需求。
Gartner 预测,到 2021 年应用开发需求的市场增长将至少超过企业 IT 交付能力的 5 倍。面对如此巨大的 IT 供需缺口,如果没有一种革命性的 “新生产力” 体系,很难想象仅凭现有传统技术体系的发展延续就能彻底解决问题。而低代码技术正是带着这样的使命降临,期望通过以下几个方面彻底革新应用开发生产力,拯救几乎陷入困境的 IT 世界:
1. 提效降本与质量保障
尽管软件行业一直在高速发展,新的语言、框架和工具不断涌现,但作为从业者,我们不得不承认:软件开发仍处于手工作坊阶段,效率低下、人力成本高昂、质量难以把控。项目延期交付已成为行业常态,而瓶颈几乎总是开发人员(对于机器能解决的问题都不是问题);优秀的开发人才永远是稀缺资源,且价格不菲;软件质量缺陷始终无法得到有效收敛,线上故障频发,导致资损不断。
相比之下,传统制造业经过几百年工业革命的发展,大部分早已摆脱了对 “人” 的强依赖:从原料输入到制品输出,中间依靠各种精密仪器和自动化流水线的稳定支撑,真正实现了生产的标准化和规模化。虽然信息化号称是人类的第三次工业革命,但以软件行业目前的状况来看,远远还未达到成熟的 “工业化” 阶段。
因此,亲爱的程序员朋友们,当你们与前端联调接口一上午,又与产品争论需求一下午,再与自己的 bug 抗争一整晚,好不容易进入梦乡又被一连串报警短信吵醒时,是否曾抬头对着星空憧憬过:“I have a dream... that one day,软件开发也能像工业制品一样,实现批量流水化生产,稳定高效且无烦恼。” 事到如今,不管你是否意识到,这个憧憬正在逐步变为现实。
是的,低代码正在将应用软件开发过程工业化:每个低代码开发平台都宛如一个技术密集型的应用工厂,所有项目相关人员都在同一条产线内紧密协作。开发主力不再是熟知 for 循环一百种写法的技术 Geek,而是一群怀揣想法、业务 sense 十足的应用 Maker。借助应用工厂中各种成熟的基础设施、现成的标准零件、自动化的装配流水线,开发者只需专注于最核心的业务价值即可。即使遇到非标需求,也可以随时自己动手,用最灵活的手工定制(代码)方式来解决各种边角问题。
2. 扩大应用开发劳动力
通过让大部分开发工作仅通过简单的拖拽与配置即可完成,低代码(包括零代码)显著降低了使用者门槛,使企业能够充分利用前文提到的平民开发者资源。在部分纯零代码需求场景下,低代码还能让业务人员实现自助式(self-service)应用交付,既解决了传统 IT 交付模式下的任务堆积(backlog)问题,避免稀缺的专业开发资源被大量简单、重复性的应用开发需求所侵占,也能让业务人员真正按照自己的想法去实现应用,摆脱交由他人开发时不可避免的束缚。
至此,应用开发能力不再仅仅是少数专业开发者的专利和特权,而且今后所需的技能门槛与拥有成本也将越来越低,真正实现了所谓的 “技术民主化”(democratization of technology)。
3. 加强开发过程的沟通协作
多方调查结果显示,软件项目失败的最主要原因之一就是缺乏沟通(poor communication)。在传统开发模式下,业务、产品、设计、开发、测试与运维人员各司其职,且各有一套领域内的工具和语言,长期以来很容易形成一个个 “竖井”(silos),使得跨职能的沟通变得困难且低效。这也是为什么当前热门的敏捷开发和 DevOps 都在强调沟通(前者是协同 Biz 与 Dev,而后者是协同 Dev 和 Ops),而经典的 DDD 领域驱动设计也主张通过 “统一语言” 来减少业务与技术人员之间的沟通不一致。
有了低代码之后,这一状况将得到根本性改善:上述各角色都可以在同一个低代码开发平台上紧密协作(甚至可以是同一个人),这种全新的协作模式不仅打破了职能竖井,还能通过统一的可视化语言和单一的应用表示(页面 / 数据 / 逻辑),轻松对齐项目各方对应用形态和项目进度的理解,实现更终极的敏捷开发模式,以及在传统 DevOps 基础之上更进一步的 BizDevOps[2]。
4. 统一开发平台下的聚合效应
低代码尝试将所有与应用开发相关的活动都汇聚到同一个平台(one platform)上,从而产生多方面的聚合效应与规模收益:
- 人员聚合:除了上一点提到的各职能角色紧密协作以外,人员聚合到统一的低代码开发平台进行作业后,还能促进整个项目流程的标准化、规范化和统一化。
- 应用聚合:一方面,新应用的架构设计、资产复用、相互调用变得更为容易;另一方面,各应用的数据天然互通,同时平台外数据也能通过集成能力进行打通,彻底消除企业的数据孤岛问题。
- 生态聚合:当低代码开发平台聚合了足够多的开发者和应用后,将形成一个巨大的、连接一切、充满无限想象力的生态体系,充分释放低代码的价值。
(二)为什么这个时代才需要低代码?
如果你对市面上各种低代码产品有所了解,不难发现其实这个领域的许多玩家在低代码概念诞生之前就已经存在了,例如:低代码领域的另一个巨头 OutSystems,早在 2001 年就已经创立;而去年也被 Forrester 评为低代码行业 leader 之一的 FileMaker,更是诞生于遥远的 1985 年(正好 35 岁,似乎在疯狂暗示什么)。那么,如果低代码像前面说的那么好,为什么以前没有火起来呢?从技术和业务两个角度来看,可以归纳为以下原因:
1. 技术成熟度不足
低代码底层的各项核心技术(可视化、模型驱动、RAD、BPMS...)都有着漫长的发展历史,看上去似乎只是新瓶装旧酒。然而理智的人都明白,任何技术都会遵循所谓的 “技术成熟度曲线”(The Hype Cycle),不可能刚一诞生就跳过发育直接大放异彩,被大规模采纳和投入生产。以模型驱动技术为例,虽然十几年前就已经有体系化的理论研究(例如 MDA)和配套工具(例如 EMF),但在当时的技术背景下,由于能力不完备、过于理想化、技术门槛高等原因,一直未能在工业界走向主流。
而如今这个时代,支撑低代码的那些 “老” 技术都经过了长时间的发展酝酿与市场检验,而另一些完美互补的 “新” 技术(例如云原生、响应式 Web)也在飞速发展和走向成熟,是时候通过 “低代码” 这个新酒瓶重新包装上市,为亟需新生产力的传统 IT 市场带来一场真香之旅了。
2. 业务收益不明显
即使十几年前的低代码技术已经足够成熟,也一定不会在当年的应用开发市场上产生现在这样的影响力。为什么?因为技术都是为业务服务的,而当时的应用开发业务需求远比现在简单:没有如今的多渠道(Multi-channel)、多样化体验(Multi-experience)和各种集成与定制需求,也不会奢求如今已成为企业级应用标配的弹性、分布式和高可用,更缺乏快速变化的 IT 业务场景来推动持续集成与快速交付。
虽然低代码可以完美解决上述所有问题(例如多端应用生成、云原生架构、API 集成能力),但放在当年的市场和业务背景下,加上前面所说的技术不成熟度,整体的投入产出比会很低,不足以让企业大面积采纳低代码解决方案。
而如今这个时代,企业已经被新技术带来的能力和收益 “惯坏了”,动不动就是:我想做一个送菜应用。用户端?安卓、iOS、H5、小程序都来一套。运营端?一般都在电脑上看,但记得手机上也得适配啊。服务端?上云,必须的。哦,我听技术合伙人说现在流行多云架构,也给我整一套哈。运维还要钱?啥是运维?应用有了不就能用了嘛,运维还要花我钱?你当投资者给我的钱是大风刮来的啊!
如果采用传统的开发模式,这么全套下来的工时与报价,可能早就吓跑了这群跟产品经理一样天真可爱的人;但现代化的低代码技术,可以圆了上面这位创业者的卖菜梦,用白菜一般的价格,实现白粉一样的价值。当年的程维如果能用上现在的低代码,第一版的滴滴 App 也就不至于被外包做得乌烟瘴气直接报废了(至少能多扛一阵子...)。
(三)为什么专业开发者也需要低代码?
虽然零代码确实是为非专业开发者设计的,但其所能支撑的业务场景确实有限,无法真正革新传统开发模式,替代那些仍需专业开发者参与的复杂业务场景。而狭义上的低代码却有潜力做到这一点,因为它天生就是为专业开发者量身定制的。Gartner 最近的一项调研报告显示,“66% 的低代码开发平台用户都是企业 IT 部门的专业开发者”。这充分说明了,专业开发者比平民开发者更需要低代码。
屏幕前的程序员朋友们可能会发问:“低代码都不怎么写代码了,怎么能算是为我们程序员服务呢?” 虽然程序员讨厌重复自己,但重要的事情还是得多说一遍:开发 ≠ 写代码。1 万年前蹲在洞穴里的原始人,用小石子画远古图腾;100 年前坐在书桌前的徐志摩,用钢笔给林徽因写情书;而今天趴在屏幕前的很多人,相信都已经开始用上手写板或 iPad 涂涂写写了。千百年来,人类使用的工具一直在演进,但所从事活动的本质并没有多大改变。无论是用小石子还是小鼠标,写作绘画的本质都是创造与表达,最终作品的好坏并不取决于当时你手中拿着什么;同样地,应用开发的本质是想法和逻辑,最终价值的高低也不取决于你实现时是用的纯代码还是低代码。
与纯代码相比,低代码极有可能成为更好的下一代生产力工具:
1. 减少不必要的工作量
可视化拖拽与参数配置的极简开发模式,结合模型驱动的代码自动生成机制,可以消灭绝大部分繁琐和重复的 boilerplate 代码;一站式的部署和运维管理平台,无需自己搭建 CI/CD 流水线、申请环境资源、配置监控报警;一次搭建同时生成、构建和发布多端应用,免去人工同步维护多个功能重复的端应用;开箱即用的组件库、模板库、主题库、连接器等,让最大化软件复用成为可能。总而言之,低代码能够让专业开发者更专注于创新性、有价值、有区分度的工作,而不是把宝贵开发时间都耗费在上述那些不必要的非业务核心工作上。
2. 强大的平台能力支撑
虽然前面提到的技术支撑性工作并不直接产生业务价值,但却会直接影响业务的性能、成本、稳定性、安全性、可持续发展能力等。有远见的企业,绝不允许牺牲这些重要指标,来换取短暂的业务加速。低代码开发平台深知这一点,因此在简化和屏蔽底层技术细节的同时,也会尽可能把自己所覆盖的部分做到最好(至少能和纯代码开发方式一样好),包括但不限于:
现代化的技术架构和实现:现代化的低代码开发平台,在支撑用户应用时所选择的技术架构与实现方案,也是现代化且符合业界最佳实践的。例如,前端基于主流的 HTML5/CSS3 标准和 React 框架,后端基于成熟的 Java 语言、SpringBoot 框架和 MySQL 数据库,部署环境基于云原生的 Docker 镜像、CI/CD 流水线、K8s 集群和 Service Mesh 技术。
零成本的技术升级和维护:低代码的高维抽象开发方式,让应用的核心业务逻辑与底层技术细节彻底解耦。开发者在大部分情况下都不需要关心底层技术选型,同时也无需亲自跟进这些技术的版本升级与漏洞修复,免费享受与时俱进的技术红利和应用安全性提升。即便遇到某些底层技术或工具需要进行彻底更换(比如不再维护的开源项目),开发者也完全不必感知;技术迁移再费劲再难搞,平台自己努力就行,对开发者来说只要服务一直在线,岁月就依然静好;事后可能还会惊喜地发现,应用访问突然就变得更快了,仿佛冥冥中自有天助,感激上苍和低代码。
一体化生态能力复用:复用(Reuse)是提升软件开发效率和工程质量的最有效途径。在传统的代码开发模式下,开发者可以通过提取公共类 / 函数、引用共享库、调用外部 API 服务、沉淀代码片段和模板等方式实现复用。在低代码的世界里,平台也可以提供对应的多层次多粒度复用手段,比如页面组件库、逻辑函数库、应用模板库等。
但更重要的是,低代码平台还可以充分发挥其一体化的生态优势,提供强大易用的可复用能力(资产)的发现、集成与共享体系:以页面组件为例,你可以直接使用系统组件,也可以在平台自带的组件市场上搜索和引用更合适的组件,还可以自己用代码开发一个自定义组件并发布到市场中。平台的生态体系越大,积累的可复用能力就越多,应用的开发成本也会越低。
相比之下,虽然传统代码世界整体生态更庞大和深厚,但由于各类技术不互通、缺乏统一平台与市场、代码集成成本高等原因,一直以来都没有形成有类似规模潜力的生态能力复用体系,导致重复造轮子和低水平重复建设的现象司空见惯,还美其名曰 “新基建”。
说到这里,另一批裹着冲锋衣头顶锃亮的程序员也忍不住了:“万一低代码真的发展起来了,是不是就不需要那么多程序员了啊?上有老下有小的,同是码农身,相煎何太急!” 低代码虽然是一场应用开发生产力革命,但并不会革掉程序员的饭碗。它去掉的只是难懂的编程语法、繁琐的技术细节和一切可自动化的重复性工作,并没有也无法去掉应用开发最核心的东西:严谨的业务逻辑、巧妙的算法设计、良好的工程风格等。对于真正的程序员,即使剥去他一层又一层的编程语言和工具熟练度技能外壳,最终剩下的仍然是一个有价值的硬核开发者。
当然,如果你坚持要用纯粹的写代码方式来改变世界,也不至于失业。要么,你可以选择那些低代码暂时不太适用的领域,比如底层系统驱动、3D 游戏引擎、火箭发射程序;或者,你也可以选择去写低代码中那一部分不可或缺的自定义代码扩展,为平民开发者提供高质量的积木。最后,你也完全可以选择为低代码平台本身的底层代码添砖加瓦。
(四)为什么 “我” 不需要低代码?
即使所有人都认同上述 “为什么要用低代码” 的理由,但仍不时会有试水者跳出来,给大家细数 “为什么我不需要低代码”。实践出真知没错,而且大部分质疑背后也都有一定道理;但在我看来,更多的可能是主观或无意识的偏见。这里我列举了一些对低代码的常见质疑和我个人的看法,期望能帮助大家看到一个更全面和客观的低代码。
质疑 1:低代码平台不好使
“试用过一些所谓的低代码开发平台,要么能力很弱,要么体验太差,只能开发点玩具应用。”
作为调研过国内外多款低代码产品的深度体验用户,我的观点是:不能以偏概全。低代码市场在国内正处于爆发初期,所以许多与低代码只沾一点边的产品也都在蹭热点;但它们并不能代表低代码目前的业界水平和发展方向。市面上真正成熟的企业级低代码开发平台,完全有能力以高效的开发方式满足大部分复杂场景的功能需求,以及企业级应用所需要的安全、性能、可伸缩等非功能需求,这一点在国外市场已得到充分验证(不然也不会这么被寄予厚望)。
当然,国内市场尚处于鱼龙混杂的混战阶段,遇到真龙的概率很低,但碰上金鱼鲤鱼甚至木头假鱼都在所难免。相信随着时间推移,真正有实力和口碑的产品都能脱颖而出,为大家展现低代码该有的样子。
质疑 2:低代码开发不可控
“平台上的各种可视化组件、逻辑动作和部署环境都是黑盒,如果内部出问题无法排查和解决。”
作为同样不搞清楚底层原理不舒服斯基的程序员,我更愿意相信:问题只是暂时的。虽然这确实是目前使用低代码平台时绕不开的一个痛点,但并不属于低代码技术本身的固有缺陷。计算机领域有一句至理名言:任何问题都可以通过增加一个间接的中间层来解决。低代码的思路亦是如此:与当年的操作系统和现在的云平台一样,都是想通过建立一个黑盒化的中间层抽象来降低开发者的工作量与心智负担。
当然,所有额外增加的中间层都不是完全免费的,低代码也不例外。作为一个尚未成熟稳定的新的中间层,低代码必然会出现各种让使用者束手无策的问题,就跟当年的操作系统内核 bug、如今的云主机 I/O hang 一样。但历史规律也告诉我们,所有伟大的技术最终都会走向成熟;只要低代码领域一直健康发展,问题总会越来越少,最终降到一个绝大部分人感知不到的范围内。过去萦绕在 Windows 用户心中挥之不去的 “蓝屏” 问题,对如今的新用户来说早已不知为何物;今天低代码开发者所遇到的种种 “蓝瘦” 问题,未来也终将成为被遗忘的历史(谁还没段黑历史呢)。
质疑 3:低代码应用难维护
“应用一旦复杂起来,各种复杂逻辑流穿插着自定义代码,看不懂也改不动,还不如全用代码呢。”
作为对软件可维护性深有感触的无脑级布道者(见《救火必备!问题排查与系统优化手册》),我不得不说:用低代码开发,也要讲基本法。一般来说,无论是使用低代码开发还是纯代码开发,造成应用可维护性低的根本原因往往不在于开发工具,而是开发者自身没有去遵循一些软件开发的普适原则,比如工程规范性、命名可读性、DRY/KISS/SOLID 原则等。
好的低代码平台绝不会阻碍开发者去改善应用的可维护性;恰恰相反,还会尽可能提供引导和帮助。以 Mendix 为例,除了支持基本的模型分析与重构(例如无用模型、对象重命名、子逻辑流提取)以外,甚至还提供了基于 ISO/IEC 25010 标准的应用质量监控(AQM)能力。另一方面,让应用变得难以维护的一个客观原因也是应用本身过于复杂,而低代码作为高度抽象和自动化的开发模式,在降低应用复杂度方面是专业的。
综合来看,低代码虽然不是能解决一切问题的银弹,但更不是会带来更多问题的炸弹:在提高应用可维护性方面的上限,一定比传统开发模式更高;但决定应用可维护性下限的,依然是开发者自己。
五、低代码行业发展
回应质疑的最好方式,就是做好自己,用实际的表现说话。对于一个行业而言,判断它当前的表现是否够好,或者未来是否有潜力做到更好,可以从以下这三个方面进行衡量:市场规模(蛋糕够不够大)、适用场景(是否可落地)、竞品状况(有没有被验证过)。
(一)市场规模
“Talk is cheap,show me the code money.” —— Linus Starcraft
文章可以忽悠,但市场不会说谎:
Forrester 在 2015 年曾预测过,低代码的市场将从 2015 年的 17 亿美元增长至 2020 年的 150 亿美元。
Marketsandmarkets 在 2021 年四月份的分析报告中预测,低代码的市场将从 2020 年的 130 亿美元(估算值,可以看出来与 Forrester 当年的预测是接近的)增长到 2025 年的 450 亿美元(年复合增长率:28.1%)。
PS Inteligence 在 2018 年的分析报告中预测,全球的低代码开发平台市场中,亚太地区将在今后五年(2019 - 2024 年)中保持最高的增长速度。
总结一下就是两点:
- 低代码的市场规模足够大,且一直都在高速增长。
- 作为亚太地区的经济大国与 IT 强国,中国的低代码市场将会迎来一个爆发期,未来几年内的增速都会超过全球平均水平。
(二)适用场景
理论上来说,低代码是完全对标传统纯代码的通用开发模式,应该有能力支撑所有可能的业务场景。但理论也只是理论,低代码一统江湖的梦想尚未照进现实,也不可能完全取代传统开发模式。前文中提到过,低代码与纯代码方式是互补关系,未来也将长期共存,各自在其所适合的业务场景中发挥优势。同时还需要指出的是,当前阶段的低代码技术、产品和市场都尚未完全成熟,因此部分本来可能很适合用低代码来开发的场景,目前也只能先用纯代码来替代。
Gartner 在 2019 年的低代码调研报告中,曾经绘制过一张用来阐述低代码适用场景的 “应用金字塔”:
- 应用级别划分:从下往上,分别为工作组级(Workgroup Class)、部门级(Departmental Class)、企业级(Enterprise Class)、可扩展需求极强的企业级(Extreme - Scale Enterprise Class)。容易看出,它主要的划分维度是应用所面向的用户基数(基数越大,可扩展需求也越高)。
- 任务关键性:从下往上,各级别应用的任务关键性(Mission Criticality)逐级递增。例如一个只在工作组内使用的后台管理应用,一般都不会涉及到影响整个企业的关键任务。脱离企业这个视角来看,整个软件产业中也有很多通用的任务关键型应用,比如:实时操作系统、航空调度系统、银行对账系统。
- 实现复杂度:从下往上,各级别应用的复杂度(Complexity)也逐级递增。例如最上层的企业级应用,除了功能覆盖面大导致业务复杂以外,往往还需要满足更多苛刻的非功能需求,包括但不限于:用户体验、性能、可靠性、安全性、可伸缩性、可维护性、兼容性。其他一些复杂软件的案例包括:3D 游戏界面(交互复杂)极其底层的游戏引擎(逻辑复杂)、超大型 CRM 系统(一方面是实现很复杂,另一方面,这种成熟软件的标准化程度较高,大部分情况下可以直接用现成的 SaaS 软件)。
- 应用需求量:从上往下,各级别应用的需求体量(Volume)逐级递增,呈现一个金字塔形状。这个特征可以用万能的 2/8 原则来理解:20% 的 “全民” 应用,由于需求的通用性和普适性,可以覆盖至少 80% 的用户群体(例如企业大部分人都要用的考勤系统);而剩下那 80% 的 “小众” 应用,由于需求的定制化和特殊性(例如蚂蚁的期权系统...),就只能覆盖各自小圈子里那 20% 的用户了。
- 与低代码的契合关系:从上往下,各级别应用与低代码越来越契合(Relevant)。也就是说:越简单的应用,越契合低代码;越不太关键的任务,也越契合低代码。同时,由于契合低代码的应用更偏金字塔底层,而这些应用的需求量都更大,所以可以得出如下判断:低代码能够适用于大部分业务场景(而且这个比例会一直上升,逐步往金字塔的更上层应用逼近),例如:B2E 类应用(表单、审批流、ERP 系统)、B2B 类应用(企业商城、工业控制台)、B2C 类应用(企业展示、营销页、店铺装修)。
(三)竞品概况
低代码虽然是一个新兴概念,但这个行业本身并不算很新(前文也有提到),这些年以来早就积累了不少资深的荣耀王者。同时,低代码作为一个朝阳产业和资本热点,近几年也不断有更多的新玩家加入这个竞争激烈的市场。
上图分别是 Gartner 给出的低代码平台魔力象限和 Forrester/艾瑞等咨询公司给出的低代码平台技术波谱。从图中可以看到:
OutSystems 和 Mendix 一马当先,是公认的低代码领域头牌。这两家都是很纯粹的通用低代码开发平台,且都经过了长时间的发展和积累:OutSystems 成立于 2001 年,员工人数 1000 + ,年营收超过 1 亿美元;2018 年 6 月获得了 KKR 和高盛的 3.6 亿美元融资,目前估值超过 10 亿美元;Mendix 成立于 2005 年,员工人数 500 + ,年营收超过 2300 万美元(18 年数据),2018 年 8 月被西门子以 7.3 亿美元收购。
Salesforce 和 Microsoft 紧随其后,都处于行业领先者地位。但这两家的公司性质和发展路径都很不一样:Salesforce 是以 SaaS 起家,公司规模就不用多说了,反正就是 SaaS 界的巨无霸。这类 SaaS 厂商做低代码的动力,是为了解决客户对成品 SaaS 软件的定制诉求。Microsoft 更不用多介绍,只说下他们做低代码的天然优势:一方面,作为办公软件航空母舰,低代码可以帮助他们的客户实现从 Excel 表单到定制 App 的能力与体验升级;另一方面,作为云计算三巨头之一,低代码可以帮助他们连接内部的云计算生态体系,为开发者提供一个统一和易用的上云界面。
国外市场已经得到充分验证,但国内市场还处于起步阶段,目前还没有一家能够赢得上述调研机构的芳心,挤进上面这两张图。国内目前的一些竞品和融资情况包括:2018 年 5 月,搭搭云完成 A 轮的千万级融资;2018 年 9 月,宜创科技得到清源创投的战略融资;2018 年 12 月,轻流完成千万级 Pre - A 融资;2019 年 8 月,数式科技得到盈动资本的数千万人民币天使轮融资;2019 年 8 月,ClickPaas 获得晨兴资本数百万美元的 A 轮融资;2019 年,奥哲分别获得阿里 5 千万的 A + 轮融资和高榕资本上亿元的 B 轮融资。2021年,织信Informat获得数百万元的天使轮融资。
六、结语
本文总结了低代码领域的基本概念、核心价值与行业现状。虽然这些内容都比较基础和偏理论,但我始终认为,深刻理解一个系统的前提是这些务虚的东西 —— 技术架构只会告诉你这个系统是怎么实现的(How),无法准确表述它到底能用来做什么(What),以及为什么要做这样一个东西(Why);而后面这两个问题的答案,才是后续系统所有设计与演进的根因和驱动力。