2023年7月9日发(作者:)
什么是低代码(Low-Code)?⼀ 前⾔如果选择⽤⼀个关键词来代表即将过去的2020年,我相信所有⼈都会认同是“新冠”。疫情来得太快就像龙卷风,短短数⽉就阻断了全世界范围内⽆数⼈与⼈之间的物理连接。但好在,我们已经全⾯迈⼊互联⽹时代:N95⼝罩再厚,也阻挡不了信息⽐特流的顺畅流通(宅男:B站依然⾹);居家隔离再久,也妨碍不了钉钉消息的准时送达(社畜:⼯作依然苦)。逍遥⼦在9⽉份的云栖⼤会上说:“新技术代表的新⽣产⼒,⼀定是我们全速战胜疫情、开创未来最好的原动⼒。” 那么在后疫情时代,究竟需要什么样的新技术,才能真正解放IT⽣产⼒,加速社会数字化转型,Make The World Great Again?我认为是低代码(Low-Code)。基于经典的可视化和模型驱动理念,结合最新的云原⽣与多端体验技术,低代码能够在合适的业务场景下实现⼤幅度的提效降本,为专业开发者提供了⼀种全新的⾼⽣产⼒开发范式(Paradigm Shift)。另⼀⽅⾯,低代码还能让不懂代码的业务⼈员成为所谓的平民开发者(Citizen Developer),弥补⽇益扩⼤的专业⼈才缺⼝,同时促成业务与技术深度协作的终极敏捷形态(BizDevOps)。本⽂将重点介绍低代码相关背景知识,包括低代码的定义与意义、相关概念、⾏业发展等,期望能帮助⼤家更好地认识与理解低代码这个新兴领域。⼆ 什么是低代码“Low-Code”是什么?如果你是第⼀次听说,没准也会跟我当年从⽼板⼝中听到这个词后的内⼼戏⼀样:啥?“Low-Code”?“Code”是指代码我知道,但这个“Low”字是啥意思?不会是⽼板发现我最近赶⼯写的代码很丑很“Low”吧... 想多了,⽼板怎么可能亲⾃review代码呢。那难道是指,“Low-level programming”⾥的“Low”?⽼板终于发现让我等编程奇才整天堆Java业务代码太浪费,要派我去闭关写⼀个⾼性能C语⾔⽹络库... 显然也不是,⽼板哪能有这技术情怀呢。那到底是什么意思?作为⼀名搜商⽐情商还⾼的程序员,能问Google的绝不会问⽼板。于是我⼀顿操作后,不假思索地点开了第⼀条搜索结果。果不其然,这是⼀条充满⾃由芳⾹只有翻墙才能闻到的Wikipedia词条:Low-code development platform。Wikipedia定义从Wiki的这段定义中,我们可以提炼出⼏个关键信息:低代码开发平台(LCDP)本⾝也是⼀种软件,它为开发者提供了⼀个创建应⽤软件的开发环境。看到“开发环境”⼏个字是不是很亲切?对于程序员⽽⾔,低代码开发平台的性质与IDEA、VS等代码IDE(集成开发环境)⼏乎⼀样,都是服务于开发者的⽣产⼒⼯具。与传统代码IDE不同的是,低代码开发平台提供的是更⾼维和易⽤的可视化IDE。⼤多数情况下,开发者并不需要使⽤传统的⼿写代码⽅式进⾏编程,⽽是可以通过图形化拖拽、参数配置等更⾼效的⽅式完成开发⼯作。Forrester定义顺着Wiki的描述还能发现,原来“Low-Code”⼀词早在2014年就由Forrester提出了,它对低代码开发平台的始祖级定义是这样的:相⽐Wiki的版本,这个定义更偏向于阐明低代码所带来的核⼼价值:低代码开发平台能够实现业务应⽤的快速交付。也就是说,不只是像传统开发平台⼀样“能”开发应⽤⽽已,低代码开发平台的重点是开发应⽤更“快”。更重要的是,这个快的程度是颠覆性的:根据Forrester在2016年的调研,⼤部分公司反馈低代码平台帮助他们把开发效率提升了5-10倍。⽽且我们有理由相信,随着低代码技术、产品和⾏业的不断成熟,这个提升倍数还能继续上涨。低代码开发平台能够降低业务应⽤的开发成本。⼀⽅⾯,低代码开发在软件全⽣命周期流程上的投⼊都要更低(代码编写更少、环境设置和部署成本也更简单);另⼀⽅⾯,低代码开发还显著降低了开发⼈员的使⽤门槛,⾮专业开发者经过简单的IT基础培训就能快速上岗,既能充分调动和利⽤企业现有的各⽅⾯⼈⼒资源,也能⼤幅降低对昂贵专业开发者资源的依赖。低代码核⼼能⼒基于上述的定义和分析,不难总结出如下这3条低代码开发平台的核⼼能⼒:全栈可视化编程:可视化包含两层含义,⼀个是编辑时⽀持的点选、拖拽和配置操作,另⼀个是编辑完成后所及即所得(WYSIWYG)的预览效果。传统代码IDE也⽀持部分可视化能⼒(如早年Visual Studio的MFC/WPF),但低代码更强调的是全栈、端到端的可视化编程,覆盖⼀个完整应⽤开发所涉及的各个技术层⾯(界⾯/数据/逻辑)。全⽣命周期管理:作为⼀站式的应⽤开发平台,低代码⽀持应⽤的完整⽣命周期管理,即从设计阶段开始(有些平台还⽀持更前置的项⽬与需求管理),历经开发、构建、测试和部署,⼀直到上线后的各种运维(e.g. 监控报警、应⽤上下线)和运营(e.g. 数据报表、⽤户反馈)。低代码扩展能⼒:使⽤低代码开发时,⼤部分情况下仍离不开代码,因此平台必须能⽀持在必要时通过少量的代码对应⽤各层次进⾏灵活扩展,⽐如添加⾃定义组件、修改主题CSS样式、定制逻辑流动作等。⼀些可能的需求场景包括:UI样式定制、遗留代码复⽤、专⽤的加密算法、⾮标系统集成。不只是少写代码回到最初那个直击⼼灵的⼩⽩问题:Low-Code中的“Low”,到底是啥意思?答案已经显⽽易见:既不是指抽象程度很低(相反,低代码开发⽅式的抽象程度要⽐传统编程语⾔⾼⼀个level),也不是指代码很low(也相反,低代码所⽣成的代码⼀般都经过精⼼维护和反复测试,整体质量强于⼤部分⼿写代码),⽽是单纯的“少写代码” —— 只在少数需要的情况下才⼿写代码,其他⼤部分时候都能⽤可视化等⾮代码⽅式解决。再往深⼀点⼉看,低代码不只是少写代码⽽已:代码写得少,bug也就越少(正所谓“少做少错”),因此开发环节的两⼤⽀柱性⼯作“赶需求”和“修bug”就都少了;要测的代码少了,那么测试⽤例也可以少写不少;除了开发阶段以外,平台还覆盖了后续的应⽤构建、部署和管理,因此运维操作也更少了(Low-Code → Low-Ops)。然⽽,少并不是最终⽬的:如果单纯只是想达到少的效果,砍需求减⼈⼒、降低质量要求也是⼀样的。低代码背后的哲学,是少即是多(Less is More),或者更准确说是多快好省(Do More with Less) —— 能⼒更多、上线更快、质量更好,成本还更省,深刻践⾏了阿⾥“既要,⼜要,还要”的价值观精髓。平台的职责与挑战上⾯说的是低代码给开发者提供的能⼒与吸引⼒,那么作为服务的提供⽅与应⽤的承载者,低代码开发平台⾃⾝应该承担怎样的职责,其中⼜会遇到多⼤的挑战?是否就⼀定要如阿⾥云所主张的那样,“把复杂留给⾃⼰,把简单留给别⼈”?虽然这句话听起来很深明⼤义,但不知道⼤家有没有想过,为什么我们⼀定要抱着复杂不放,平⽩⽆故给⾃⼰找事?就不能直接⼲掉复杂,也给咱阿⾥云⾃⼰的员⼯留点简单吗?是⼯作太容易就体现不出来KPI价值了,还是家⾥的饭菜不如公司的夜宵⾹?冥思苦想许久后,我从热⼒学第⼀定律中找到了答案:开发⼀个应⽤的总复杂度是恒定的,只能转移⽽不可能凭空消失。要想让开发者做的更少,安⼼享受简单的快乐,那么平台⽅就得做的更多,默默承担尽可能多的复杂度。就像⼀个满⾝腱⼦⾁的杂技男演员,四平⼋稳地托举着在⾼处旋转与跳跃的⼥搭档;上⾯的⼈显得越轻盈越毫不费⼒,下⾯的⼈就得越稳重越⽤尽全⼒。当然,不是说上⾯的⼥演员就很轻松没压⼒,只是他们各⾃的分⼯不同,所承担的复杂度也不⼀样。根据《⼈⽉神话》作者Fred Brooks的划分,软件开发的复杂度可以划分为本质复杂度(Essential complexity )和偶然复杂度(Accidental complexity)。前者是解决问题时固有的最⼩复杂度,跟你⽤什么样的⼯具、经验是否丰富、架构好不好等都⽆关,⽽后者就是除此之外在实际开发过程中引⼊的复杂度。通常来说,本质复杂度与业务要解决的特定问题域强相关,因此这⾥我把它称为更好理解的“业务复杂度”;这部分复杂度不是任何开发⽅法或⼯具能解决的,包括低代码。⽽偶然复杂度⼀般与开发阶段的技术细节强相关,因此我也相应把它称为“技术复杂度”;⽽这⼀部分复杂度,恰好就是低代码所擅长且适合解决的。为开发者尽可能屏蔽底层技术细节、减少不必要的技术复杂度,并⽀撑其更好地应对业务复杂度(满⾜灵活通⽤的业务场景需求),这是⾝为⼀个低代码开发平台所应该尽到的核⼼职责。在尽到上述职责的同时,低代码开发平台作为⼀个⾯向开发者的产品,还需要致⼒于为开发者提供简单直观的极致开发体验。这背后除了巨⼤的⼯作量,还得能在“强⼤”和“易⽤”这两个很难两全其美的⽭盾点之间,努⼒找到⼀个符合⾃⼰产品定位与⽬标客户需求的平衡点—— 这也许是设计⼀个通⽤低代码开发平台所⾯临的最⼤挑战。三 低代码相关概念对⽐纯代码(Pro-Code / Custom-Code)“纯代码”可能算是我杜撰的⼀个词,更常见的说法是专业代码(Pro-Code)或定制代码(Custom-Code);但意思都⼀样,就是指传统的以代码为中⼼(Code-Centric)的开发模式。之所以我选择⽤“纯代码”,是因为如果⽤“专业代码”会显得似乎低代码就不专业了⼀样,⽽⽤“定制代码”⼜容易让⼈误解成低代码⽆法⽀持定制的⾃定义代码。当然,更准确的称谓我认为是“⾼代码”(与低代码恰好对应,只是名字太难听,被我嫌弃了...),因为即便是使⽤传统的代码IDE,有些开发⼯作也⽀持(甚⾄更适合)以⾮代码⽅式完成,⽐如:iOS端开发时使⽤的SwiftUI界⾯设计器、服务端开发数据库应⽤时使⽤的PowerDesigner建模⼯具。不过这部分可视化⼯作在传统开发模式下只是起辅助作⽤,最后通常也是⽣成开发者可直接修改的代码;开发者仍然是以代码为中⼼来开展主要⼯作。低代码与纯代码之间的关系,其实跟视频和⽂章之间很像:低代码就像是现代的“视频”,⼤部分内容都由直观易理解、表达能⼒强的图⽚组成,因此更容易被⼤众所接受。但与此同时,视频也不是死板得只能有图⽚,完全可以添加少量⽂字(如字幕、标注)来弥补图⽚表达不够精确的问题。BTW,关于“图”和“⽂字”之间的辩证关系,可以进⼀步参考《架构制图:⼯具与⽅法论》[1]这篇⽂章中的相关描述。纯代码则更像是传统的“⽂章”,虽然很久以来都⼀直是信息传播的唯⼀媒介,但⾃从视频技术诞⽣以及相应软硬件基础设施的普及以来,便逐渐开始被抢⾛了风头。如今,视频已成为⼤部分⼈获取信息的主要渠道(从电视电影到B站抖⾳),⽽经常读书读⽂章的⼈却越来越少。但不可否认的是,⽂章依然有它存在的意义和受众(不然我也不会费这劲敲这么多字了),即使“市场份额”⼀直在被挤压,但永远会有它⽴⾜的空间。如果按上⾯这种类⽐关系推导,低代码未来也会遵循与视频类似的发展轨迹,超越纯代码成为主流开发模式。Gartner的预测也表达了相同的观点:到2024年,所有应⽤程序开发活动当中的65%将通过低代码的⽅式完成,同时75%的⼤型企业将使⽤⾄少四种低代码开发⼯具进⾏应⽤开发。但同样地,就像是视频永远⽆法取代⽂章⼀样,低代码也永远⽆法彻底取代纯代码开发⽅式。未来低代码和纯代码⽅式将以互补的形态长期共存,各⾃在其所适合的业务场景中发光发热。在后⾯的“低代码业务场景”章节,会详细列出哪些场景在现阶段更适合⽤低代码模式开发。零代码(Zero-Code / No-Code)从分类的完备性⾓度来看,有“纯代码”⾃然也应该有完全相反的“零代码”(也称为“⽆代码”)。零代码就是完全不需要写代码的应⽤开发平台,但这并不代表零代码就⽐低代码更⾼级和先进,它只是做了⼀个更极端的选择⽽已:彻底拥抱简单的图形可视化,完全消灭复杂的⽂本代码。选择背后的原因是,零代码开发平台期望能尽可能降低应⽤开发门槛,让⼈⼈都能成为开发者(注意:开发 ≠ 写代码),包括完全不懂代码的业务分析师、⽤户运营,甚⾄是产品经理(不懂装懂可不算懂)。即便是专业开发者,在技术分⼯越来越精细的趋势下(前端/后端/算法/SRE/数据分析..),也很难招到⼀个能独⽴开发和维护整套复杂应⽤的全栈⼯程师。但零代码可以改变这⼀切:⽆论是Java和JavaScript傻傻分不清楚的技术⼩⽩,还是精通深度学习但没时间学习Web开发的算法⼤⽜,都可以通过零代码实现⾃⼰的技术梦或全栈梦。“改变世界的idea已有,就差⼀个程序员了”,这句玩笑话或许真的可以成真;哦不,甚⾄都⽤不着程序员,有idea的⼈⾃⼰就能上。当然,所有选择都要付出代价,零代码也不例外。完全抛弃代码的代价,就是平台能⼒与灵活性受限:⼀⽅⾯,可视化编辑器的表达能⼒远不及图灵完备的通⽤编程语⾔,不引⼊代码根本没法实现灵活的定制与扩展(当然,理论上也可以做成Scrach/Blockly那样的图形编程语⾔,但那样不过是换⼀种形式在⼿写代码⽽已)。另⼀⽅⾯,由于⽬标受众是⾮专业开发⼈员,平台能⽀持的操作会更趋于“傻⽠化”(e.g. 页⾯只⽀持⼤块业务组件的简单堆叠,不⽀持细粒度原⼦组件和灵活的CSS布局定义),同时也只会透出相对“亲民化”的模型和概念(e.g. 使⽤“表格”表⽰数据,⽽不是⽤“数据库”),⽆法⽀撑强⼤专业的底层开发原语和编程理念。虽然零代码与狭义上的低代码有着上述明显差异,但从⼴义上来说,零代码可以当作低代码的⼀个⼦集。Gartner在其相关调研报告中,就是将“No Code”划在了范围更⼴的低代码应⽤平台“LCAP”(Low-Code Application Platform)中。⽽当前市⾯上很多通⽤的低代码开发平台,也都兼具⼀定程度的零代码能⼒;⽐如低代码领域领头⽺Mendix,既提供了简单易⽤的零代码Web IDE - Mendix Studio,也包括⼀个功能更强⼤的低代码桌⾯IDE - Mendix Studio Pro。HpaPaaS(⾼⽣产⼒应⽤PaaS)上⽂提到,“Low-Code”⼀词是拜Forrester所赐。作为同样是国际知名调研机构(a.k.a 造词⼩能⼿)的Gartner,显然不会轻易在这场可能决定低代码领域江湖地位的新概念作词⼤赛中认输,于是也于2017年发明了“HpaPaaS”(High-productivity applicationPlatform as a Service)这个听上去更⾼⼤上的缩写词。按照Gartner的定义,HpaPaaS是⼀种⽀持声明式、模型驱动设计和⼀键部署的平台,提供了云上的快速应⽤开发(RAD)、部署和运⾏特性;这显然与低代码的定义如出⼀辙。但事实证明,名字起得太专业并不见得是好事,“HpaPaas”最终还是败给了起源更早、更接地⽓也更顺⼝的“Low-Code”:从2019年开始,Gartner在其相关调研报告中也开始全⾯采⽤“Low-Code”⼀词(如LCAP),亲⼿为“HpaPaaS”打上了 @deprecated 印记。图源:/business-with-heart/difference-saas-iaas-paas-apaas-hpapaas值得补充的是,“HpaPaaS“这个词也并⾮横空出世,⽽是传承⾃更早之前Gartner提出的“aPaaS”,它俩之间的关系是:HpaPaaS只是aPaaS的⼀个⼦类;除了HpaPaaS这种通过低代码实现的⾼⽣产⼒应⽤开发平台以外,aPaaS还包括⾯向纯代码的传统应⽤开发平台(High-control aPaaS,即可控度更⾼的纯代码开发⽅式)。不值得但就想⼋卦⼀下的是,“aPaaS”这个词也⾮凭空捏造,⽽是与云计算的兴起渊源颇深。相信各位云道中⼈都已猜到,aPaaS与IaaS/PaaS/SaaS这些云计算远古概念是⼀脉相承的:aPaaS介于PaaS和SaaS之间,相⽐PaaS提供的服务更偏应⽤,但⼜不像SaaS⼀样提供现成的软件服务(更详细的说明可参考配图来源⽂章)。四 为什么需要低代码低代码是什么可能并没那么重要,毕竟在这个信息爆炸的世界,永远不缺少新奇⽽⼜短命的事物。⼤部分所谓的新技术都只是昙花⼀现:出现了,被看到了;⼤部分⼈“哦”了⼀声,已阅但表⽰不感兴趣;⼩部分⼈惊叹于它的奇思妙想,激动地点了个赞后,回过头来该⽤什么还是什么。真正决定新技术是否能转化为新⽣产⼒的,永远不是技术本⾝有多么优秀和华丽,⽽是它是否真的被需要,即:为什么需要低代码?如果⽤不同的主语填充上⾯这个问句(冷知识:这叫做“延迟主语初始化”),可以更全⾯地看待这个问题:为什么「市场」需要低代码?在这个⼤爷⼤妈都满嘴“互联⽹+”和“数字化转型”的时代,企业越来越需要通过应⽤(App)来改善企业内部的信息流转、强化与客户之间的触点连接。然⽽,诞⽣还不太久的IT信息时代,也正⾯临着与我国社会主义初级阶段类似的供需关系⽭盾:落后的软件开发⽣产⼒跟不上⼈民⽇益增长的业务需求。Gartner预测,到2021年应⽤开发需求的市场增长将⾄少超过企业IT交付能⼒的5倍。⾯对如此巨⼤的IT缺⼝,如果没有⼀种⾰命性的“新⽣产⼒”体系,很难想象仅凭现有传统技术体系的发展延续就能彻底解决问题。⽽低代码技术正是带着这样的使命⽽降临,期望通过以下⼏个⽅⾯彻底⾰新应⽤开发⽣产⼒,拯救差⼀点就要迈⼊⽔深⽕热的IT世界:提效降本 & 质量保障虽然软件⾏业⼀直在⾼速发展,新的语⾔、框架和⼯具层出不穷,但作为从业者我们不得不承认:软件开发仍处于⼿⼯作坊阶段,效率低、⼈⼒成本⾼、质量不可控。项⽬延期交付已成为⾏业常态,⽽瓶颈⼏乎总是开发⼈员(对机器能解决的问题都不是问题);优秀的开发⼈才永远是稀缺资源,还贼贵;软件质量缺陷始终⽆法收敛,线上故障频发资损不断。相⽐⽽⾔,传统制造业经过⼏百年⼯业⾰命的发展,⼤部分早已摆脱了对“⼈”的强依赖:从原料输⼊到制品输出,中间是各种精密仪器和⾃动化流⽔线的稳定⽀撑,真正实现⽣产的标准化和规模化。虽然信息化号称是⼈类的第三次⼯业⾰命,但以软件⾏业⽬前的状况,远远还没到达成熟的“⼯业化”阶段。所以,亲爱的程序员朋友,当你与前端联调了⼀上午接⼝,⼜与产品撕逼了⼀下午需求,再与⾃⼰的bug抗争了⼀整晚,好不容易遁⼊梦乡⼜被⼀连串报警短信吵醒时,是否有抬头对着星空憧憬过:“I have that one day,软件开发也能像⼯业制品⼀样,批量流⽔化⽣产,稳定⾼效没烦恼。” 事到如今,不管你有没有意识到,这个憧憬正在慢慢变成现实。是的,低代码正在将应⽤软件开发过程⼯业化:每个低代码开发平台都是⼀个技术密集型的应⽤⼯⼚,所有项⽬相关⼈员都在同⼀条产线内紧密协作。开发主⼒不再是熟知for循环⼀百种写法的技术Geek,⽽是⼀群⼼怀想法业务sense⼗⾜的应⽤Maker。借助应⽤⼯⼚中各种成熟的基础设施、现成的标准零件、⾃动化的装配流⽔线,开发者只需要专注于最核⼼的业务价值即可。即便是碰到⾮标需求,也可以随时⾃⼰动⼿,⽤最灵活的⼿⼯定制(代码)⽅式来解决各种边⾓问题。扩⼤应⽤开发劳动⼒通过让⼤部分开发⼯作可以仅通过简单的拖拽与配置完成,低代码(包括零代码)显著降低了使⽤者门槛,让企业能够充分利⽤前⾯所提到的平民开发者资源。部分纯零代码需求场景下,低代码还能让业务⼈员实现⾃助式(self-service)应⽤交付,既解决了传统IT交付模式下的任务堆积(backlog)问题,避免稀缺的专业开发资源被⼤量简单、重复性的应⽤开发需求所侵占,也能让业务⼈员真正按⾃⼰的想法去实现应⽤,摆脱交由他⼈开发时不可避免的桎梏。⾄此,应⽤开发能⼒不再是少数专业开发者的专利和特权,且今后所需要的技能门槛与拥有成本也会越来越低,真正实现所谓的“技术民主化”(democratization of technology)。加强开发过程的沟通协作多⽅调查结果显⽰,软件项⽬失败的最主要原因之⼀就是缺乏沟通(poor communication)。传统开发模式下,业务、产品、设计、开发、测试与运维⼈员各司其职,且各有⼀套领域内的⼯具和语⾔,长久以来很容易形成⼀个个“竖井”(silos),让跨职能的沟通变得困难⽽低效。这也是为什么当前热门的敏捷开发和DevOps都在强调沟通(前者是协同Biz与Dev,⽽后者是协同Dev和Ops),⽽经典的DDD领域驱动设计也主张通过“统⼀语⾔”来减少业务与技术⼈员之间的沟通不⼀致。有了低代码后,这⼀状况将得到根本改善:上述各⾓⾊都可以在同⼀个低代码开发平台上紧密协作(甚⾄可以是同⼀个⼈),这种全新的协作模式不仅打破了职能竖井,还能通过统⼀的可视化语⾔和单⼀的应⽤表⽰(页⾯/数据/逻辑),轻松对齐项⽬各⽅对应⽤形态和项⽬进度的理解,实现更终极的敏捷开发模式,以及在传统DevOps基础之上更进⼀步的BizDevOps[2]。统⼀开发平台下的聚合效应低代码尝试将所有与应⽤开发相关活动都收敛到同⼀个平台(one platform)上后,将会产⽣更多⽅⾯的聚合效应与规模收益:⼈员聚合:除了上⼀点所提到的各职能⾓⾊紧密协作以外,⼈员聚合到统⼀的低代码开发平台进⾏作业后,还能促进整个项⽬流程的标准化、规范化和统⼀化。应⽤聚合:⼀⽅⾯,新应⽤的架构设计、资产复⽤、相互调⽤变得更容易;另⼀⽅⾯,各应⽤的数据都天然互通,同时平台外数据也能通过集成能⼒进⾏打通,彻底消除企业的数据孤岛问题。⽣态聚合:当低代码开发平台聚合了⾜够多的开发者和应⽤后,将形成⼀个巨⼤的、连接⼀切、有⽆限想象⼒的⽣态体系,彻底放飞低代码的价值。为什么「这个时代」才需要低代码?如果你了解过市⾯上各种低代码产品,不难发现其实这个领域的许多玩家在低代码概念诞⽣之前就已经存在了,⽐如:低代码领域的另⼀个巨头OutSystems,早在2001年就已经创⽴;⽽去年也被Forrester评为低代码⾏业leader之⼀的FileMaker,更是诞⽣于遥远的1985年(正好35岁,似乎在疯狂暗⽰什么)。那么,如果低代码像前⾯说的那么好,为什么以前没有⽕起来呢?从技术和业务两个⾓度看,可以归纳为以下原因:技术成熟度不⾜低代码底层的各项核⼼技术(可视化、模型驱动、RAD、)都已经有漫长的发展历史,看上去似乎只是新瓶装旧酒。然⽽理智的⼈都知道,任何技术都会遵循所谓的“技术成熟度曲线”(The Hype Cycle),不可能刚⼀诞⽣就跳过发育直接秀翻全场,被⼤规模采纳和投⼊⽣产。以模型驱动技术为例,虽然⼗⼏年前就已经有体系化的理论研究(e.g. MDA)和配套⼯具(e.g. EMF),但在当时的技术背景下,由于能⼒不完备、过于理想化、技术门槛⾼等原因,⼀直没能在⼯业界⾛向主流。⽽如今这个时代,⽀撑低代码的那些“⽼”技术都已经过长时间的发展酝酿与市场检验,⽽另⼀些完美互补的“新”技术(e.g. 云原⽣、响应式Web)也在飞速发展和⾛向成熟,是时候通过“低代码”这个新酒瓶重新包装上市,为亟需新⽣产⼒的传统IT市场带来⼀场真⾹之旅了。业务收益不明显即使⼗⼏年前的低代码技术已经⾜够成熟,也⼀定不会在当年的应⽤开发市场上产⽣现在这样的影响⼒。为什么?因为技术都是为业务服务的,⽽当时的应⽤开发业务需求可⽐现在简单多了:没有如今的多渠道(Multi-channel)、多样化体验(Multi-experience)和各种集成与定制需求,也不会奢求如今已成为企业级应⽤标配的弹性、分布式和⾼可⽤,更是缺乏快速变化的IT业务场景来推动持续集成与快速交付。虽然低代码可以完美解决上述所有问题(e.g. 多端应⽤⽣成、云原⽣架构、API集成能⼒),但放在当年的市场和业务背景下,加上前⾯所说的技术不成熟度,整体的投⼊产出⽐会很低,不⾜以让企业⼤⾯积采纳低代码解决⽅案。⽽如今这个时代,企业都快被新技术带来的能⼒和收益“惯坏了”,动不动就是:我想做⼀个送菜应⽤。⽤户端?安卓、iOS、H5、⼩程序都来⼀套。运营端?⼀般都在电脑上看,但记得⼿机上也得适配啊。服务端?上云,必须的。哦,我听技术合伙⼈说现在流⾏多云架构,也给我整⼀套哈。运维还要钱?啥是运维?应⽤有了不就能⽤了嘛,运维还要花我钱?你当投资者给我的钱是⼤风刮来的啊!如果⽤传统的开发模式,这么全套下来的⼯时与报价,可能早就吓跑了这群跟产品经理⼀样天真可爱的⼈;但现代化的低代码技术,可以圆了上⾯这位创业者的卖菜梦,⽤⽩菜⼀般的价格,实现⽩粉⼀样的价值。当年的程维如果能⽤上现在的低代码,第⼀版的滴滴App也就不⾄于被外包做得乌烟瘴⽓直接报废了(⾄少能多扛⼀阵⼦...)。为什么「专业开发者」也需要低代码?虽然零代码确实是设计给⾮专业开发者⽤的,但其所能⽀撑的业务场景确实有限,⽆法真正⾰新传统开发模式,替代那些仍需专业开发者参与的复杂业务场景。⽽狭义上的低代码却有潜⼒做到这⼀点,因为它天⽣就是为专业开发者⽽量⾝定制的。Gartner最近的⼀项调研报告显⽰,“66%的低代码开发平台⽤户都是企业IT部门的专业开发者”。这充分说明了,专业开发者⽐平民开发者更需要低代码。屏幕前⼀批穿格⼦衬衫的同学要发问了:“低代码都不怎么写代码了,怎么能算是为我们程序员服务呢?”。虽然程序员讨厌重复⾃⼰,但重要的事情还是得多说⼀遍:开发 ≠ 写代码。1万年前蹲在洞⽳⾥的原始⼈,在⽤⼩⽯⼦画远古图腾;100年前坐在书桌前的徐志摩,在⽤钢笔给林徽因写情书;⽽今天趴在屏幕前的很多⼈,相信都已经开始⽤上⼿写板或iPad涂涂写写了。千百年来,⼈类使⽤的⼯具⼀直在演进,但所从事活动的本质并没有多⼤改变。⽆论是⽤⼩⽯⼦还是⼩⿏标,写作绘画的本质都是创造与表达,最终作品的好坏并不取决于当时你⼿中拿着什么;同样地,应⽤开发的本质是想法和逻辑,最终价值的⾼低也不取决你实现时是⽤的纯代码还是低代码。⽽相⽐纯代码⽽⾔,低代码极有可能成为更好的下⼀代⽣产⼒⼯具:减少不必要的⼯作量可视化拖拽与参数配置的极简开发模式,结合模型驱动的代码⾃动⽣成机制,可以消灭绝⼤部分繁琐和重复的boilerplate代码;⼀站式的部署和运维管理平台,⽆需⾃⼰搭建CI/CD流⽔线、申请环境资源、配置监控报警;⼀次搭建同时⽣成、构建和发布多端应⽤,免去⼈⼯同步维护多个功能重复的端应⽤;开箱即⽤的组件库、模板库、主题库、连接器等,让最⼤化软件复⽤成为可能。总⽽⾔之,低代码能够让专业开发者更专注于创新性、有价值、有区分度的⼯作,⽽不是把宝贵开发时间都耗费在上⾯那些不必要的⾮业务核⼼⼯作上。强⼤的平台能⼒⽀撑虽然上⾯列的技术⽀撑性⼯作并不直接产⽣业务价值,但却会直接影响业务的性能、成本、稳定性、安全性、可持续发展能⼒等。有远见的企业,绝不允许牺牲这些重要指标,来换取短暂的业务加速。低代码开发平台深知这⼀点,因此在简化和屏蔽底层技术细节的同时,也会尽可能把⾃⼰所cover的部分做到最好(⾄少能和纯代码开发⽅式⼀样好),包括但不限于:现代化的技术架构和实现:现代化的低代码开发平台,在⽀撑⽤户应⽤时所选择的技术架构与实现⽅案,也会是现代化且符合业界最佳实践的,例如,前端基于主流的HTML5/CSS3标准和React框架,后端基于成熟的Java语⾔、SpringBoot框架和MySQL数据库,部署环境基于云原⽣的Docker镜像、CI/CD流⽔线、K8s集群和Service Mesh技术(相关知识可参考《正确⼊门Service Mesh:起源、发展和现状》)。零成本的技术升级和维护:低代码的⾼维抽象开发⽅式,让应⽤的核⼼业务逻辑与底层技术细节彻底解耦。开发者在⼤部分情况下都不需要关⼼底层技术选型,同时也⽆需亲⾃跟进这些技术的版本升级与漏洞修复,免费享受与时俱进的技术红利和应⽤安全性提升。即便遇到某些底层技术或⼯具需要进⾏彻底更换(⽐如不再维护的开源项⽬),开发者也完全不必感知;技术迁移再费劲再难搞,平台⾃⼰努⼒就⾏,对开发者来说只要服务⼀直在线,岁⽉就依然静好;事后可能还会惊喜地发现,应⽤访问突然就变得更快了,仿佛冥冥中⾃有天助,感激上苍和低代码。⼀体化⽣态能⼒复⽤复⽤(Reuse)是提升软件开发效率和⼯程质量的最有效途径。传统的代码开发模式下,开发者可以通过提取公共类/函数、引⽤共享库、调⽤外部API服务、沉淀代码⽚段和模板等⽅式实现复⽤。在低代码的世界⾥,平台也可以提供对应的多层次多粒度复⽤⼿段,⽐如页⾯组件库、逻辑函数库、应⽤模板库等。但更重要的是,低代码平台还可以充分发挥其⼀体化的⽣态优势,提供强⼤易⽤的可复⽤能⼒(资产)的发现、集成与共享体系:以页⾯组件为例,你可以直接⽤系统组件,也可以在平台⾃带的组件市场上搜索和引⽤更合适的组件,还可以⾃⼰⽤代码开发⼀个⾃定义组件并发布到市场中。平台的⽣态体系越⼤,积累的可复⽤能⼒就越多,应⽤的开发成本也会越低。相⽐⽽⾔,虽然传统代码世界整体⽣态更庞⼤和深厚,但由于各类技术不互通、缺乏统⼀平台与市场、代码集成成本⾼等原因,⼀直以来都没有形成有类似规模潜⼒的⽣态能⼒复⽤体系,导致重复造轮⼦和低⽔平重复建设的现象司空见惯,还美名为“新基建”。说到这⾥,另⼀批裹着冲锋⾐头顶锃亮的同学也忍不住了:“万⼀低代码真的发展起来了,是不是就不需要那么多程序员了啊?上有⽼下有⼩的,同是码农⾝,相煎何太急!”。低代码虽然是⼀场应⽤开发⽣产⼒⾰命,但并不会⾰掉程序员的饭碗。它去掉的只是难懂的编程语法、繁琐的技术细节和⼀切可⾃动化的重复性⼯作,并没有也⽆法去掉应⽤开发最核⼼的东西:严谨的业务逻辑、巧妙的算法设计、良好的⼯程风格等。对于真正的程序员,即使剥去他⼀层⼜⼀层的编程语⾔和⼯具熟练度技能外壳,最终剩下的仍然是⼀个有价值的硬核开发者。当然,如果你坚持要⽤纯粹的写代码⽅式来改变世界,也不⾄于失业。要么,你可以选择那些低代码暂时不太适⽤的领域,⽐如底层系统驱动、3D游戏引擎、⽕箭发射程序;或者,你也可以选择去写低代码中那⼀部分不可或缺的⾃定义代码扩展,为平民开发者提供⾼质量的积⽊。最后,你也完全可以选择为低代码平台本⾝的底层代码添砖加⽡。为什么「我不」需要低代码即使所有⼈都认同上述“为什么要⽤低代码”的理由,但仍不时会有试⽔者跳出来,给⼤家细数“为什么我不需要低代码”。实践出真知没错,⽽且⼤部分质疑背后也都有⼀定道理;但在我看来,更多的可能是主观或⽆意识的偏见。这⾥我列了⼀些对低代码的常见质疑和我个⼈的看法,期望能帮助⼤家看到⼀个更全⾯和客观的低代码。质疑1:低代码平台不好使 “试⽤过⼀些所谓的低代码开发平台,要么能⼒很弱,要么体验太差,只能开发点玩具应⽤。”作为调研过国内外多款低代码产品的深度体验⽤户,我的观点是:不能以偏概全。低代码市场在国内正处于爆发初期,所以许多与低代码只沾⼀点边的产品也都在蹭热点;但它们并不能代表低代码⽬前的业界⽔平和发展⽅向。市⾯上真正成熟的企业级低代码开发平台,完全有能⼒以⾼效的开发⽅式满⾜⼤部分复杂场景的功能需求,以及企业级应⽤所需要的安全、性能、可伸缩等⾮功能需求,这⼀点在国外市场已得到充分验证(不然也不会这么被寄予厚望)。当然,国内市场尚处于鱼龙混杂的混战阶段,遇到真龙的概率很低,但碰上⾦鱼鲤鱼甚⾄⽊头假鱼都在所难免。相信随着时间推移,真正有实⼒和⼝碑的产品都能脱颖⽽出,为⼤家展现低代码该有的样⼦。质疑2:低代低开发不可控 “平台上的各种可视化组件、逻辑动作和部署环境都是⿊盒,如果内部出问题⽆法排查和解决。”作为同样不搞清楚底层原理不舒服斯基的程序员,我更愿意相信:问题只是暂时的。虽然这确实是⽬前使⽤低代码平台时绕不开的⼀个痛点,但并不属于低代码技术本⾝的固有缺陷。计算机领域有⼀句⾄理名⾔:任何问题都可以通过增加⼀个间接的中间层来解决。低代码的思路亦是如此:与当年的操作系统和现在的云平台⼀样,都是想通过建⽴⼀个⿊盒化的中间层抽象来降低开发者的⼯作量与⼼智负担。当然,所有额外增加的中间层都不是完全免费的,低代码也不例外。作为⼀个尚未成熟稳定的新的中间层,低代码必然会出现各种让使⽤者束⼿⽆措的问题,就跟当年的操作系统内核bug、如今的云主机I/O hang⼀样。但历史规律也告诉我们,所有伟⼤的技术最终都会⾛向成熟;只要低代码领域⼀直健康发展,问题总会越来越少,最终降到⼀个绝⼤部分⼈感知不到的范围内。过去萦绕在Windows⽤户⼼中挥之不去的“蓝屏”问题,对如今的新⽤户来说早已不知为何物;今天低代码开发者所遇到的种种“蓝瘦”问题,未来也终将成为被遗忘的历史(谁还没段⿊历史呢)。质疑3:低代码应⽤难维护 “应⽤⼀旦复杂起来,各种复杂逻辑流穿插着⾃定义代码,看不懂也改不动,还不如全⽤代码呢。”作为对软件可维护性深有感触的⽆脑级布道者(见《救⽕必备!问题排查与系统优化⼿册》),我不得不说:⽤低代码开发,也要讲基本法。⼀般来说,⽆论是使⽤低代码开发还是纯代码开发,造成应⽤可维护性低的根本原因往往不在于开发⼯具,⽽是开发者⾃⾝没有去遵循⼀些软件开发的普适原则,⽐如⼯程规范性、命名可读性、DRY/KISS/SOLID原则等。好的低代码平台绝不会阻碍开发者去改善应⽤的可维护性;恰恰相反,还会尽可能提供引导和帮助。以Mendix为例,除了⽀持基本的模型分析与重构(e.g. ⽆⽤模型、对象重命名、⼦逻辑流提取)以外,甚⾄还提供了基于ISO/IEC 25010标准的应⽤质量监控(AQM)能⼒。另⼀⽅⾯,让应⽤变得难以维护的⼀个客观原因也是应⽤本⾝过于复杂,⽽低代码作为⾼度抽象和⾃动化的开发模式,在降低应⽤复杂度⽅⾯是专业的。综合来看,低代码虽然不是能解决⼀切问题的银弹,但更不是会带来更多问题的炸弹:在提⾼应⽤可维护性⽅⾯的上限,⼀定⽐传统开发模式更⾼;但决定应⽤可维护性下限的,依然还是开发者⾃⼰。五 低代码⾏业发展回应质疑的最好⽅式,就是做好你⾃⼰,⽤实际的表现说话。对于⼀个⾏业⽽⾔,判断它当前的表现是否够好,或者未来是否有潜⼒做到更好,可以从以下这三个⽅⾯进⾏衡量:市场规模(蛋糕够不够⼤)、适⽤场景(是否可落地)、竞品状况(有没有被验证过)。市场规模 "Talk is cheap,show me the code money."
—— Linus Starcraft⽂章可以忽悠,但市场不会说谎:Forrester在2015年曾预测过,低代码的市场将从2015年的17亿美元增长⾄2020年的150亿美元。Marketsandmarkets在今年四⽉份的分析报告中预测,低代码的市场将从2020年的130亿美元(估算值,可以看出来与Forrester当年的预测是接近的)增长到2025年的450亿美元(年复合增长率:28.1%)。PS Inteligence在2018年的分析报告中预测,全球的低代码开发平台市场中,亚太地区将在今后五年(2019-2024年)中保持最⾼的增长速度。总结⼀下就是两点:低代码的市场规模⾜够⼤,且⼀直都在⾼速增长。作为亚太地区的经济⼤国与IT强国,中国的低代码市场将会迎来⼀个爆发期,未来⼏年内的增速都会超过全球平均⽔平。适⽤场景理论上来说,低代码是完全对标传统纯代码的通⽤开发模式,应该有能⼒⽀撑所有可能的业务场景。但理论也只是理论,低代码⼀统江湖的梦想尚未照进现实,也不可能完全取代现实。前⽂中提到过,低代码与纯代码⽅式是互补关系,未来也将长期共存,各⾃在其所适合的业务场景中发光发热。同时还需要指出的是,当前阶段的低代码技术、产品和市场都尚未完全成熟,因此部分本来可能很适合⽤低代码来开发的场景,⽬前也只能先⽤纯代码来替代。Gartner在2019年的低代码调研报告中,曾经绘制过⼀张⽤来阐述低代码适⽤场景的“应⽤⾦字塔”:应⽤级别划分:从下往上,分别为⼯作组级(Workgroup Class)、部门级(Departmental Class)、企业级(EnterpriseClass)、可扩展需求极强的企业级(Extreme-Scale Enterprise Class)。容易看出来,它主要的划分维度就是应⽤所⾯向的⽤户基数(基数越⼤,可扩展需求也越⾼)。任务关键性:从下往上,各级别应⽤的任务关键性(Mission Criticality)逐级递增。例如⼀个只在⼯作组内使⽤的后台管理应⽤,⼀般都不会涉及到影响整个企业的关键任务。脱离企业这个视⾓来看,整个软件产业中也有很多通⽤的任务关键型应⽤,⽐如:实时操作系统、航空调度系统、银⾏对账系统。实现复杂度:从下往上,各级别应⽤的复杂度(Complexity)也逐级递增。例如最上层的企业级应⽤,除了功能覆盖⾯⼤导致业务复杂以外,往往还需要满⾜更多苛刻的⾮功能需求,包括但不限于:⽤户体验、性能、可靠性、安全性、可伸缩性、可维护性、兼容性。其他⼀些复杂软件的案例包括:3D游戏界⾯(交互复杂)极其底层的游戏引擎(逻辑复杂)、超⼤型CRM系统(⼀⽅⾯是实现很复杂,另⼀⽅⾯,这种成熟软件的标准化程度较⾼,⼤部分情况下可以直接⽤现成的SaaS软件)。应⽤需求量:从上往下,各级别应⽤的需求体量(Volume)逐级递增,呈现⼀个⾦字塔形状。这个特征可以⽤万能的2/8原则来理解:20%的“全民”应⽤,由于需求的通⽤性和普适性,可以覆盖⾄少80%的⽤户群体(例如企业⼤部分⼈都要⽤的考勤系统);⽽剩下那80%的“⼩众”应⽤,由于需求的定制化和特殊性(例如蚂蚁的期权系统...),就只能覆盖各⾃⼩圈⼦⾥那20%的⽤户了。与低代码的契合关系:从上往下,各级别应⽤与低代码越来越契合(Relevant)。也就是说:越简单的应⽤,越契合低代码;越不太关键的任务,也越契合低代码。同时,由于契合低代码的应⽤更偏⾦字塔底层,⽽这些应⽤的需求量都更⼤,所以可以得出如下判断:低代码能够适⽤于⼤部分业务场景(⽽且这个⽐例会⼀直上升,逐步往⾦字塔的更上层应⽤逼近),例如:B2E类应⽤(表单、审批流、ERP系统)、B2B类应⽤(企业商城、⼯业控制台)、B2C类应⽤(企业展⽰、营销页、店铺装修)。竞品概况低代码虽然是⼀个新兴概念,但这个⾏业本⾝并不算很新(前⽂也有提到),这些年以来早就积累了不少资深的荣耀王者。同时,低代码作为⼀个朝阳产业和资本热点,近⼏年也不断有更多的新玩家在加⼊这个刺激战场。上图分别是Gartner给出的低代码平台魔⼒象限和Forrester给出的低代码平台技术波谱。从图中可以看到:OutSystems和Mendix⼀马当先,是公认的低代码领域头牌。这两家都是很纯粹的通⽤低代码开发平台,且都经过了长时间的发展和积累:OutSystems成⽴于2001年,员⼯⼈数1000+,年营收超过1亿美元;2018年6⽉获得了KKR和⾼盛的3.6亿美元融资,⽬前估值超过10亿美元;Mendix成⽴于2005年,员⼯⼈数500+,年营收超过2300万美元(18年数据),2018年8⽉被西门⼦以7.3亿美元收购。Salesforce和Microsoft紧随其后,都处于⾏业领先者地位。但这两家的公司性质和发展路径都很不⼀样:Salesforce是以SaaS起家,公司规模就不⽤多说了,反正就是SaaS届的巨⽆霸。这类SaaS⼚商做低代码的动⼒,是为了解决客户对成品SaaS软件的定制诉求。M$更不⽤多介绍,只说下他们做低代码的天然优势:⼀⽅⾯,作为办公软件航空母舰,低代码可以帮助他们的客户实现从Excel表单到定制App的能⼒与体验升级;另⼀⽅⾯,作为云计算三巨头之⼀,低代码可以帮助他们连接内部的云计算⽣态体系,为开发者提供⼀个统⼀和易⽤的上云界⾯。国外市场已经得到充分验证,但国内市场还刚刚兴起,还没有⼀家能够赢得上述调研机构的芳⼼,挤进上⾯这两张⽅图。国内⽬前的⼀些竞品和融资情况包括:2018年5⽉,搭搭云完成A轮的千万级融资;2018年9⽉,宜创科技得到清源创投的战略融资;2018年12⽉,轻流完成千万级Pre-A融资;2019年8⽉,数式科技得到盈动资本的数千万⼈民币天使轮融资;2019年8⽉,ClickPaas获得晨兴资本数百万美元的A轮融资;2019年,奥哲分别获得阿⾥5千万的A+轮融和⾼榕资本上亿元的B轮融资。(注:竞品数据来源于我们组PD的⾟勤整理;为此我决定这篇⽂章剩下内容再也不⿊PD了;下篇再说。)六 结语本⽂总结了低代码领域的基本概念、核⼼价值与⾏业现状。虽然这些内容都⽐较基础和偏理论,但我始终认为,深刻理解⼀个系统的前提,正是这些务虚的东西 —— 技术架构只会告诉你这个系统是怎么实现的(How),⽆法准确表述它到底能⽤来做什么(What),以及为什么要做这样⼀个东西(Why);⽽后⾯这两个问题的答案,才是后续系统所有设计与演进的根因和驱动⼒。本⽂为阿⾥云原创内容,未经允许不得转载。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688892833a181736.html
评论列表(0条)