規(guī)則這篇應(yīng)該叫做“數(shù)字技術(shù)名詞解釋—低代碼”,但之前的名詞解釋篇都是一兩天草就,這篇磨蹭了半個(gè)多月,七七八八寫了過(guò)萬(wàn)字,于是做一把標(biāo)題黨。
低代碼這個(gè)概念今年極火,爭(zhēng)議也極大。有些人力捧,覺(jué)得以后“人人都是程序員”,, 又有不少人嗤之以鼻,如有ERP老兵譏諷《低代碼,不要以比“中臺(tái)”還快的速度臭大街》,有ThoughtWorks中國(guó)某徐姓CTO怒斥《“行業(yè)毒瘤”低代碼》,還有很多認(rèn)為低代碼是新瓶裝舊酒,早已有之,或者無(wú)非就是個(gè)高級(jí)外包。可惜的是,無(wú)論支持還是鄙夷,各路專家寫文都是“草就”,至今也沒(méi)一篇三觀正且詳實(shí)的。阿朱的幾篇三觀是正,但行文也過(guò)于簡(jiǎn)明,可能懂的自然懂,不懂的還是不懂。
本文希望對(duì)這個(gè)當(dāng)前動(dòng)蕩不安的領(lǐng)域做一點(diǎn)“不草就”的綜合說(shuō)明,想說(shuō)清楚七大問(wèn)題:低代碼和無(wú)代碼(也稱零代碼)是什么關(guān)系、怎么判斷一個(gè)低代碼平臺(tái)是否專業(yè)、國(guó)內(nèi)是否有專業(yè)的低代碼平臺(tái)、低代碼是不是新瓶裝舊酒、低代碼真的搞不定專業(yè)的企業(yè)應(yīng)用嗎、低代碼不適合開(kāi)發(fā)哪些應(yīng)用、低代碼并非銀彈。
鑒于這個(gè)領(lǐng)域現(xiàn)在實(shí)在太亂,希望大家能多轉(zhuǎn)發(fā)一下,讓更多的人正確理解低代碼。
01低代碼和無(wú)代碼是兩回事
第一步得把低代碼和無(wú)代碼分清楚,因?yàn)檫@倆差異巨大,但現(xiàn)在業(yè)界經(jīng)常混為一談,導(dǎo)致很多很多問(wèn)題,比如雙方爭(zhēng)論但指的不是同一個(gè)事情,廠商的口徑亂,行業(yè)報(bào)告的結(jié)果不能看。
低代碼專指低代碼應(yīng)用開(kāi)發(fā)平臺(tái)(LCAP),是一個(gè)被業(yè)界廣泛認(rèn)可的概念,頭部的分析機(jī)構(gòu)如Forrester和Gartner都已經(jīng)發(fā)布了多年低代碼開(kāi)發(fā)平臺(tái)的報(bào)告。如下圖所示,大家可以看到這兩家的報(bào)告入選的產(chǎn)品都很接近,特別是頭部的六家簡(jiǎn)直是一模一樣。這說(shuō)明低代碼應(yīng)用開(kāi)發(fā)平臺(tái)已經(jīng)是一個(gè)比較成熟的市場(chǎng)。

相反,分析機(jī)構(gòu)對(duì)無(wú)代碼的態(tài)度就很微妙了。雖然也有一些分析機(jī)構(gòu)也提無(wú)代碼開(kāi)發(fā)平臺(tái)的概念,如G2(當(dāng)然更不用說(shuō)目前混亂的國(guó)內(nèi)分析機(jī)構(gòu)),但Forrester和Gartner從未發(fā)布過(guò)無(wú)代碼開(kāi)發(fā)平臺(tái)的報(bào)告。Forrester和Gartner倒也不是說(shuō)無(wú)代碼是個(gè)偽概念,他們的共識(shí)是無(wú)代碼這個(gè)詞只是一個(gè)營(yíng)銷用語(yǔ),主要用來(lái)突出一個(gè)工具無(wú)需編程基礎(chǔ),消除業(yè)務(wù)用戶的恐懼。
‘No-code’ is a marketing term, implying the tool is for non-professional developers. — By Gartner
(https://appian.com/resources/resource-center/analyst-reports/gartner-quick-answer-low-code-vs-no-code-dev-tools.html)
Businesspeople hankering to deliver their own apps love the “no-code” message. Thus, “no-code” has become a marker for products aimed at empowering business users. However, customers report that even powerful low-code platforms in some cases can’t produce apps without any coding. So what does this mean for the “no-code” promise? — By Forrester
(https://go.forrester.com/blogs/watch-your-language-low-code-and-no-code-are-not-the-same/)
無(wú)代碼這個(gè)詞通常用來(lái)形容一些細(xì)分領(lǐng)域的開(kāi)發(fā)工具,最常見(jiàn)的是應(yīng)用搭建平臺(tái)(國(guó)外一般叫App Builder之類),如國(guó)外的Appy Pie、國(guó)內(nèi)的宜搭、簡(jiǎn)道云等,還可以用來(lái)形容Airtable / AppSheet / Treelab這類在線表單工具或輕流這類的工作流工具。這幾類工具差別巨大,如下圖所示,還有人將無(wú)代碼和低代碼的江湖分成十二個(gè)“門派”,由此可見(jiàn)無(wú)代碼是一個(gè)相當(dāng)寬泛的概念。

但無(wú)代碼的“通用”開(kāi)發(fā)平臺(tái),目前看并不存在,據(jù)我看將來(lái)也不會(huì)存在。因?yàn)殚_(kāi)發(fā)軟件必然要編寫邏輯,就必然要寫代碼,除非哪一天人工智能能做到自動(dòng)寫代碼。
我覺(jué)得低代碼和無(wú)代碼的關(guān)系有點(diǎn)類似于關(guān)系數(shù)據(jù)庫(kù)和NoSQL。關(guān)系數(shù)據(jù)庫(kù)專指一種特定的數(shù)據(jù)庫(kù),即便多家廠商的產(chǎn)品實(shí)現(xiàn)可能千差萬(wàn)別,但至少提供的功能很相似,都高度遵循SQL標(biāo)準(zhǔn)。低代碼開(kāi)發(fā)平臺(tái)雖然今天的標(biāo)準(zhǔn)化程度還沒(méi)關(guān)系數(shù)據(jù)庫(kù)這么高,但無(wú)論是Gartner還是Forrester都已經(jīng)開(kāi)始給出比較清晰的篩選標(biāo)準(zhǔn),如要支持通用場(chǎng)景(如UI、邏輯和數(shù)據(jù)三層都要有)、要滿足專業(yè)開(kāi)發(fā)需求等,隨著行業(yè)發(fā)展標(biāo)準(zhǔn)化程度肯定會(huì)進(jìn)一步提高。NoSQL則只要不是SQL都算,不管你是KV、wide-column、文檔還是圖,都可以叫NoSQL。NoSQL這個(gè)詞熱了有幾年,但現(xiàn)在不太講了,因?yàn)槭袌?chǎng)格局開(kāi)始清晰之后,大家就不會(huì)關(guān)注過(guò)于寬泛的NoSQL,而是根據(jù)需要關(guān)注具體的類型。我個(gè)人認(rèn)為無(wú)代碼這個(gè)詞將來(lái)也一樣會(huì)慢慢淡出,雖然現(xiàn)在十二個(gè)門派很是熱鬧,但不出幾年真正有影響力的門派肯定也不多,這時(shí)大家也就不關(guān)注無(wú)代碼而是直接找具體的產(chǎn)品了。
本文后續(xù)只專注討論面向通用應(yīng)用開(kāi)發(fā)的低代碼。低代碼不是一個(gè)想吸引業(yè)務(wù)用戶的用語(yǔ),業(yè)務(wù)人員見(jiàn)了“代碼”兩個(gè)字就嚇跑了,再低也沒(méi)用,如果業(yè)務(wù)人員寫不了100行代碼的話,那10行也一樣寫不了。低代碼平臺(tái)主要面向?qū)I(yè)開(kāi)發(fā),這點(diǎn)已經(jīng)是頭部分析機(jī)構(gòu)的共識(shí),雖然Forrester之前走過(guò)彎路,曾經(jīng)也發(fā)布過(guò)面向業(yè)務(wù)人員的低代碼開(kāi)發(fā)平臺(tái)報(bào)告,但近兩年已經(jīng)不再發(fā)布了,只保留面向?qū)I(yè)開(kāi)發(fā)者的低代碼報(bào)告。用戶數(shù)據(jù)也說(shuō)明這一點(diǎn),21CTO在《低代碼開(kāi)發(fā)可不低,用戶仍需要與IT技術(shù)部門聯(lián)手》一文中提到據(jù)某統(tǒng)計(jì)“只有6%的低代碼開(kāi)發(fā)是由業(yè)務(wù)人員完成的”,OutSystems的數(shù)據(jù)是69%的用戶是專業(yè)開(kāi)發(fā),宜創(chuàng)科技CEO宜博也曾說(shuō)低代碼面臨“懂技術(shù)的看不上,懂業(yè)務(wù)的學(xué)不會(huì)”的尷尬。
所以無(wú)代碼和低代碼完全不同,無(wú)代碼面向業(yè)務(wù)人員,低代碼面向開(kāi)發(fā)人員;無(wú)代碼泛指多種開(kāi)發(fā)細(xì)分領(lǐng)域應(yīng)用的工具,低代碼特指一種通用開(kāi)發(fā)工具;無(wú)代碼不被國(guó)際頭部分析機(jī)構(gòu)認(rèn)可,低代碼被廣泛認(rèn)可。
現(xiàn)在國(guó)內(nèi)很多行業(yè)專家和分析機(jī)構(gòu)經(jīng)常把兩者混為一談,這對(duì)技術(shù)的價(jià)值衡量、甲方的技術(shù)規(guī)劃和選型都造成很大混亂,我迫切希望大家能夠把低代碼和無(wú)代碼區(qū)分開(kāi),集中研究具備通用能力的低代碼平臺(tái)。
02專業(yè)的低代碼長(zhǎng)啥樣
現(xiàn)在市場(chǎng)上魚龍混雜號(hào)稱“低代碼”的產(chǎn)品很多,怎么才能快速區(qū)分是不是“專業(yè)”?很簡(jiǎn)單,找一個(gè)最專業(yè)的產(chǎn)品來(lái)對(duì)標(biāo)。
哪個(gè)產(chǎn)品才是最專業(yè)的?我們可以先看為什么低代碼這兩三年才熱起來(lái)?不是因?yàn)镾alesforce這樣的SaaS廠商,也不是Appian這類BPMS廠商,這輪低代碼熱其實(shí)主要是因?yàn)镺utSystems。OutSystems雖然也早在2001年就成立,但之前一直“猥瑣發(fā)育”,2018年D融資了$3.6億,才突然引爆市場(chǎng)。無(wú)論Forrester還是Gartner都把OutSystems列入領(lǐng)導(dǎo)者象限,阿朱說(shuō)他最推崇的低代碼平臺(tái)就四個(gè),OutSystems也是其中之一。所以,OutSystems就是專業(yè)低代碼平臺(tái)的代表。
對(duì)比OutSystems和很多國(guó)內(nèi)所謂的低代碼平臺(tái),我找出了六項(xiàng)區(qū)分度最高的判斷標(biāo)準(zhǔn):模型驅(qū)動(dòng)、可視化開(kāi)發(fā)、表達(dá)式語(yǔ)言、軟件工程、開(kāi)放集成和腳本語(yǔ)言。
(1)模型驅(qū)動(dòng)
“模型驅(qū)動(dòng)”可能是最明顯的區(qū)分標(biāo)志,因?yàn)閯偤糜幸粋€(gè)也很流行的概念叫“表單驅(qū)動(dòng)”。很多人搞不清楚這兩個(gè)概念,但其實(shí)這兩類產(chǎn)品挺好區(qū)分。
首先可以看用戶手冊(cè),這樣不用安裝試用也能看出差別。使用模型驅(qū)動(dòng)的平臺(tái)比如OutSystems、Mendix的手冊(cè)會(huì)有很大一章講怎么做數(shù)據(jù)建模和處理,包括怎么定義實(shí)體、實(shí)體間關(guān)系、主鍵、唯一性、索引、數(shù)據(jù)怎么訪問(wèn)、篩選、分組、統(tǒng)計(jì)等等,還提供SQL或類似擴(kuò)展。使用表單驅(qū)動(dòng)的產(chǎn)品則往往手冊(cè)第一章就是說(shuō)明怎么定義各種表單,都是各種和界面相關(guān)的控件,比如單選多選下拉框、文本日期數(shù)字等。
其次可以看界面。下圖是分別是模型驅(qū)動(dòng)的OutSystems和某表單驅(qū)動(dòng)產(chǎn)品的相關(guān)操作界面,大家看是不是很不一樣。

(模型驅(qū)動(dòng),OutSystems)

(表單驅(qū)動(dòng))
(2)可視化開(kāi)發(fā)
可視化開(kāi)發(fā)不是拖拉拽做個(gè)界面(這只能叫可視化設(shè)計(jì)),而是有完整的可視化編程語(yǔ)言系統(tǒng),能夠編寫業(yè)務(wù)處理邏輯。看OutSystems這類產(chǎn)品的文檔,你會(huì)發(fā)現(xiàn)很多編程語(yǔ)言的基本構(gòu)造都有,比如順序 / 分支 / 循環(huán) / continue / break、輸入輸出參數(shù)、局部變量 / 全局變量、struct和list、異常等。雖然這些東西都是拖拉拽完成,看上去沒(méi)有密密麻麻的一行行代碼來(lái)嚇人,但也足以嚇退業(yè)務(wù)人員。一下幾張圖都來(lái)自于OutSystems,大家可以感受一下。

(左:邏輯開(kāi)發(fā)工具箱,注意有If、Switch、For Each流程控制;右:一個(gè)比較簡(jiǎn)單的邏輯)

(怎么拋出和處理異常)
(3)表達(dá)式語(yǔ)言
表達(dá)式語(yǔ)言有些類似Excel里的公式,有表達(dá)式語(yǔ)言才可以做一些比較復(fù)雜的計(jì)算。下圖是OutSystems的表達(dá)式編輯器,大家可以看到有各種操作符,還有很多內(nèi)置函數(shù),比如數(shù)學(xué)函數(shù)、字符串處理函數(shù)等。

OutSystems這個(gè)例子看起來(lái)還比較簡(jiǎn)單,但表達(dá)式語(yǔ)言也可以很復(fù)雜。微軟是搞語(yǔ)言的行家,下圖是個(gè)微軟Power Fx的例子,這個(gè)表達(dá)式是要提取一個(gè)句子最后一個(gè)單詞的表達(dá)式,也挺復(fù)雜吧(說(shuō)實(shí)話我看了好大一陣子才看懂)。

表達(dá)式語(yǔ)言也有更平易近人的設(shè)計(jì),比如我們輕舟就是用類似Scratch的積木塊設(shè)計(jì)。兩種設(shè)計(jì)功能上是等價(jià)的,積木塊設(shè)計(jì)更容易上手,Power Fx這樣的設(shè)計(jì)寫復(fù)雜表達(dá)式更方便。
(4)軟件工程
專業(yè)的低代碼平臺(tái)需要提供測(cè)試、debug、版本控制等軟件工程支持。開(kāi)發(fā)軟件都會(huì)出bug(低代碼平臺(tái)基本消除了語(yǔ)法層面的bug,但對(duì)語(yǔ)義層面的bug一樣無(wú)能為力),需求也總是會(huì)變。所以測(cè)試、debug、版本控制這些支持也是必不可少的。OutSystems為什么做的最好,我覺(jué)得跟它完善的debug支持是分不開(kāi)的。下圖是OutSystems的debug界面,看起來(lái)和專業(yè)IDE有的一拼。

(5)開(kāi)放集成
理論上,有了模型驅(qū)動(dòng)等上述四大功能,開(kāi)發(fā)一個(gè)不是太復(fù)雜的獨(dú)立應(yīng)用就夠了,但典型的企業(yè)軟件都是相互依賴和集成的,所以平臺(tái)還需要具備能夠調(diào)用外部API和開(kāi)放API給別人的能力。平臺(tái)如果沒(méi)有這兩方面的功能,開(kāi)發(fā)出來(lái)的應(yīng)用相互之間都沒(méi)法連通和集成,全是技術(shù)債。我們看國(guó)外關(guān)于低代碼的文章,經(jīng)常會(huì)看到一個(gè)詞叫Shadow IT,說(shuō)的就是這個(gè)問(wèn)題。大家都胡亂的開(kāi)發(fā)各種應(yīng)用,還都集成不起來(lái),將是一場(chǎng)大災(zāi)難。
(6)腳本語(yǔ)言
腳本語(yǔ)言就是用JavaScripts、Python、Java等做擴(kuò)展,這些其實(shí)就是正兒八經(jīng)的專業(yè)編程語(yǔ)言了,但低代碼平臺(tái)會(huì)把工程復(fù)雜性都封裝好,讓開(kāi)發(fā)者不需要配置部署環(huán)境,隨手就可以寫代碼,寫完一鍵發(fā)布馬上可以運(yùn)行。
其實(shí)上述標(biāo)準(zhǔn)和Gartner是很一致的。Gartner在魔力象限報(bào)告里說(shuō):
An LCAP is characterized by its use of model-driven or visual development paradigms supported by expression languages and possibly scripting…
里面模型驅(qū)動(dòng)、可視化開(kāi)發(fā)、表達(dá)式語(yǔ)言、腳本語(yǔ)言都提到了。
小結(jié)一下,判斷是不是"專業(yè)”低代碼,可以重點(diǎn)看模型驅(qū)動(dòng)、可視化開(kāi)發(fā)、表達(dá)式語(yǔ)言、軟件工程、開(kāi)放集成和腳本語(yǔ)言等六個(gè)方面。
03國(guó)內(nèi)有專業(yè)的低代碼平臺(tái)嗎
國(guó)內(nèi)看似已經(jīng)有很多低代碼平臺(tái),道一云之前做個(gè)一個(gè)系列測(cè)評(píng),T研究、海比等也都出過(guò)分析報(bào)告,但只要我們對(duì)照上述標(biāo)準(zhǔn)就不難看出,雖然低代碼輿論很是喧囂,但迄今為止應(yīng)該說(shuō)國(guó)內(nèi)還很少有專業(yè)的低代碼平臺(tái)。
比如阿里今年一直鼓吹的宜搭,宣稱是“低代碼”應(yīng)用搭建平臺(tái),但其實(shí)是一個(gè)“表單驅(qū)動(dòng)”的“無(wú)代碼”平臺(tái)。阿里其實(shí)是打了個(gè)擦邊球,說(shuō)宜搭是“搭建”平臺(tái),沒(méi)說(shuō)是“開(kāi)發(fā)”平臺(tái),你要說(shuō)他過(guò)度宣傳也算不上。但“搭建”和“開(kāi)發(fā)”二字之差,差距可大了,“搭建”的意思是基于一些成熟模塊組裝應(yīng)用,一旦遇到既有模塊不夠用的時(shí)候就歇菜。
國(guó)內(nèi)很多分析報(bào)告提及的產(chǎn)品大部分我都瞄過(guò),但看一圈下來(lái),個(gè)人認(rèn)為也就ClickPaaS可能還夠得上(我也不確定,因?yàn)镃lickPaaS不開(kāi)放用戶手冊(cè),沒(méi)深入研究),畢竟它有模型驅(qū)動(dòng)和開(kāi)放集成,其他的門檻都?jí)虿簧稀?
這么混亂的狀態(tài)讓我們的CIO們可怎么辦呢,這再次說(shuō)明如果缺乏有效的標(biāo)準(zhǔn)篩選真正專業(yè)的低代碼平臺(tái),勢(shì)必低代碼和無(wú)代碼一鍋粥,結(jié)果大家都被搞得稀里糊涂。
04低代碼真的是新瓶裝舊酒嗎
關(guān)于低代碼還有一種流行的觀點(diǎn)是新瓶裝舊酒,說(shuō)二十年多年前的Delphi、PowerBuiler(后稱PB)早就是低代碼,但早就被時(shí)代淘汰了,今天的低代碼也沒(méi)戲。說(shuō)這些話的大概率還是前輩。
要講清楚這些問(wèn)題得稍微digg一點(diǎn)歷史,當(dāng)年的Delphi和PB可是神一般的存在,因?yàn)橄啾韧瑫r(shí)代的其他技術(shù)(比如詰屈聱牙的MFC)來(lái)說(shuō)易用性好太多,這倆不知道做了不知道多少企業(yè)信息化應(yīng)用。隨手翻看一本《Delphi開(kāi)發(fā)典型模塊大全》,里面盡是板材排料、進(jìn)銷存、文檔管理、批發(fā)零售、房地產(chǎn)信息管理等案例。
這倆后來(lái)被時(shí)代淘汰,主要是因?yàn)闀r(shí)代變了,沒(méi)跟上。互聯(lián)網(wǎng)時(shí)代來(lái)了后,軟件架構(gòu)很快就從桌面端的C / S變成Web端的B / S,再后來(lái)是移動(dòng)App。Web應(yīng)用和App對(duì)前后端的要求比桌面應(yīng)用都要高很多,因?yàn)榇蠹易鼍W(wǎng)頁(yè)或App都是要勾引用戶主動(dòng)來(lái)訪問(wèn)啊,不像桌面端的企業(yè)應(yīng)用就算不好用你為了工作也得用。互聯(lián)網(wǎng)的這個(gè)二十年,技術(shù)棧發(fā)展的越來(lái)越復(fù)雜,新的低代碼技術(shù)只能一直慢慢醞釀。
但經(jīng)過(guò)OutSystems等廠商經(jīng)過(guò)十多年的積累,今天的低代碼技術(shù)已經(jīng)遠(yuǎn)勝當(dāng)年的Delphi和PB。今天的低代碼要“低”的多,當(dāng)年的Delph、PB等如果按今天的標(biāo)準(zhǔn),連入門的資格都沒(méi)有。
我們就以當(dāng)年最流行的Delphi為例,Delphi雖然號(hào)稱“可視化編程語(yǔ)言”,但也就是實(shí)現(xiàn)了界面的可視化開(kāi)發(fā)和數(shù)據(jù)庫(kù)的ORM,所有的邏輯都是要用代碼寫的,包括怎么把數(shù)據(jù)顯示在表格也都要寫代碼。我們說(shuō)的六大標(biāo)準(zhǔn)里,頭兩位的模型驅(qū)動(dòng)、可視化開(kāi)發(fā)這些都沒(méi)有。PB也就比Delphi稍好一點(diǎn),它核心的DataWindow可以無(wú)需代碼做出增刪改查,算是邁入模型驅(qū)動(dòng)的門檻,但它不支持實(shí)體關(guān)系,模型驅(qū)動(dòng)能力并不完整。同時(shí)PowerBuilder也沒(méi)有可視化的邏輯開(kāi)發(fā),按今天的標(biāo)準(zhǔn)也只能在門檻徘徊。
貼兩張老圖讓大家感受一下當(dāng)年炸子雞—Delphi。

(Delphi的主界面,實(shí)現(xiàn)了用戶界面的可視化設(shè)計(jì))

(Delphi的邏輯實(shí)現(xiàn)界面,得寫代碼)
士別三日當(dāng)刮目相看,何況十多年。今天的低代碼并不是新瓶裝舊酒,而是新瓶新酒,里外都是新的。說(shuō)新瓶是因?yàn)榈痛a這個(gè)概念是新的,說(shuō)新酒是因?yàn)榻袢盏腛utSystems等專業(yè)低代碼產(chǎn)品的能力已經(jīng)遠(yuǎn)超二十年前PC時(shí)代的Delphi和PB。
我想說(shuō)低代碼是新瓶裝舊酒的人啊,看到特斯拉也會(huì)說(shuō)新瓶裝舊酒,不還是汽車嗎,看到iPhone也會(huì)說(shuō)新瓶裝舊酒,不就是個(gè)手機(jī)嗎,我就打打電話,發(fā)發(fā)短信。這些人啊,可能也不因?yàn)閯e的,可能就是因?yàn)槟昙o(jì)太大了。
關(guān)于低代碼從DOS時(shí)代至今的發(fā)展脈絡(luò),阿朱在《低代碼都快爛大街了,還有人在為低代碼吵架》一文有詳細(xì)介紹,感興趣的可以看看。
05低代碼能開(kāi)發(fā)復(fù)雜的企業(yè)應(yīng)用嗎
目前業(yè)界很多人認(rèn)為低代碼搞不定復(fù)雜的企業(yè)應(yīng)用。如ERP老兵果總在《低代碼,不要以比“中臺(tái)”還快的速度臭大街》一文中認(rèn)為低代碼只適合用來(lái)做“簡(jiǎn)單的工作流和表單流轉(zhuǎn)的應(yīng)用”或“大型應(yīng)用軟件的功能延伸的開(kāi)發(fā)”,認(rèn)為“不適合開(kāi)發(fā)復(fù)雜邏輯的核心業(yè)務(wù)”。然而果總并沒(méi)有說(shuō)為什么。“技術(shù)領(lǐng)導(dǎo)力”在《如何用低代碼搞垮一家公司?》一文中認(rèn)為低代碼只適合“創(chuàng)新探索類”、“生命周期短的”等應(yīng)用。同樣,也沒(méi)有給出依據(jù)。類似的言論還很多,但都有一個(gè)共性,就是只說(shuō)低代碼不行,不解釋,而且很多時(shí)候還把話說(shuō)的那個(gè)斬釘截鐵。
很多人還真的把自己當(dāng)回事啊。
企業(yè)應(yīng)用聽(tīng)起來(lái)高大上,但其實(shí)幾十年?yáng)|西了,能有多復(fù)雜呢?界面不用很時(shí)尚,不用扛百萬(wàn)并發(fā),也沒(méi)智能推薦啥的高級(jí)算法,其實(shí)從軟件開(kāi)發(fā)角度看企業(yè)應(yīng)用是比較簡(jiǎn)單的。企業(yè)應(yīng)用的復(fù)雜主要是領(lǐng)域模型和業(yè)務(wù)流程比較復(fù)雜,但從前文我們可以看到,低代碼平臺(tái)在建模和邏輯方面的能力都是比較全面的,再通過(guò)腳本語(yǔ)言、開(kāi)放集成等擴(kuò)展機(jī)制,對(duì)于不方便低代碼實(shí)現(xiàn)的地方,可以和專業(yè)代碼開(kāi)發(fā)協(xié)作實(shí)現(xiàn)。所以用低代碼開(kāi)發(fā)復(fù)雜應(yīng)用,本質(zhì)上沒(méi)問(wèn)題。
這也不是我一個(gè)人的觀點(diǎn),明道云CEO任向暉寫過(guò)一篇《APaaS搞不定復(fù)雜的應(yīng)用,是這樣嗎?》,把企業(yè)應(yīng)用的復(fù)雜性分解為數(shù)據(jù)、權(quán)限、流程、算法、集成、報(bào)表等六個(gè)維度,然后逐一給出解決方案。這才是實(shí)事求是的態(tài)度。我覺(jué)得任總的分析已經(jīng)比較充分,我也不再展開(kāi)說(shuō)了。我相信任何人但凡不帶偏見(jiàn),深入分析的,都會(huì)發(fā)現(xiàn)企業(yè)應(yīng)用并沒(méi)有什么復(fù)雜性是低代碼一定搞不定的。
而且用低代碼平臺(tái)開(kāi)發(fā)這類應(yīng)用,還有不少獨(dú)特優(yōu)勢(shì),如開(kāi)發(fā)人員上手快(我們的經(jīng)驗(yàn)是個(gè)把月就能用的很溜了),開(kāi)發(fā)效率高,便于業(yè)務(wù)人員和開(kāi)發(fā)之間的溝通(因?yàn)檫壿嫶蠖嗍强梢暬模蝗菀仔纬晒聧u(因?yàn)閷I(yè)的低代碼平臺(tái)默認(rèn)就會(huì)根據(jù)模型生成API)。OutSystems在其網(wǎng)站上特意強(qiáng)調(diào):
OutSystems is well-equipped to build ERP and similar large, complex systems with the desired performance and scalability.
OutSystems也有一些這方面的案例,做供應(yīng)鏈、CRM、ERP的都有。OutSystems成立于2001年,那時(shí)候不開(kāi)發(fā)企業(yè)應(yīng)用開(kāi)發(fā)什么呢?
但可能很多人會(huì)說(shuō),OutSystems作為廠商當(dāng)然這么宣揚(yáng),但目前用低代碼開(kāi)發(fā)復(fù)雜企業(yè)應(yīng)用確實(shí)不多啊。沒(méi)錯(cuò),但我認(rèn)為這只是時(shí)間問(wèn)題。
首先,低代碼技術(shù)達(dá)到成熟狀態(tài)的時(shí)間并不長(zhǎng),即便是OutSystems。OutSystems雖然都成立20年了,但低代碼表面看似簡(jiǎn)單,其實(shí)是一個(gè)相當(dāng)復(fù)雜的技術(shù)體系,背后涉及核心的編程語(yǔ)言層面的設(shè)計(jì),比如DSL、類型系統(tǒng)、泛型等等,還有怎么diff、debug、undo,都不容易。另外低代碼平臺(tái)還需要不斷追趕這20年變化極大的技術(shù)環(huán)境。20年前是C / S、.Net,后來(lái)流行B / S、Java,再后來(lái)又得搞App,操作系統(tǒng)從Windows變成Linux,現(xiàn)在又面臨從SOA到微服務(wù)的轉(zhuǎn)型。OutSystems的主任工程師Tiago Sim?es曾介紹過(guò)20年來(lái)OutSystems的發(fā)展(https://medium.com/outsystems-engineering/whats-not-new-in-outsystems-a-product-timeline-c781acd400cb#),可以看到OutSystems一邊一直到補(bǔ)功能,直到2014年的9.0版本支持?jǐn)?shù)據(jù)聚合處理才算比較完整,另一邊一直在努力追趕技術(shù)趨勢(shì),直到2016年的10.0版本一口氣推出Client-Side Logic、Local Storage、異步、Reactive等功能才算對(duì)移動(dòng)App有較好的支持。這玩意是不做不知道,一做嚇一跳,我們是做了輕舟低代碼才知道這個(gè)東西很難。
更重要的可能是非技術(shù)因素。大部分企業(yè)對(duì)CRM、ERP的定制需求還沒(méi)那么高,相比用低代碼從頭開(kāi)發(fā)來(lái)說(shuō),采用Saleforce、這樣的套裝軟件實(shí)施,再做一些二次開(kāi)發(fā)是更合適的選擇。這也解釋了為什么Saleforce、ServiceNow這樣的SaaS巨頭都有自己的低代碼平臺(tái),而西門子會(huì)收購(gòu)Mendix。另外ERP這樣的企業(yè)軟件實(shí)施強(qiáng)依賴咨詢經(jīng)驗(yàn),這不是低代碼能解決的,而業(yè)界有經(jīng)驗(yàn)的咨詢顧問(wèn)顯然更熟悉這樣的產(chǎn)品,也沒(méi)有意愿改變。專業(yè)程序員對(duì)低代碼抵觸也非常大,好不容易練就一身武藝,用了低代碼好像都沒(méi)用了?業(yè)界越是宣傳用低代碼開(kāi)發(fā)快多少倍,開(kāi)發(fā)團(tuán)隊(duì)可能越抵觸。
總之,業(yè)界流行說(shuō)低代碼不能做CRM、ERP這類復(fù)雜的企業(yè)應(yīng)用,這一說(shuō)法很多人講,但都沒(méi)有根據(jù)。從技術(shù)原理出發(fā),低代碼最適合做的恰恰就是企業(yè)應(yīng)用。目前用低代碼做復(fù)雜企業(yè)級(jí)應(yīng)用的case還不是很多,是因?yàn)榈痛a技術(shù)也就剛成熟不久、定制需求還不夠強(qiáng)(套裝軟件能滿足)或者行業(yè)不愿做,并不能說(shuō)明它做不了。
06低代碼不適合開(kāi)發(fā)哪些類型的應(yīng)用
很多專家啊,不但錯(cuò)誤的認(rèn)為低代碼搞不定復(fù)雜企業(yè)應(yīng)用,還在低代碼適合哪些類型的應(yīng)用上也說(shuō)錯(cuò)了。
低代碼真正不太擅長(zhǎng)的,是那些有各種特殊要求的應(yīng)用,比如:
對(duì)算法和復(fù)雜數(shù)據(jù)結(jié)構(gòu)要求比較高的:我想不會(huì)有人想到用低代碼平臺(tái)去刷LeetCode題、打ACM比賽的吧。這里有個(gè)細(xì)微的地方是要區(qū)分是業(yè)務(wù)邏輯比較復(fù)雜還是算法邏輯比較復(fù)雜,業(yè)務(wù)邏輯復(fù)雜對(duì)低代碼來(lái)說(shuō)不是問(wèn)題,算法邏輯復(fù)雜才是問(wèn)題。那啥叫業(yè)務(wù)邏輯復(fù)雜呢,就是業(yè)務(wù)人員總之是說(shuō)的清楚,或者是能理解的;啥叫算法邏輯復(fù)雜呢,就是業(yè)務(wù)人員只能給個(gè)目標(biāo),具體怎么實(shí)現(xiàn)是不管的,就算解釋也是一臉悶逼的聽(tīng)不懂的。
對(duì)界面要求特別高的:比如游戲或抖音、云音樂(lè)這樣的社交娛樂(lè)型的應(yīng)用。目前主流的低代碼平臺(tái)都不擅長(zhǎng)做酷炫的界面(也有一些特定類型的低代碼平臺(tái)如App Onboard是面向游戲開(kāi)發(fā)的,不在本文討論范圍之內(nèi))。
頭部互聯(lián)網(wǎng)級(jí)應(yīng)用:頭部互聯(lián)網(wǎng)應(yīng)用用戶量巨大,為了優(yōu)化性能有很多很多trick,前后臺(tái)技術(shù)架構(gòu)非常復(fù)雜,低代碼平臺(tái)的實(shí)現(xiàn)是比較標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù) / 邏輯 / 界面三層架構(gòu),無(wú)法滿足性能需求。注意這不是說(shuō)所有互聯(lián)網(wǎng)應(yīng)用都不合適,只是指那些用戶量特大的頭部應(yīng)用。
分析和智能化應(yīng)用:分析類應(yīng)用自然應(yīng)該用更專業(yè)的BI工具,智能化應(yīng)用也應(yīng)該用更專業(yè)的機(jī)器學(xué)習(xí)平臺(tái)等工具。
系統(tǒng)軟件、科學(xué)計(jì)算等其他專業(yè)性很強(qiáng)的應(yīng)用。這個(gè)不多說(shuō)了,估計(jì)也沒(méi)誰(shuí)想用低代碼來(lái)做,但多說(shuō)一句,雖然這些系統(tǒng)的內(nèi)核肯定不適合低代碼開(kāi)發(fā),但界面可是很適合,我們輕舟低代碼產(chǎn)品正是脫胎于云計(jì)算平臺(tái)的界面開(kāi)發(fā)。
現(xiàn)在大家應(yīng)該可以發(fā)現(xiàn)很多業(yè)界流行的觀點(diǎn)說(shuō)低代碼適合這個(gè)那個(gè)的其實(shí)也都是錯(cuò)的,比如:
說(shuō)低代碼適合“簡(jiǎn)單的工作流和表單流轉(zhuǎn)的應(yīng)用”:事實(shí)上專業(yè)的低代碼并不見(jiàn)得特別適合這類應(yīng)用,比如Gartner就說(shuō)OutSystems這方面的支持還不太好。其實(shí)最適合這類應(yīng)用的反而是那些“表單驅(qū)動(dòng)”的產(chǎn)品,這些產(chǎn)品并非專業(yè)的低代碼平臺(tái)。專業(yè)的低代碼平臺(tái)搞這些也不是完全不行,但屬于大炮打蚊子,性價(jià)比不高。
說(shuō)低代碼適合“生命周期短的應(yīng)用”:事實(shí)上如果你用OutSystems這樣“最專業(yè)”的低代碼平臺(tái)去做營(yíng)銷活動(dòng)頁(yè)這樣“生命周期短的應(yīng)用”,你肯定會(huì)欲哭無(wú)淚。為什么?因?yàn)闋I(yíng)銷活動(dòng)頁(yè)對(duì)界面的要求很高哎。
說(shuō)低代碼適合“創(chuàng)新型應(yīng)用”:有篇文章按Gartner的方法把應(yīng)用分成基礎(chǔ)設(shè)施型(如 ERP)、差異化型(如 CRM)和創(chuàng)新型應(yīng)用,說(shuō)前兩類應(yīng)用低代碼就別碰了,都是傳統(tǒng)IT的菜,低代碼就搞搞創(chuàng)新型應(yīng)用,這個(gè)說(shuō)法也不對(duì)。互聯(lián)網(wǎng)App算典型的創(chuàng)新型應(yīng)用吧,上面已經(jīng)說(shuō)過(guò)這個(gè)低代碼搞不定。
07低代碼不是銀彈,不要過(guò)度神化
上面我們說(shuō)低代碼很適合開(kāi)發(fā)典型的企業(yè)應(yīng)用,優(yōu)點(diǎn)明顯,如開(kāi)發(fā)人員上手快、開(kāi)發(fā)效率高、增進(jìn)溝通和集成等,但也不要認(rèn)為低代碼是銀彈,用了什么問(wèn)題都解決了。原因主要有以下三個(gè)方面。
1)開(kāi)發(fā)工具只能解決軟件研發(fā)的部分問(wèn)題。作為開(kāi)發(fā)工具,低代碼可以加快在需求比較明確時(shí)的軟件交付,也可以在大方向比較明確但具體需求不明時(shí)加快軟件的迭代更新。但企業(yè)應(yīng)用和企業(yè)的經(jīng)營(yíng)管理方式、業(yè)務(wù)方向、業(yè)務(wù)流程、組織架構(gòu)密切相關(guān),和人密切相關(guān),這些方面如果有問(wèn)題,軟件都不知道怎么做,這都不是開(kāi)發(fā)工具所能解決,該請(qǐng)咨詢還是得請(qǐng)咨詢。低代碼就像特種兵,單兵作戰(zhàn)能力是強(qiáng),但如果將帥不行,戰(zhàn)略戰(zhàn)術(shù)拉垮,也打不了勝戰(zhàn)。
2)低代碼能提升多少開(kāi)發(fā)效率缺乏權(quán)威數(shù)據(jù),不要有太高預(yù)期。業(yè)界有很多對(duì)低代碼開(kāi)發(fā)效率的宣傳,最多的是說(shuō)什么提升10倍啦,這些一看就是胡扯。一些廠商和分析機(jī)構(gòu)會(huì)發(fā)布提效數(shù)據(jù),看似效果特別好,但因?yàn)榍懊嬲f(shuō)的無(wú)代碼和低代碼沒(méi)分清問(wèn)題,這些數(shù)據(jù)不可信。比如阿里“宜搭”的數(shù)據(jù)說(shuō)平均將應(yīng)用開(kāi)發(fā)成本從17.5人天提高到3.5人天,提效500%,但前面說(shuō)過(guò)“宜搭”是無(wú)代碼工具。無(wú)代碼工具因?yàn)槎际敲嫦蛱囟愋偷膽?yīng)用高度優(yōu)化的,提效明顯很正常的,但不通用。專業(yè)的低代碼廠商如OutSystems、Mendix,反而不敢宣傳提效多少倍,所以一個(gè)廠商宣傳的效果越好,就越不可能是專業(yè)的低代碼平臺(tái)。從我們的經(jīng)驗(yàn)看,用低代碼做一些小系統(tǒng)確實(shí)挺快,但上了規(guī)模后還能是不是有數(shù)倍提升,我覺(jué)得也不大可能。根據(jù)我們的初步經(jīng)驗(yàn),我們覺(jué)得提升1到2倍是一個(gè)比較合理的預(yù)期。
3)行業(yè)典型的項(xiàng)目制限制了低代碼的價(jià)值。低代碼平臺(tái)因?yàn)榭梢暬⑿矢撸钸m合業(yè)務(wù)和開(kāi)發(fā)密切溝通合作,快速迭代。但當(dāng)前甲乙方之間典型的項(xiàng)目制要求雙方提前簽訂詳細(xì)的合同和SOW,這就把本來(lái)可以敏捷開(kāi)發(fā)的生生打回到瀑布模式,這樣低代碼快速迭代的價(jià)值就很難體現(xiàn)。項(xiàng)目制存在太久,不是一時(shí)半會(huì)改的了的。
08小結(jié)
最后做個(gè)小結(jié):
無(wú)代碼和低代碼不是一個(gè)層次的概念。低代碼是以O(shè)utSystems、Mendix等產(chǎn)品為代表,主要面向?qū)I(yè)開(kāi)發(fā)的通用應(yīng)用開(kāi)發(fā)平臺(tái);無(wú)代碼則是一個(gè)營(yíng)銷用語(yǔ),用于形容很多種面向業(yè)務(wù)人員的工具,如應(yīng)用搭建、在線表單、工作流等。不存在無(wú)代碼的通用應(yīng)用開(kāi)發(fā)平臺(tái)。無(wú)代碼這個(gè)概念過(guò)于寬泛,未來(lái)很可能會(huì)慢慢淡出市場(chǎng)。
要判斷一個(gè)低代碼平臺(tái)是否專業(yè),可以重點(diǎn)看模型驅(qū)動(dòng)、可視化開(kāi)發(fā)、表達(dá)式語(yǔ)言、軟件工程、開(kāi)放集成和腳本語(yǔ)言等六個(gè)方面。對(duì)照這些標(biāo)準(zhǔn),不難看出迄今為止應(yīng)該說(shuō)國(guó)內(nèi)還很少有專業(yè)的低代碼平臺(tái),雖然輿論甚是喧囂。
業(yè)界關(guān)于低代碼適用場(chǎng)景的觀點(diǎn)大多數(shù)都是錯(cuò)的。比如業(yè)界很多人講低代碼搞不定復(fù)雜的企業(yè)級(jí)應(yīng)用,但都毫無(wú)根據(jù)。從技術(shù)原理出發(fā),低代碼其實(shí)最適合做的就是企業(yè)應(yīng)用,即便是CRM、ERP這樣復(fù)雜的應(yīng)用;業(yè)界認(rèn)為低代碼適合做“簡(jiǎn)單的工作流和表單流轉(zhuǎn)的應(yīng)用”、“生命周期短的應(yīng)用”、“創(chuàng)新型應(yīng)用”等觀點(diǎn)也都是錯(cuò)的,這些應(yīng)用很多恰恰不適合低代碼。
低代碼不適合做的應(yīng)用是對(duì)算法、界面、性能、分析和智能化等專業(yè)性要求高的應(yīng)用。
低代碼對(duì)企業(yè)應(yīng)用開(kāi)發(fā)價(jià)值明顯,但也不是銀彈,不要過(guò)度神化。
對(duì)甲方來(lái)說(shuō),我認(rèn)為CIO們應(yīng)該從試點(diǎn)應(yīng)用做起,通常來(lái)說(shuō)要求自己的團(tuán)隊(duì)用低代碼的阻力會(huì)很大,但可以要求乙方用低代碼,降報(bào)價(jià)。對(duì)乙方,我覺(jué)得短期很難賣平臺(tái),最好是和甲方談個(gè)人力外包模式,避免項(xiàng)目制的僵化。業(yè)界說(shuō)低代碼是“高級(jí)外包”倒也沒(méi)說(shuō)錯(cuò),雖然我覺(jué)得既然用的是低代碼應(yīng)該叫“低級(jí)外包”更合適。
最后的最后,我再次呼吁分析機(jī)構(gòu)能夠區(qū)分低代碼和無(wú)代碼,聚焦分析面向通用應(yīng)用開(kāi)發(fā)的低代碼開(kāi)發(fā)平臺(tái),促進(jìn)這個(gè)行業(yè)的認(rèn)知統(tǒng)一,產(chǎn)品的標(biāo)準(zhǔn)化,這樣才能夠推動(dòng)行業(yè)發(fā)展。
無(wú)代碼將死,低代碼長(zhǎng)存!
(部分內(nèi)容來(lái)源網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除)