近年来,“低代码”这一概念在资本市场上愈发火热,各种低代码平台项目也纷纷上马。
然而,此类平台的设计者与维护者们,或早或晚,终将会面对“低代码”与生俱来的一组底层矛盾,而是否能合理地处理这组矛盾,最终决定了此平台的发展前景。
01
背景
我们团队正在维护一套基于DSL(领域特定语言)的表单管理平台。该平台由客户方团队自建,其中包含了前端UI、数据管理、表单规则管理等模块。设计目标是:让业务人员以书写DSL的方式定义表单模板,此后可以直接基于模板生成UI并管理表单数据,从而达到低代码甚至零代码创建表单的效果。
该平台自建立以来,已经支持了数百个大型表单的成功上线,支持了公司业务的快速成长。
然而随着业务的持续发展,该平台的疲态也日益凸显:
-
难以支持复杂的表单需求(可用的表单组件、数据结构、DSL语法不足,且新增成本过高) -
平台代码极度难以维护
-
大型表单的性能表现糟糕
02
不可能三角
-
前期:平台能力弱,但业务也简单。平台开始起步。 -
中期:平台能力趋于成熟,业务逐渐变得复杂但仍在平台能力范围之内。平台支撑着业务快速发展。
-
后期:平台触达能力上限,部分业务需求开始超出平台能力。
而此类平台之所以会有如此表现,根本症结在于其发展受到了“低代码”天然自带的一组矛盾的掣肘,该矛盾可以用不可能三角的形式加以描述:
-
Easy to Use – 易于使用 -
Powerful – (功能)强大
-
Low Complexity – 低(系统)复杂度
若一平台在易于使用的同时功能强大,则必然拥有较高的系统复杂度。
若一平台易于使用的同时保持低系统复杂度,则必然功能受限
若一平台功能强大的同时保持低系统复杂度,则必然拥有较高的使用成本
03
出路
软件工程就是trade-off的艺术
-
低代码平台一定会比传统开发方式更方便/更快速/更易上手 -
低代码平台的最终产物一定是可运行的商业应用
对应到我们的三个核心设计目标上去,很容易看出:
-
第1条直接要求低代码平台必须是易于使用的,尤其是相对于传统方式要有显著优势,这是此类平台的核心竞争力。否则面对同样需求,客户为何不选择更成熟可靠的传统方案,而要使用低代码平台呢? -
第2条则要求低代码平台以及其产物必须是生产可用的。这要求平台的产物要具有可接受的性能与可维护性,从而要求平台的复杂度不宜过高。而低性能或不可维护的产品则是断然无法应用在生产中的。
与之相对的,虽然低代码平台也会将“功能强大”作为其一大卖点,但又往往会特意强调其功能具有特定的应用范围。常见的有针对企业工作流、报表、ERP等场景设计的低代码平台。
-
易于使用是魂,是平台的意义所在。 -
低复杂度是骨,是平台在生产中可用的基石。 -
功能强大是肉,是平台价值的组成部分。
-
对于那些专注于解决封闭问题域问题的低代码方案,经过精心设计,是有机会做到使用一个通用方案覆盖100%域内场景的。此类方案中的佼佼者有SQL之于数据查询领域,可以实现几乎所有查询需求。 -
然而对于一个开放问题域来说,由于不可能穷尽域内所有可能的问题场景,则可以说完全不可能存在有某个单一的“终极方案”,能够凭一己之力解决域内所有问题。
例如说对于一个To C的低代码开发平台,在UI交互方面,它的问题域就是开放的。
04
逃生舱
-
事实1:易用性与性能/可维护性不可放弃 -
事实2:单一方案至多只能满足80%场景
-
若在原有架构上修修补补——复杂度爆炸 -
若把架构推倒重来——工期爆炸 -
若拒绝支持新需求——PM爆炸
05
小结
– END –
大佬观点
西门子低代码-王炯 | 西门子低代码-阮铭 | 微软-李威 | 微软-徐玉涛 | 葡萄城-李佳佳 | 葡萄城-宁伟 | SAP-陈泽平 | 华为-周明旺 | 华为云-董鑫武 | 钉钉宜搭-邵磊 | 轻流-严琦东 | 腾讯云微搭-骆勤 | 网易数帆-陈谔、严跃杰 | 百特搭-姜楠
用友-刘鑫 | 数睿数据-张超 | 奥哲-朱鹏喜 | 炎黄盈动-汤武 | 普元信息-孟庆余 | 得帆-李健达 | 瀚码技术-钟惟渊 | iVX-孟智平
Treelab-何浚炫 | 阿里-汪凤震 | 明道云-薛晨 | 上海斯歌-傅正斌
公众号后台回复【加群】