前言
对于低代码, 我最初的概念来自于面试中, 别人问我的或者向我输出的东西, 但随着我自己对低代码的了解日益深入, 我发现, 对于低代码, 国内无论是商业还是技术圈的理解(包括我自己之前)都多少有些问题.
正文
低代码是什么
按照 outSystems 这家公司在国内的产品翻译, 低代码是一种以少量代码或者无需代码就能开发软件的方式, 围绕这种方式 outSystems 推出了一系列产品帮助企业完成数字化转型需要的工作, 关于 outSystems, 这是一家成立于 2001 年, 但是直到最近才被投资界挖掘出来的独角兽公司, 和普遍意义上的独角兽不同, 这家公司是一家成熟的软件公司, 然而低代码的商业化运用帮助他跨越了原来的增长曲线. 就像没有 Sun 可能没有 Java, 如果没有 outSystems 那可能也没有低代码这个概念, 或许叫别的什么, 简单概括的话
低代码是指使用低门槛的编码方式完成软件开发的一种代称
所以你只要能够实现这一目标, 你就可以称呼自己为低代码, 那么目前普遍的一个共识, 通过拖拽式的开发主要还是因为目前对于低代码, 拖拽式的开发方式是一种交互体验比较好的且成本也比较低的, 但仅此而已, 并不是说低代码只能用拖拽式的方法.
低代码的动机和发展背景
如果早 1000 年, 人类不会发明灯泡或者蒸汽机, 不仅仅是技术不到位, 还有时代所处的背景, 那么对于 outSystems 来说也是如此, 这家已经发展了 20 年的公司, 为何直到最近才推出低代码化的产品? 这里包含一个非常明确的动机, 因为计算机技术的大力发展, 全球的商业公司已经不能满足信息化时代的软件形态, 同时对于企业数字化的需求无法得到满足
怎么理解? 这里首先要讲讲两个词, 信息化和数字化
信息化和数字化的关系
我上周在周报里写了个人思考, 引用其中的内容来阐释这两个词的关系
这周参加公司组织的技术峰会, 从一些分享中衍生了一些思考, 包括信息化和数字化和低代码. 之前并没有深入去想信息化和数字化之间的关系, 只是简单的认为数字化是新时代的标签, 信息化是陈旧的代名词. 但周末我自己仔细想了想, 其实两者之间是有很强的联系的.
或者确切的说, 信息化是前几十年人们对于计算机技术的一种认知, 包括互联网刚进入中国, 我们也称之为信息高速公路, 在那个时代, 人们对互联网和软件开发等计算机相关的技术的认知是, 这类技术可以改变我们传递信息的方式,对于企业服务领域来说, 原先依靠纸媒进行传递信息的方式都可以被替代, 从而将依赖纸媒的流程全部通过软件进行联结, 尤其是电子表格的发明, 进一步推动了这个过程, 企业各个部门的信息, 工厂和市场部门交换的生产数据, 客户信息, 员工信息, 政府采集的企业信息等等都进行大规模的软件替代.
我理解这一进程是人们用电子媒介记录信息代替纸质媒介记录信息的过程, 相比纸质媒介, 电子媒介更加易于存储, 检索, 计算, 其效率提升 10 倍不止.
得益于信息化的进展, 美国欧洲等西方国家在企业服务领域诞生了很多相当棒的软件公司, 同时这种效率也潜在影响了一个国家的发展速度.
而互联网的诞生将这种信息载体替换从企业领域衍生到了民生领域, 人们将日常生活中的纸媒信息也纷纷转记录到网上.
而随着计算机技术的发展, 这种信息替代从纸媒衍生到了更丰富的领域.
经过云计算, 大数据, 区块链, 物联网等等新技术的洗礼, 人们发现通过计算机技术采集和记录的信息已经远远超过了过去我们在纸媒上记录的内容, 比如在数字农业, 对于农作物生长环境的记录, 农作物状态的记录. 又比如, 我们通过数据采集识别人脸数据, 用户喜好分析, 在医疗领域我们甚至采集人的生理数据等等
显然信息载体的替换已经远超信息化时代定义的纸媒, 为此我们需要一个新的定义, 我理解这就是数字化.
在数字化时代, 人们通过技术正试图将我们所处的现实世界的一切都转换成数据, 从而记录在云上进行模拟, 进行分析和计算.
可以预见的是, 这个进程将持续几十年甚至上百年, 而我相信, 就如几十年前信息化刚开始的那样, 在中国领导的数字化进程下一定会诞生伟大的软件公司, 在这次巨大的革新浪潮里占据一席之地 而我们恰逢其时.
简单的讲, 在信息化时代, 企业关注的内容不同, 或者说企业的需求缺乏足够的想象力, 因此软件的模式也相对固化, 用当时的软件开发方式, 供需之间是可以得到满足的.
然而在数字化时代, 企业的需求远远超过了他自身的内容, 变得异常复杂多变, 加上信息化时代的软件遗留, 导致我们要为客户提供服务不得不进行各种定制化的开发, 然而这种开发的成本是很高的, 同时在软件供应市场上也没有这么多的程序员来满足企业的需求.
我举一个相对形象的例子, 你可能就比较容易理解.
拿淘宝直播举例, 对于李佳琦这样的人气主播, 如果没有直播技术, 他会花很多时间在商品的研究上么, 如果是线下的形式, 购买的用户就这么多, 如果他花很多精力去研究商品, 为用户带来非常专业的体验, 但是同时能满足的用户又只有这么多, 这种投入和产出显然是不划算的. 当投入产出不划算的时候, 我们会怎么做, 降低服务品质.
又比如连锁的饭店, 我们常常发现那些连锁品牌, 总店往往味道比较好, 大部分分店只能叫凑合. 那这里其实也是相同的道理, 即投入产出和服务品质之间最终会达到一个平衡.
那最好的服务是什么? 贴身服务, 定制化, 个性化服务, 只有有钱人才能花得起钱的服务, 所以当没有有钱人感兴趣的时候, 这种服务就不存在了.
在 2B 领域, 定制化差不多就是这样一种状况, 出得起钱的公司未必肯出钱, 出不起钱的公司又不值得投入, 但是只做标准化产品, 客户又不买账, 毕竟数字化时代了, 你还给我这么老旧的体验. 肯定不愿意掏钱了.
那么现在看来, outSystems 给 2B 的软件公司提供了一个非常好的思路, 低代码
低代码的价值
低代码的技术价值
看到低代码的公司, 不仅仅看到他的商业价值, 在国内技术圈, 一些大公司的高级工程师们, 首先想到的是自己的业务场景, 为此突然就刮起了一阵低代码风, 很多不明就里的人以为低代码是一个新的技术名词, 是一种技术形态, 然后把过去公司内部做的拖拽式开发的各种平台都冠上低代码, 这种拖拽式的工具往往也只有在中大型公司有场景有市场, 一些风口嗅觉敏锐的创业者尤其是面向 vc 创业的, 也非常迅速的在国内搞起了低代码开发, 这部分我们后面聊, 先谈谈技术圈里的低代码
从技术角度看, 拖拽式开发并不是新鲜玩意, 只不过过去我们没有什么名次定义, 大家通俗讲, 就是拖拖拽拽, 一个页面就出来了. 但其实两者还是有比较大的差异, 就像我上面说的, 拖拽式开发只是低代码的一种表现形式, 低代码的重点在于 "低" 这个低的技术内涵就是它的技术价值, 包括
- 针对相同的业务, 更低的开发成本和维护成本
- 更低的参与门槛, 这意味着, 提供了研发链路上所有角色围绕同一个平台工作的可能性
- 更低的 bug 率, 这个很容易解释, 只要少一点手工代码, bug 肯定少嘛.
低代码的商业价值
前面提到, 客户的最高体验是什么, 那就是贴身服务, 定制化, 他想啥你给他啥, 上帝模式. 从客户的内心世界看, 我自己搞的肯定没错, 肯定一分钱都没浪费嘛.
那么传统的软件开发方式显然是无法满足的, 如果要满足成本就不可控了, 不可控成本意味着不可控的服务品质. 最终又会回到那个平衡上去.
但是现在有了低代码, 一切就有了可能, 我既然能在内部把流程放到低代码平台上, 那对于外部, 对于客户, 作为需求的源头, 也可以直接让他参与进来, 只要这个门槛足够低, 那么从低代码的实现方式来说, 拖拽式的门槛确实足够低, 至少儿童都可以拖拽式来学习编程, 那么意味着通过培训大量的成年人可以变成企业自己的低代码开发工程师(海量)
显然低代码开发具有很强的平台属性, 即无边际增长的企业需求(各种定制化) 和 海量的开发供应(通过培训就能上岗的低代码开发工程师), 从商业角度看, 未来极有可能出现一些不同领域的低代码开发平台, 这些平台背后是巨头软件企业, 就像美团养活了几百万外卖从业者, 低代码开发平台一样能养活几千万开发工程师, 相比现在的软件工程师显然门槛要低的多.
不过据我看来国内的低代码创业公司大多数只是看到风口, 却还没想清楚背后的逻辑.
后话
低代码带有很强的产品属性, 如果你只是从技术角度去看这件事, 我估计你很难捣鼓出什么东西, 但是反过来讲对于一个成千上万人围绕着工作的低代码开发平台, 这背后的技术价值, 技术挑战足以孕育一次新的工程师红利. 至于是否如此, 让我们拭目以待吧.