作者 | Alex Hudson

译者 | 风车云马,责编 | 唐小引

封图 | 付费自东方 IC

出品 | CSDN(ID:CSDNnews)

最近几年里越来越流行一句话,“2020 年将是无代码的一年”。这意味着你即使不是软件开发人员,也可以编写业务逻辑甚至整个应用程序。这样做固然有一定的好处,有些“无代码”工具确实很强大,但我也认为这是不大可能的。

为什么会有“No Code”?

从表面上看,“不用代码”的原因是显而易见的:软件开发人员成本昂贵,供不应求,而且软件本身的开发也是需要周期的,后期还要根据需求变化进行调整,并且运行和维护的成本都很高。

然而对软件的需求是与日俱增的。现代数字化企业需要大量的软件,大部分都是高度定制的。

如果我们可以创建数字业务,甚至数字产品,那不是更好吗? 或许一开始新技术很难使用,但随着时间的推移会变得更容易获得。

将业务流程转换到软件领域主要有两个明显的好处:

  • “变更控制”成为一个软件问题,而不是人员问题。您仅仅做一个软件发布,而不需要通过大量的人员再培训,就可以改变现有的流程或引入新的流程。从而实现更快地回滚或迭代。

  • 创新使企业与众不同,尤其是企业的竞争对手也在做同样的产品,将业务流程转换到软件领域,这对一些企业来说是好事,但大多数企业不想从事软件产品服务。

许多企业试图通过数字化转型来获得这些好处,但都失败了。你会突然发现公司会变成(至少在某种程度上)一个软件开发公司,而大多数公司都不擅长这个! 虽然软件环境具有无限的可能性,但要有足够的资源(时间、金钱、人员),大多数人都会梦想各种可能性,但在实践过程中受到很多限制。

“无代码”是什么?

“无代码”意味着软件开发不需要编写代码。人们可以在某个“更高的层次”上进行操作,在这个层次上,开发要简单得多,但最终的结果是相同的。

具体来说,按照计算机编程语言的语法形式编写业务逻辑是令人讨厌的。打个比方:软件开发人员就像汽车修理工一样,了解引擎的内部。但大多数人只需要能够驾驶汽车,会使用方向盘和一些踏板就行。随着时间的推移,我们不断提高了机械化程度。有人可能会喜欢手动挡,但大多数人更喜欢自动变速箱,这样驾驶我们就让它简化了!

简单的抽象

在这个行业的早期试图简化编程就已经开始了:BASIC 是一种尝试,它允许人们用看起来像英语的语言来编写软件,这也是非常成功的。

然而,抽象作为编码系统的一个关键概念,它往往不会过于简化:实际上,许多开发人员都在积极地尝试确保代码足够具体,使其易于理解。

简单的语法

主要的问题是编写文本,已经有人尝试简化语法甚至完全去掉——有许多图形开发系统。

这些语法的简化也会带来表达的问题。一旦它们足够简单,可以快速掌握,它们就不再具有足够的表达能力,无法在许多场景中使用。还有些计算机语言专注于某个应用程序领域,称为领域特定语言(dsl)。但这些语言很少有真正在开发中获得成功的,主要是因为它们再次使事情变得极其复杂。

配置代码

许多不会写代码的人正在通过整合现成的应用程序来构建重要的系统。使用像 Zapier 这样的工具可以更直接地做到这一点,这些工具可以广泛地集成到不同的系统中。

这种情况有两方面的原因。首先,您已经将逻辑扩展到各种不同的系统中,因此很难再对整个应用程序进行梳理。

其次,逻辑是通过配置来实现,而不是代码。程序员经常面临这样的两难境地:我们是信任外部系统并投入大量的配置工作,还是尝试自己处理更多的逻辑?

无论应用程序如何扩展,逻辑不会消失。即使使用 Zapier 规则进行连接,也不会消除任何维护的成本或负担。

代码的等价性

开发人员仍然使用纯文本是有原因的——主要是为了提高效率和清晰的表达。当然,如果出现了更简洁的工具,许多(不是所有!)开发人员会像扔热石头一样丢掉文本。

但是无论以什么方式的逻辑表达,都不会减少所描述事物本身的复杂性。就比如编写“two”和“2”,表示相同的东西。

假想视觉开发环境中的过程是这样的:

完全等价于:

def process_email(self, address):if not self.validate_email(address):raise InvalidDataException(_("Address is not valid"))self.store(address)

在第一个例子中,我需要知道该视觉环境系统是如何工作的。在第二个例子中,我需要了解一种语言和开发环境。但这两种技能都是很容易获得的。它们之间的共同点是,我要理解逻辑是什么,以及它将如何工作。

要理解软件——任何类型的软件——你需要能够在头脑中对所表示的系统建模,并基于此对它在不同场景下的工作方式进行预测。

这正是许多人在现代数字设备上遇到麻烦的原因。问题是由于硬件的输入按钮很少,但内部工作非常复杂:所以用户需要在他们的头脑中保留设备内部状态的高级模型。

有些人认为这是一种不可习得的技能。如果你不能推断出某物的内部状态,那么很可能将无法编程。我敢说没有大量的实践,你肯定做不好。坦率地说,逻辑是文本的还是可视化的并不重要。

“无代码”就不好吗?

绝对不是。

在 70 多年的可编程计算机的发展历史中,我们仍然在使用 20 年前的开发工具,这才是最大的不幸。

当然,我们仍然应该努力改善我们的语言和环境。看以下两段代码:

#include <string.h>
#include <stdlib.h>char *add_domain_name(char *source) {const size_t size = 1024;char *dest = malloc(size+1);strncpy(dest, source, size);strncat(dest, "@example.com", size);return dest;
}

以及这个:

function add_domain_name(username: string): string {return username + "@example.com";
}

第一个例子是 C(发明于 1972 年左右),第二个例子是 40 年后的 TypeScript(发布于 2012 年)。它们在很多地方有大致相同的语法,但是 TypeScript 比 C 高级得多。特别是,开发人员不需要担心内存分配、字符串的编码或其他事情。

实际上,对于足够大的应用程序,大部分业务逻辑将在相当高的级别上实现,而且语言之间的差异将更加不明显。

在实践中,“无代码”的不足之处?

目前有一些非常高级的系统,例如,您可以在 Salesforce Cloud 中定义非常复杂的软件,而不需要编写任何代码。它包含了可视化编程、规则设置和配置。

对于其他人的平台,实际上根本无法实现所需的功能。您常常需要构建复杂的解决方案来弥补功能缺失。举个例子,我曾经使用过一个平台,它有一个电子邮件自动回复器,但是不能放在垃圾邮件检查器中。使用它意味着产生垃圾邮件反向散射,这是许多电子邮件系统迅速禁止的接收方式。

假设它能根据您的需求完全实现特性,那么随着项目的进展,在产品化方面就会遇到麻烦。变更控制就是一个明显的例子。

我们习惯于使用代码创建更改,然后将其部署到单独的测试环境中,最后部署到生产环境中(要逐步地启用该特性)。如果出现错误,我们可以快速地处理它们并解决问题,而不会影响到所有用户。

由于系统“无代码”,非生产环境中的测试往往很难或不可能实现。Salesforce 有一些优秀的工具可用来完成这项工作,即使在那样的环境中,这也是非常困难的。

“无代码”的成功之处?

质疑对软件的需求也无非好坏,“无代码”系统对于概念验证阶段有很好的指导作用。

作为非 IT 系统,它们在获取实际业务设计输入和反馈方面也非常有用。虽然我们谈论了很多关于敏捷开发的内容,但是我很少看到开发团队中的最终用户。

有许多工具,虽然本身不是“没有代码”,但也允许用户生成更多的技术输出。我最喜欢的例子是商业智能工具 Looker,在不同的细分市场中还有许多类似的工具。我发现它们的模型开发都是纯文本的,都使用常规的软件开发工具,这非常有趣。

总结

我认为“无代码”作为大多数主流开发的替代方案是一个白日梦。在过去的 70 年里,还没有出现任何先进的技术让我们敢于取代基于文本的开发。

作为一名软件开发 CTO,虽然我认为各种“无代码”工具非常有价值,但必须谨慎部署。它们不是软件开发的万能包,很可能使情况变得更糟而不是更好。

对我来说,最理想的用户是“超级用户”:那些已经非常熟练的 IT 用户,他们可能会设计出更好的工具,给他们一个交付的环境是极其重要的,但这应该是我们技术人员的共同努力——“有/无代码”双方不应该对立。

原文:The 'No Code' Delusion

链接:https://www.alexhudson.com/2020/01/13/the-no-code-delusion/

作者:Alex Hudson,Fractional CIO/CTO at Freeman Clarke

译者:风车云马

【END】

热 文 推 荐 

春晚亲民,快手上行:探秘春晚红包的另一种打开方式

解析春运玄学:携程飞猪去哪儿们的抢票加速包,到底灵不灵?

☞盘点 12 款让开发效率“飞起”的 VS Code 插件

☞中科院回应木兰语言造假:当事人已停职;中国软件业务收入百强:华为蝉联十八冠;Ionic 5.0.0-beta.5 发布|极客头条

☞悲痛!临近年关,一位 IT 创业者自杀,曾卖房给员工发工资

☞回家的票抢上了吗?聊聊12306为什么时不时要崩一下

☞小网站的容器化(上)

你觉得无代码开发靠谱么?

无代码开发究竟是不是伪需求?相关推荐

  1. 无代码开发到底是不是伪需求?

    互联网行业的准入门槛正在降低,无代码/低代码工具因其快速便捷的操作,受到越来越多人的认可. 无代码/低代码开发是将已有代码的可视化模块拖放到工作流中以创建应用程序的过程.用户通过图形界面中,像组装乐高 ...

  2. 从“冰山理论”看无代码开发与用户的科学分工

    冰山理论是美国萨提亚家庭治疗中的重要理论,实际上是一个隐喻,它指一个人的"自我"就像一座冰山一样,我们能看到的只是表面很少的一部分--行为,而更大一部分的内在世界却藏在更深层次,不 ...

  3. 旧瓶装“新酒”?无代码开发是炒作噱头,还是大势所趋?

    无代码也能进行软件开发吗?如果这是在20世纪,你提出这样一个问题,肯定会被当成"异类". 但现在不同了,现在是"实践求真知"的21世纪,IT界任何新奇技术,只要 ...

  4. 低代码开发平台_什么是低代码和无代码开发平台?

    低代码/无代码开发平台是一种可视化软件开发环境,允许公民开发人员拖放应用程序组件,将它们连接在一起并创建移动或Web应用程序.这种模块化方法使专业开发人员可以免除他们逐行编写代码的需要,从而更快地构建 ...

  5. 数睿数据、艾瑞咨询联合发布《2021年中国企业级无代码开发白皮书》

    在中国企业软件开发这个领域,可以做的事情还有很多,唯一的限制可能就是想象力.有了无代码开发的能力,业务人员的创造力和可以想象的空间将不再受约束.近期,数睿数据.艾瑞咨询联合发布<2021年中国企 ...

  6. 程序员该如在低代码和无代码开发中抉择?

    [CSDN编者按]"低代码开发"旨在开发人员可以通过编写少量代码就可以快速生成应用程序的一种方法. "无代码"开发平台是为那些不知道也不需要知道任何实际的编程语 ...

  7. 如何在钉钉上开发自己的应用_对企业来说无代码开发平台是否安全

    基于十年来的行业探索经验,比较了管理软件不同开发方式的优缺点,总结了管理软件未来的发展趋势,率先系统阐述了无代码开发的概念:详细说明了无代码开发的广泛应用场景以及给企业数字化转型带来的极高价值,为管理 ...

  8. 无代码开发+MES管理系统双向奔赴,MES进化新方向

           如今,我国的工业企业已经站在了全球最大规模的产业变革的前沿,而MES管理系统是构建智能和数字工厂的关键体系,其重要性是毋庸置疑的.但当前,企业的业务发展速度越来越快,新的.个性化的应用场 ...

  9. 无代码开发大众化,摆脱Excel轻松管理企业数据

    对于少数数据处理专家来说,诞生于1985年的Excel就像一个巨大的游乐园.入门很容易,后续的公式可以说是极其复杂.但是对于更多的人来说,Excel并不能解决所有的问题,很难满足办公协作的需求. 以往 ...

最新文章

  1. HBase编程 API入门系列之put(客户端而言)(1)
  2. 软件项目管理0819:一页项目管理——风险,定性问题和其他评价指标
  3. 数据挖掘:一个end2end完整实例
  4. JVM 类加载机制深入浅出
  5. Redis给PHP安装redis扩展
  6. [Spring5]IOC容器_Bean管理_工厂Bean
  7. oracle_sqlserver和mysql获取表外键的方法_mysql、sqlserver、oracle三种数据库维护索引、外键、字段语法总结...
  8. bash脚本 文件_如何使用Bash脚本来管理从AWS S3存储桶下载和查看文件
  9. python实现中撤销上一步的代码mac_一个“MacBook”新手的Python“笨办法”自学之旅 #第六章:常用的简易Python命令、符号、代码、格式化字符串...
  10. Go语言如何操纵Kafka才能保证消息不丢?
  11. SQL查询是从Select开始的吗?
  12. pg数据库的基本操作
  13. JS+html+css实现的一个小小的贪吃蛇游戏
  14. keyshot渲染玻璃打光_keyshot打光技巧,教你如何制作汽车自由式布光效果
  15. C++中的sort函数排序(快速排序)
  16. 如何恢复移动硬盘数据删除的文件
  17. ROS2机器人笔记20-11-29
  18. 【论文阅读】Learning Effective Road Network Representation with Hierarchical Graph Neural Networks
  19. Think Translate - 隐私条款
  20. AutoCAD 2010教程

热门文章

  1. [BZOJ2502]清理雪道
  2. 关于《侏罗纪世界》你应该知道的18件事
  3. [Linux 性能检测工具]IOSTAT
  4. 去掉IE上的 单击以激活和使用此控件 提示
  5. 百度地图的一个有价值的应用
  6. cv2作图cv2.polylines,cv2.fillPoly,cv2.fillConvexPoly多边形时需要注意的地方
  7. 力扣--220存在重复I-III
  8. 【图像处理】彩色图像处理(Color Image Processing)
  9. Tensorflow中与张量形状有关的操作
  10. oracle last_day比较,Oracle的LAST_DAY函数