低代码开发会是未来吗?

张海龙 捡起来 1 week ago

“我的作品都是《2001 太空漫步》的拙劣模仿。”

-- 《三体》刘慈欣


我看了一下国外做的最好的两家低代码开发平台的产品 Mendix 和 OutSystem,以及微软的 PowerApps 感觉都是对 Dreamweaver 的拙劣模仿。

以上界面是不是看着很熟悉?算起来,Dreamweaver,Access,PowerBuilder 都是低代码开发的鼻祖。大约在 20 年前,自打我开始学习编程以来,这个概念就不曾停过。也不知道是什么原因导致的,2019 年喊“低代码”的公司特别多,很多都是外包公司转型,或者说是蹭概念。这个概念生生不息是因为真的很性感,想象一下,你可以让每个人都零门槛开始“编程”,创造应用。这么多年过去了并没有哪个产品实现了这个愿景,专业的程序员越来越多,而普通民众依然不会编程。
也许在真人工智能(全自动写代码)到来之前,这个愿景就是错的。然而真人工智能极大的可能性不会基于目前的计算机体系结构,所以从某种意义上来说,在冯诺依曼计算机时代,这件事情不可能。有一个手机上的游戏叫做“7 Billion Human”,可以说是把编程简化到了极点,但是保留了编程最基本的元素,甚至是图灵完备的。任何人都可以玩这个游戏,但是随着游戏的深入,你一定会发现这种“简化”的编程方式真的太低效了。我经常在游戏过程中会不自觉的想,这一关如果给我 Java 的话,我很快就能通过。

低代码开发有两个核心问题,第一是用在哪里,第二是给谁用。
低代码开发用在哪里?
我们都知道餐饮行业有一个不可能三角“好吃,便宜,服务好”,那么编程行业“高效,简单,图灵完备”三者也是不可兼得。刚才我们讲的那个游戏,舍弃的是高效;专业的编程语言,比如 Java 舍弃的是简单;而大部分低代码开发产品舍弃的是广泛意义上的图灵完备。这就导致了低代码能做的事情非常局限。

所有的低代码平台都期望通过图形化的方式来扩大适用人群,因为图形的更容易上手。但是由于缺乏对于底层的控制,难以实现个性化。比如在抖音这种形态出来之前,你不可能通过任何一个低代码开发平台做出这样的应用。我们可以理解为,低代码比较适合做形态已知,逻辑未知的应用,比如企业官网,拖拖拽拽是能搞出来的。这样的产品确实也不少。这里的一个悖论是,当你能抽象出这样的形态的时候,这样的形态已经不新鲜了,然而人类永远在追求新鲜的路上。
还有一些低代码开发是基于某个现有平台的,比如 Salesforce 提供的低代码开发对于 CRM 的扩展,确实是很实用的应用。其他的 SaaS 应用往 PaaS 方向演进,也是基于这个大逻辑的。但是由于缺乏对于程序的精细化控制,所以在细节和体验的打磨上是要打折扣的,所幸的是企业应用在这方面要求不高。
低代码/无代码本质就是可变逻辑配置化,但是业务逻辑是不可预测的。今天不可能的事情,明天都有可能。所以只有把业务范围局限在一个可控的范围,才有可能覆盖更多的逻辑。
低代码开发给谁用?
企业服务领域,SaaS,外包,低代码解决的是同一个问题。假如需求是恒定的,那么任何一个途径的增长都会导致其他途径的份额降低。正如用户的时间是有限的,短视频起来了就会侵占直播的市场。SaaS 的目标是直接满足用户的需求,让业务人员可以方便的通过系统实现业务目标。然而企业的需求很多个性化,SaaS 支持不了,就需要外包定制开发解决。然而外包是一个流程冗长,并且质量不可控的路径,所以有一类低代码开发平台是期望通过低代码让业务人员自己去开发系统实现业务目标,不用外包。
这是一个非常美好的愿景。想象一下公司行政可以不通过 IT 部门,自己开发一个零食管理系统,是不是很性感?然而在我跟一些传统企业的 IT 负责人交流以后,结合我自己经营公司的经验,我认为这条路径不可行。核心原因不是开发平台好用不好用,而是业务人员缺少产品和逻辑思维。这类公司内部管理系统往往是业务人员提出需求,公司的 IT 部门跟进,立项,调研,做方案,然后进入研发或者给到外包。这里的核心是要对业务需求进行梳理,然而大部分没有经过专业训练的人员是梳理不清楚自己的需求的。正如人类并不是与生俱来就能理解“递归”这个概念。在需求逻辑梳理不清楚的情况下,给用户再牛逼的工具也做不出来能用的产品。所以此路不通。

事实上长期开发同一类系统的团队都会积累出一套自己的“低代码开发平台”,可能是以代码框架,代码模块,代码模板,拖拽式工具等等不同的形式体现。但这个平台不是给普通用户用的,是给专业开发人员用的,可以极大的提高开发这一类应用的速度。这也是为什么市面上的低代码开发平台产品很多是由外包团队开发出来的。然而这里的限制就是 A 团队长期开发金融类应用,积累了一套针对金融风控类需求的低代码开发平台,B 团队积累的是零售电商领域的,C 团队可能是能源监控领域的,我从来没有见过一个通用领域玩得转的低代码平台。
技术的发展日新月异,特别是前端技术,基本上两三年就要换新套路。然而低代码平台很难跟得上这样的节奏,因为积累需要时间。结果就是,你看到的企业应用/政府应用,技术落后,体验差。
总结而言,通用的低代码开发平台不可能实现,跟现有业务平台绑定的低代码开发会有一定的价值。程序只会越来越复杂,CODING DevOps 这么个系统都已经有 100 万行代码了,比这个复杂的系统还有很多很多,然而这在 20 年前是难以想象的。
航空航天系统的代码复杂度变化
代码只会越来越多,不会越来越少。