干货分享,感谢您的阅读!
在软件工程领域,很少有一种技术路线像低代码(Low Code)这样,长期处于两种极端评价的拉扯之中:一方将其奉为效率革命的“银弹”,另一方则斥之为破坏工程质量的“行业毒瘤”。
本文将在理性、工程化的视角下,系统性地分析低代码产生的背景、其与 Pro Code / No Code 的本质差异、银弹论与毒瘤论各自的合理性边界,并进一步探讨低代码距离真正“工程银弹”还有多远。
一、为什么低代码会引发如此强烈的争议?
如果把技术争议分为三类:
短期噪声型争议(例如某个新框架的语法之争)
路线分叉型争议(例如微服务 vs 单体)
范式级争议(例如结构化编程、面向对象、函数式)
那么低代码显然属于第三类。
它并不仅仅是在“怎么写代码”上提出不同意见,而是在挑战一个更根本的问题:
软件到底是不是必须通过人类手写代码来构建?
正因如此,围绕低代码的讨论往往天然带有情绪色彩,尤其是在以下两类人群中:
以 Pro Code 为核心生产方式、并长期从中获得专业优势的工程师
曾经尝试过“劣质低代码平台”,并被其严重拖累交付效率的团队
但在给低代码贴上“银弹”或“毒瘤”的标签之前,我们有必要先退一步,回到一个更基本的问题:
低代码究竟想解决什么问题?
二、存在即合理:银弹论与毒瘤论为何都会出现?
先给出一个并不激进、但足够理性的结论:
低代码既不是天然的银弹,也不是天然的毒瘤;两种极端评价之所以存在,本身就说明它在现实世界中确实击中了真实痛点。
(一)为什么会出现“毒瘤论”?
“低代码是毒瘤”的论断,通常并非空穴来风,而是源于以下几类真实体验:
平台为了“少写代码”,引入大量非工程化约束(不能写 if、不能循环、不能自定义结构)
生成代码不可读、不可调试、不可测试,出了问题只能“求平台”
低代码被当成管理工具而非工程工具,用来压缩人力成本
复杂业务被强行简化为流程拖拽,最终既不高效,也不正确
在这些场景下,低代码确实可能成为:
效率的反面,工程质量的敌人,以及技术债的放大器。
(二)为什么又会出现“银弹论”?
与之相对,“低代码是银弹”的声音,往往来自另一批实践者:
长期受困于招聘难、交付慢、需求爆炸
大量业务本质是 CRUD / 流程 / 表单 / 编排
70% 以上代码并不直接创造业务价值
对于这些团队而言,低代码解决的并不是“优雅”,而是“活下去”的问题。
三、先统一语义:Pro Code、Low Code 与 No Code
在讨论是否是银弹之前,必须先厘清三个经常被混用的概念。
(一)三种开发范式的核心区别
| 维度 | Pro Code | Low Code | No Code |
|---|---|---|---|
| 是否写代码 | 是 | 是(少量) | 否 |
| 代码角色 | 关键输入 | 中间产物 | 不存在 |
| 表达方式 | 指令式 | 结构化描述 | 配置/组合 |
| 目标人群 | 专业工程师 | 工程师 + 业务人员 | 纯业务人员 |
关键差异并不在于“代码量”,而在于:
代码在价值创造链路中的地位。
(二)深刻理解Pro Code、Low Code 与 No Code
1. 官方/行业定义:三者的基本差异是什么?
1.1 低代码(Low Code)官方视角
低代码是指一种通过可视化界面、模块化组件和最少手写代码来快速构建应用的方法。它的本质不是“无代码”,而是提升整体开发效率、减少重复性编码,让非专业开发者参与开发。
Gartner和业内文本通常把低代码定义为“快速应用开发方法”,强调可视化、预制组件、高度抽象。
低代码平台能够让业务人员(如产品、业务分析师)参与到应用创建过程,而无需具备传统编码技能。
因此,从定义上看:低代码不是不给写代码,而是优先使用“可视化配置+自动生成代码”的方式来实现业务需求。
1.2 无代码(No Code)官方定义
无代码是低代码的更极端形式,它完全消除手写代码的需要,通常通过配置、拖拽、组合已有模块甚至模板实现业务结果。
因此它与低代码的主要区别是:
无代码:不写代码
低代码:少写代码
传统开发(Pro Code):全写代码
这是业内比较公认的划分方式。
1.3 传统开发(Pro Code)
这是我们熟悉的软件工程方法:开发者通过手写全部业务逻辑、操作系统 API、数据访问、控制流程等代码来构建系统。
这是过去数十年软件工程的主流方式,并且还是构建大型复杂系统(操作系统、编译器、高性能后端等)的唯一有效方式。
2. 学术研究中的定位:低代码不是“去掉代码”,而是提升抽象
2025 年《Journal of Systems and Software》发表的一篇系统性文献综述指出:
Low-code / no-code (LCNC) 是一种扩展软件开发的方法,能够将开发推广到专业工程师以外的组织成员,并促进数字化转型。
这说明两个核心事实:
LC/NC 的目标是扩宽参与者,让更多人参与软件开发
它本质上依然是软件工程方法的一部分,但在参与者与开发方式上发生了改变
此外一篇关于低代码领域的 metascience研究也指出:
早期模型驱动工程(Model-Driven Engineering)与低代码社区在方法论层面有共同起源,但低代码更关注业务描述模型和代码生成自动化。
两点值得关注:
在这些论文中,低代码本质上是一种高度抽象的软件开发范式
它重视的是业务层面的描述、模型构建,而不是手动指令式编码
3. 理解“Low Code 与 Pro Code 本质上是同一物种,只是分工不同”
Low Code 和 Pro Code 都是为了实现业务价值(创建软件),不同的是它们在软件“价值创造链条中”对源码的使用角色不同。
3.1 Pro Code 把源码当作关键输入
在传统软件工程中,开发者通过语言构造(函数、流程、逻辑判断)来描述「如何让系统满足业务需求」。
代码是明确的指令集合,它直接驱动计算机执行业务逻辑。
这种方式的特点:
表达能力强:能描述任意复杂的逻辑
依赖专业技能:必须能理解数据结构、算法、语义逻辑等
门槛高、周期长
这也是软件工程教育核心:训练如何写代码、如何抽象业务到执行指令。
3.2 Low Code 把源码当作中间产物
低代码的开发方式不是让使用者自己写大量指令,而是让用户通过可视化、模型、配置等方式描述“业务应该是什么样的”。
例如:
画出一个流程
拖拽一个表单组件
配置字段、规则与校验
平台根据这些配置生成可以运行的代码。最终运行的还是代码,但参与者无需了解具体指令实现细节。
这是一种声明式而非指令式的模式:
声明式:描述需求是什么(业务视图、表单结构、流程设计)
指令式:描述要怎么完成(写循环、分支、数据流逻辑)
这个不同在多个定义中都有体现,例如:
低代码通过预构建模块和可视化建模减少手写代码。
以及:
无代码是低代码的一种子集,其目标是完全消除手写代码。
从这个角度来看:
Pro Code 与 Low Code 的共同点在于最终都产生软件,而不同点在于产生方式是否依赖人工手写过程。
这正是那句话的核心:Low Code 与 Pro Code 本质上是同一物种(都在实现软件开发),只是分工不同(手写 vs 抽象描述)。
这种看法也是业内和学术界对这三者常见分类的根源性解释,而不是简单按“写多少行代码”来划分。
4. 一个具体的例子帮助理解
想象你要实现一个企业内部审批流程:
4.1 Pro Code
你需要:
写数据库结构代码
写业务逻辑代码(判断流程如何推进)
写 UI 渲染代码
写权限校验逻辑
写 API 与运维自动化
总体流程全部由你用代码逐条指令构建
4.2 Low Code
你:
在平台上定义表单字段
配置流程走向(批准→拒绝→通知)
选择组件和触发事件
写少量表达式来实现特殊逻辑
平台会自动生成底层代码,并负责部署与基础架构部分
4.3 No Code
你:
在界面上通过拖拽表单组件
配置审批条件与通知动作(没有代码)
平台直接生成完整可运行系统
在这个例子中可以看到:
Pro Code 是指令式开发
Low Code 是声明式开发 + 自动生成代码
No Code 是更进一步的声明式组合
四、为什么说 Pro Code 不是银弹?
如果 Pro Code 是银弹,那么低代码根本不会出现。
4.1 人才与门槛问题
开发者总体数量有限,且分布极不均衡
真正具备复杂系统交付能力的工程师更加稀缺
招聘难,已经成为大量技术负责人的长期痛点。
4.2 跨界与端到端交付难
即便都是“写代码”:
前端 ≠ 后端
Java ≠ C++
数据 ≠ 运维
全链路能力长期集中在极少数骨干身上,形成单点风险。
4.3 非功能性成本巨大
Pro Code 的问题从来不止“写完代码”:
测试
运维
安全
合规
性能
技术债治理
这些成本与“业务复杂度”并不完全正相关,却长期吞噬研发资源。
五、低代码的真正优势在哪里?
5.1 思维模式的根本差异
Pro Code 是指令式思维:
告诉计算机“怎么做”。
Low Code 是声明式思维:
描述“最终应该是什么样子”。
flowchart LR A[业务目标] --> B[结构化描述] B --> C[代码生成] C --> D[运行时能力]少做一步“翻译为指令”的工作,直接带来效率提升。
5.2 自动生成代码的价值
框架代码
协议代码
基础设施代码
这些代码:
与业务无直接价值
出错代价极高
占据大量工程时间
低代码将其系统性消除。
5.3 赋能与“外卷”效应
低代码并非取代工程师,而是:
让业务人员参与开发
让前端写业务
让后端写 UI
从组织层面看,这是一次生产要素扩容。
六、为什么低代码也不是银弹?
6.1 表达能力的天花板
低代码依赖结构化数据,而非通用逻辑语言:
强规则
强约束
强一致性
但在以下场景下天然吃亏:
高度不确定逻辑
算法密集型业务
实验性产品
Pro Code 做不到的事情,Low Code 更做不到。
6.2 强逻辑可视化仍是难题
如何用可视化方式表达:
状态机
复杂条件分支
时序依赖
这是当前低代码平台的核心技术瓶颈之一。
七、低代码要接近“银弹”,还缺什么?
7.1 全生命周期能力,而非“开发工具”
低代码平台必须覆盖:
一键导出 / 部署
可观测性
可测试性
自动化测试
7.2 多人协作与工程治理
flowchart TB A[结构化模型] --> B[版本管理] B --> C[分支 / 合并] C --> D[多人协作]没有协作能力的低代码,只适合 Demo。
7.3 兜底机制
真正成熟的低代码平台,必须允许:
手写代码
插件扩展
Hack 与逃生通道
否则只会成为业务创新的“天花板”。
八、增值能力:低代码的真正护城河
UX 规范自动对齐
D2C(Design to Code)
埋点与数据采集
安全漏洞治理
开源合规治理
这些能力,几乎不可能在纯 Pro Code 中系统性落地。
九、结语:低代码不是革命,而是工程理性
低代码真正的价值不在于:
是否取代程序员
是否减少代码
而在于一个更朴素的问题:
我们是否愿意承认,代码只是实现业务价值的手段,而不是目的本身?
当低代码被当成工具,而非意识形态时,它才能真正发挥价值。
参考与延伸阅读
https://martinfowler.com/articles/is-low-code-worth-it.html
https://www.thoughtworks.com/insights/articles/low-code-platforms
https://www.gartner.com/en/information-technology/glossary/low-code-development-platform
https://www.infoq.com/articles/low-code-no-code/
https://queue.acm.org/detail.cfm?id=3415016
https://www.redhat.com/en/topics/automation/what-is-low-code
https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-low-code/
https://www.ibm.com/topics/low-code
https://www.outsystems.com/blog/posts/low-code-vs-traditional-development/
https://www.mendix.com/blog/low-code-vs-no-code/
https://www.forrester.com/report/the-forrester-wave-low-code-development-platforms/
https://www.thoughtworks.com/radar/techniques/low-code-platforms
https://engineering.atspotify.com/2020/01/product-thinking-vs-engineering-thinking/
https://www.infoq.com/articles/software-complexity-human-limits/
https://cacm.acm.org/magazines/2021/2/250085-the-future-of-programming/fulltext
Gartner:Low-code or No-code Platforms— 官方趋势报告定义低代码与无代码https://www.gartner.com/en。
InfoQ 文章:什么是低代码— 实践视角解释三者关系https://xie.infoq.cn/article/329e7098e9128619c6c80a19f?utm_source=chatgpt.com。
系统性文献综述《Adoption of low-code and no-code development》 — 学术研究对低代码的现状评估。
Metascience 研究《A Metascience Study of the Impact of Low-Code Techniques》 — 低代码技术与模型驱动工程社区的关联。