为什么我说低代码是“行业毒瘤”?

标签: 代码 行业 | 发表时间:2021-04-28 15:31 | 作者:田晓旭
出处:https://www.infoq.cn

使用低代码平台写出来的代码既难以维护,又难以测试,同时它还给行业传递了非常不好的信号,“程序员的价值是不值钱的”,最终造成的结果就是一些不具备编程专业技能的人,使用极不趁手、效率低下的工具来做写代码的工作。这是非常危险的,这类低代码工具就是行业毒瘤!

近段时间,低代码在市场中获得了前所未有的热度,很多投资机构都做了相关的分析与预测。Gartner 预测:到 2025 年,70% 的新应用将由低代码 / 无代码技术完成开发。那么,低代码真的是新风口吗?它真的可以提升效率吗?

带着这些问题,InfoQ 采访了 ThoughtWorks 中国区 CTO 徐昊,他表示低代码不是一个新概念,现在也不是低代码第一次引发业界讨论,以降低程序员门槛为目的的低代码从底层逻辑上就是不通的,这类低代码不是风口,而是行业毒瘤。

低代码并不是新概念,每隔几年就会重新流行

什么是低代码呢?2014 年,Forrester Research 研究机构正式提出了低代码的定义,即利用很少或几乎不需要写代码就可以快速开发应用,并可以快速配置和部署的一种技术和工具。通俗一点理解,在程序员实现功能的过程中,只使用了很少的代码,或者是通过拼接的方式来完成,比如我们在 Excel 中输入公式,完成相应计算,这也可以算是低代码的一种。

在徐昊看来,低代码并不是一个新概念,每隔几年低代码就会卷土重来,在业界引发热议。

伴随着计算机产生的历史,“程序员”有一个圣杯性的使命——让计算机彻底工具化。不要只是让专业人员来操控计算机,要让一些没有编程训练、不是计算机专业的人也可以使用计算机完成相应的工作。

顺着计算机发展历史去看低代码,我们会发现每个阶段的低代码定义都是不一样的。

最开始,我们是使用机器码来编程的,FORTRAN 编程语言出现之后,我们就可以使用高级编程语言去编程,不用再操控机器。那么,与操控机器对比,FORTRAN 中的数学表达式就是“低代码”。

经过一段时间的发展,编程开始围绕数据来展开,那么,业务人员能不能不用写代码就生成自己的数据报表呢?这时,SQL 就出现了,当年它也被认为是“低代码”。

根据历史规律,这类“低代码”总是在出现之后再慢慢演变成程序员的一个工具。

这次,低代码能够流行的一个背景是微服务的发展。微服务的理念是把企业中复杂度高的应用拆解成多个微服务,然后通过更简单、更低成本的方式把已存在的微服务串联起来,形成新的功能。那么,企业在进行微服务改造的时候,心中存的念想就是可以降低新功能研发和创新的成本。当企业的微服务改造都基本完成之后,通过“低代码”的开发模式将它们串联成新功能,似乎是合理的选择。

以降低程序员门槛为目的的低代码是最没用的

低代码领域目前没有特别明确的类别划分依据,各家研究机构和企业都有自己的划分标准。在徐昊看来,低代码可以粗粒度地分为三类。

第一类低代码是我们常说的脚本化,类似于在 Excel 中使用宏,通常是围绕一个特定的产品或生态去形成脚本化的环境。以 Salesforce 为例,每家公司的销售流程都会有差异,即使是再优秀的 SaaS 服务或产品都只能覆盖 80% 以上的功能,剩下一些需求还是要定制化。而这些定制化的需求往往是轻量级的,因此,SaaS 或 PaaS 平台通过低代码工具就可以实现这些需求。

其实,脚本化在行业中已经存在很多了,基本上所有做产品的公司都有脚本化的需求,主体功能不变,通过一个轻量的脚本语言在上面去做定制化需求。最典型的例子 JavaScript,JavaScript 出现时的平台产品是浏览器,通过一个脚本语言去完成浏览器上的一些额外功能,但是现在很少有人会把使用 JavaScript 叫做低代码。从某种程度上来讲,这类低代码产品最终会演变成程序员的工作,甚至引发新一类程序员的出现,而它本身则从低代码退化成为真正的代码。

第二类是我们希望看到的低代码,但是可能没有商业前景。目前企业内部仍然存在大量的人工操作和流程。这些操作或流程可能都有特殊之处,如果把它们自动化,就可以把大量的人力从繁琐的工作中解放出来。

但是企业很难关注这些流程,再加上想要自动化这些工作是很难的。不过我们会发现,在行业中出现了很多针对个人工作流的自动化工具,比如苹果的 automator, 昙花一现的 IFTTT,甚至更早的 yahoo pipes。这种简单的个人流程自动化低代码,通常是根据屏幕上发生的事情来触发,或者根据绘制的简单流程完成业务自动化的操作。

服务于个人生产力的低代码,既不会对行业造成影响,同时又有很明确的市场需求,但由于不赚钱,进入这个领域的人非常少。

第三类是现在常见的以降低程序员门槛为目的,想要说服企业使用便宜的人力成本去干活的低代码平台。在它们的宣传语中甚至会强调自己不只是低代码,而是无代码。

这类低代码其实就是之前出现过的使用表单去绘制工作流,然后在工作流程的每个节点上配上表、企业流程和 OA。

徐昊表示:“这类代码其实是最没有用的,它给行业传达了非常不好的信号——程序员的价值是不值钱的,它尝试说服企业的理由永远是程序员那么贵,使用我的工具,就可以使用更便宜的程序员了。事实上,这些能够实现的功能非常有限,甚至会导致很严重的结果,让一些不具备专业技能的人,使用极不趁手、效率低下的工具,来干写代码的工作。这是非常危险的,这样写出来的代码既难以维护,又难以测试,这一类的工具低代码平台是行业毒瘤。”

为什么我说低代码是行业毒瘤?

徐昊认为以降低程序员门槛为目的的低代码是行业毒瘤,但有意思的是,这类低代码平台在资本上是最受追捧的,因为它能讲出很美好的故事。原本企业需要花很多费用来雇佣程序员,而使用低代码工具就可以节约这部分成本。但仔细思考,就会发现这个故事的内在逻辑是有问题的。问题出在哪里呢?

第一,低代码平台预设的使用人群永远是初级、入门的人

以图形化工作流为例,当你完全不会写代码时,通过拖拽工作流这种直观的方式可以实现相关代码。但开发者会成长,不会永远处在同样的位置,而低代码平台预设的使用群体永远是初级、入门的人。

以面向幼儿编程的编程语言 Scratch 为例,它将代码结构表达为图形化的模块,通过图形化的拖拽拼搭代码。在这种情况下,即使是不识字的小朋友也可以通过拖拽去实现相关功能。但是小朋友不会永远不识字,当他成长之后,就会发现打字的效率是要远高于拖拽。

第二,低代码平台暗藏巨大的变革成本

根据徐昊的观察,目前绝大多数低代码厂商提供的产品都尝试覆盖完整的软件生命周期。企业购买之后,开发者在平台上按照平台的规则来编程。所以,低代码平台看似售卖的是开发工具,实际上卖的是一种工作模式,企业研发团队需要改变原本的工作模式。这种变革的成本是非常巨大的。

据徐昊所知,某厂商的研发部想要上线一个低代码平台来提升研发效能,但是上线之后,发现团队没有办法使用低代码平台来接管整个业务,再加上上线时间很紧张,所以权衡之后,他们又采购了另一个低代码平台,想要联合两个平台来解决问题,但现实是直到现在,他们还在尝试如何将低代码平台成功应用到企业业务中。

第三,风口不代表长期发展,低代码其实是个伪需求

在投资市场中,低代码似乎已经成为了一个新风口,很多研究机构都对低代码的未来做了分析和预测。Infolob 研究显示,低代码应用程序保持着 40% 的年复合增长率,预计到 2022 年,低代码应用程序市场总规模将达 212 亿美元。研究机构 Gartner 则预测,2024 年应用软件开发活动当中的 65% 将通过低代码方式完成,同时 75% 的大型企业将使用至少四种低代码开发工具进行应用开发。

那么,被资本市场看好是否意味着低代码的未来值得期待呢?

徐昊表示:“风口和长期发展并不能完全划等号。资本市场的投资策略往往是宁可错投、不可错过,而作为行业从业者,我是从基础逻辑来判断一项技术的未来,即它对行业长期发展是否有帮助。”

“低代码的出现确实是有市场机遇的,现在程序员缺口很大,大家都在 996,加班干活,所以我们需要一个提升效能的工具。但你仔细思考,对于很多企业来说,这其实是个伪需求,低代码的定位不是帮助从业者提升效能,而帮助小白来入门行业。软件从业者的效率会低于一个没有入门的人吗?显然不可能,所以与其关注低代码,不如关注针对程序员本身是否有工具可以帮助他,能否将他的流程进行有效的自动化。”

采访嘉宾:

徐昊,ThoughtWorks 全球技术策略顾问、中国区 CTO 及首席咨询师。

自 2003 年起开始实践极限编程等敏捷方法,是 Agile China 和 BJUG(Beijing Java User Group)创始人,在 Scrum 和 FDD 等敏捷方法、敏捷交付和敏捷项目管理、IT 人员胜任力、大规模工程实践、以及组织认知模型等方面有着丰富经验。目前致力于构造高效 IT 组织的理论与实践,大规模团队敏捷实践和管理再造,以及企业级技术应用趋势和技术战略的研究等。

相关 [代码 行业] 推荐:

为什么我说低代码是“行业毒瘤”?

- - InfoQ推荐
使用低代码平台写出来的代码既难以维护,又难以测试,同时它还给行业传递了非常不好的信号,“程序员的价值是不值钱的”,最终造成的结果就是一些不具备编程专业技能的人,使用极不趁手、效率低下的工具来做写代码的工作. 这是非常危险的,这类低代码工具就是行业毒瘤. 近段时间,低代码在市场中获得了前所未有的热度,很多投资机构都做了相关的分析与预测.

代码重构

- - ITeye博客
随着程序的演化,我们有必要重新思考早先的决策,并重写部分代码. 代码需要演化;它不是静态的事物. 重写、重做和重新架构代码合起来,称为重构.    当你遇到绊脚石  ---  代码不在合适,你注意到有两样东西其实应该合并或是其他任何对你来说是"错误"的东西  -------- . 如果代码具备以下特征,你都应该考虑重构代码:.

代码小比较

- Tim - 斯巴达第二季
判断上百万个4k的buffer是否为全0,我最先想到的办法是:zero_buffer = malloc(4096);. /* 循环百万次读取buffer */.         /* 全0 */. 由于好奇,看看shell工具cp的代码,它的解决办法是:. /* 循环百万次读取buffer */.         /* 全0 */.

两行 JavaScript 代码

- MessyCS - Dreamer's Blog
最近看到了两行 JavaScript 代码,很受启发. 在 JavaScript 中,我们可以获取HTML元素的属性值,例如 element.id. 但是,因为 for 和 class 是 JavaScript 中的关键字,所以在 JavaScript 中这两个属性名称分别用 htmlFor 和 className 代替,于是在封装的时候需要先对这两个属性进行特殊判断.

Netty代码分析

- LightingMan - 淘宝JAVA中间件团队博客
Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序[官方定义],整体来看其包含了以下内容:1.提供了丰富的协议编解码支持,2.实现自有的buffer系统,减少复制所带来的消耗,3.整套channel的实现,4.基于事件的过程流转以及完整的网络事件响应与扩展,5.丰富的example.

python代码调试

- - 阿里古古
【转自: http://blog.csdn.net/luckeryin/article/details/4477233】. 本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序. 例如,有模拟税收计算的程序:. debug_demo函数计算4500的入账所需的税收. 在需要插入断点的地方,加入红色部分代码:如果_DEBUG值为True,则在该处开始调试(加入_DEBUG的原因是为了方便打开/关闭调试).

ios代码开源

- - CSDN博客移动开发推荐文章
本人从10年开始搞ios开发,从菜鸟到现在的入门,期间遇到了许多困难,也总结了一些东西,本着开源精神,希望大家共同成长的目的把这个工程开源出来.. 这个工程是从11年到13年之前完成的.主要是我平时用到的一些基础功能模块.其中有其他开源的代码和我自己写的一些.代码结构基本乱,12年以后的代码结构还可以,不是很乱,之前水平有限,如果不怎么样就别喷我了.

Oracle错误代码

- - 数据库 - ITeye博客
ORA-00001: 违反唯一约束条件 (.). ORA-00017: 请求会话以设置跟踪事件. ORA-00018: 超出最大会话数. ORA-00019: 超出最大会话许可数. ORA-00020: 超出最大进程数 (). ORA-00021: 会话附属于其它某些进程;无法转换会话. ORA-00022: 无效的会话 ID;访问被拒绝.

Java代码优化

- - ImportNew
2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化. 在修改之前,我的说法是这样的:. 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了. 代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对于提升代码的运行效率就很有用了.

用 pylint, 写好代码

- Nickcheng - 赖勇浩的编程私伙局
赖勇浩(http://laiyonghao.com). Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8)和有潜在问题的代码. Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等.