什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

來(lái)源 | 阿里巴巴云原生公眾號(hào)

作者 | 楚衡

導(dǎo)讀:什么是低代碼?我們?yōu)槭裁葱枰痛a?低代碼會(huì)讓程序員失業(yè)嗎?本文總結(jié)了低代碼領(lǐng)域的基本概念、核心價(jià)值與行業(yè)現(xiàn)狀,帶你全面了解低代碼。

前言

如果選擇用一個(gè)關(guān)鍵詞來(lái)代表即將過(guò)去的 2020 年,我相信所有人都會(huì)認(rèn)同是“新冠”。疫情來(lái)得太快就像龍卷風(fēng),短短數(shù)月就阻斷了全世界范圍內(nèi)無(wú)數(shù)人與人之間的物理連接。但好在,我們已經(jīng)全面邁入互聯(lián)網(wǎng)時(shí)代:

  • N95 口罩再厚,也阻擋不了信息比特流的順暢流通(宅男:B 站依然香)。
  • 居家隔離再久,也妨礙不了釘釘消息的準(zhǔn)時(shí)送達(dá)(社畜:工作依然苦)。

逍遙子在 9 月份的云棲大會(huì)上說(shuō):“新技術(shù)代表的新生產(chǎn)力,一定是我們?nèi)賾?zhàn)勝疫情、開(kāi)創(chuàng)未來(lái)最好的原動(dòng)力?!?那么在后疫情時(shí)代,究竟需要什么樣的新技術(shù),才能真正解放 IT 生產(chǎn)力,加速社會(huì)數(shù)字化轉(zhuǎn)型,Make The World Great Again?我認(rèn)為是低代碼(Low-Code)。

基于經(jīng)典的可視化和模型驅(qū)動(dòng)理念,結(jié)合最新的云原生與多端體驗(yàn)技術(shù),低代碼能夠在合適的業(yè)務(wù)場(chǎng)景下實(shí)現(xiàn)大幅度的提效降本,為專(zhuān)業(yè)開(kāi)發(fā)者提供了一種全新的高生產(chǎn)力開(kāi)發(fā)范式(Paradigm Shift)。另一方面,低代碼還能讓不懂代碼的業(yè)務(wù)人員成為所謂的平民開(kāi)發(fā)者(Citizen Developer),彌補(bǔ)日益擴(kuò)大的專(zhuān)業(yè)人才缺口,同時(shí)促成業(yè)務(wù)與技術(shù)深度協(xié)作的終極敏捷形態(tài)(BizDevOps)。本文將重點(diǎn)介紹低代碼相關(guān)背景知識(shí),包括低代碼的定義與意義、相關(guān)概念、行業(yè)發(fā)展等,期望能幫助大家更好地認(rèn)識(shí)與理解低代碼這個(gè)新興領(lǐng)域。

什么是低代碼?

“Low-Code” 是什么?如果你是第一次聽(tīng)說(shuō),沒(méi)準(zhǔn)也會(huì)跟我當(dāng)年從老板口中聽(tīng)到這個(gè)詞后的內(nèi)心戲一樣:啥?“Low-Code”?“Code” 是指代碼我知道,但這個(gè)“Low”字是啥意思?不會(huì)是老板發(fā)現(xiàn)我最近趕工寫(xiě)的代碼很丑很 “Low” 吧… 想多了,老板怎么可能親自 review 代碼呢。那難道是指,“Low-level programming”里的“Low”?老板終于發(fā)現(xiàn)讓我等編程奇才整天堆 Java 業(yè)務(wù)代碼太浪費(fèi),要派我去閉關(guān)寫(xiě)一個(gè)高性能 C 語(yǔ)言網(wǎng)絡(luò)庫(kù)… 顯然也不是,老板哪能有這技術(shù)情懷呢。那到底是什么意思?作為一名搜商比情商還高的程序員,能問(wèn) Google 的絕不會(huì)問(wèn)老板。于是我一頓操作后,不假思索地點(diǎn)開(kāi)了第一條搜索結(jié)果。果不其然,這是一條充滿自由芳香只有翻墻才能聞到的 Wikipedia 詞條:Low-code development platform。

1. Wikipedia 定義

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

從 Wiki 的這段定義中,我們可以提煉出幾個(gè)關(guān)鍵信息:

  • 低代碼開(kāi)發(fā)平臺(tái)(LCDP)本身也是一種軟件,它為開(kāi)發(fā)者提供了一個(gè)創(chuàng)建應(yīng)用軟件的開(kāi)發(fā)環(huán)境。看到“開(kāi)發(fā)環(huán)境”幾個(gè)字是不是很親切?對(duì)于程序員而言,低代碼開(kāi)發(fā)平臺(tái)的性質(zhì)與 IDEA、VS 等代碼 IDE(集成開(kāi)發(fā)環(huán)境)幾乎一樣,都是服務(wù)于開(kāi)發(fā)者的生產(chǎn)力工具。
  • 與傳統(tǒng)代碼 IDE 不同的是,低代碼開(kāi)發(fā)平臺(tái)提供的是更高維和易用的可視化 IDE。大多數(shù)情況下,開(kāi)發(fā)者并不需要使用傳統(tǒng)的手寫(xiě)代碼方式進(jìn)行編程,而是可以通過(guò)圖形化拖拽、參數(shù)配置等更高效的方式完成開(kāi)發(fā)工作。

2. Forrester 定義

順著 Wiki 的描述還能發(fā)現(xiàn),原來(lái) “Low-Code” 一詞早在 2014 年就由 Forrester 提出了,它對(duì)低代碼開(kāi)發(fā)平臺(tái)的始祖級(jí)定義是這樣的:

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

相比 Wiki 的版本,這個(gè)定義更偏向于闡明低代碼所帶來(lái)的核心價(jià)值:

  • 低代碼開(kāi)發(fā)平臺(tái)能夠?qū)崿F(xiàn)業(yè)務(wù)應(yīng)用的快速交付。也就是說(shuō),不只是像傳統(tǒng)開(kāi)發(fā)平臺(tái)一樣“能”開(kāi)發(fā)應(yīng)用而已,低代碼開(kāi)發(fā)平臺(tái)的重點(diǎn)是開(kāi)發(fā)應(yīng)用更“快”。更重要的是,這個(gè)快的程度是顛覆性的:根據(jù) Forrester 在 2016 年的調(diào)研,大部分公司反饋低代碼平臺(tái)幫助他們把開(kāi)發(fā)效率提升了 5-10 倍。而且我們有理由相信,隨著低代碼技術(shù)、產(chǎn)品和行業(yè)的不斷成熟,這個(gè)提升倍數(shù)還能繼續(xù)上漲。
  • 低代碼開(kāi)發(fā)平臺(tái)能夠降低業(yè)務(wù)應(yīng)用的開(kāi)發(fā)成本。一方面,低代碼開(kāi)發(fā)在軟件全生命周期流程上的投入都要更低(代碼編寫(xiě)更少、環(huán)境設(shè)置和部署成本也更簡(jiǎn)單);另一方面,低代碼開(kāi)發(fā)還顯著降低了開(kāi)發(fā)人員的使用門(mén)檻,非專(zhuān)業(yè)開(kāi)發(fā)者經(jīng)過(guò)簡(jiǎn)單的IT基礎(chǔ)培訓(xùn)就能快速上崗,既能充分調(diào)動(dòng)和利用企業(yè)現(xiàn)有的各方面人力資源,也能大幅降低對(duì)昂貴專(zhuān)業(yè)開(kāi)發(fā)者資源的依賴(lài)。

3. 低代碼核心能力

基于上述的定義和分析,不難總結(jié)出如下以下 3 條低代碼開(kāi)發(fā)平臺(tái)的核心能力:

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

  • 全??梢暬幊?/strong>:可視化包含兩層含義,一個(gè)是編輯時(shí)支持的點(diǎn)選、拖拽和配置操作;另一個(gè)是編輯完成后所及即所得(WYSIWYG)的預(yù)覽效果。傳統(tǒng)代碼 IDE 也支持部分可視化能力(如早年 Visual Studio 的 MFC/WPF),但低代碼更強(qiáng)調(diào)的是全棧、端到端的可視化編程,覆蓋一個(gè)完整應(yīng)用開(kāi)發(fā)所涉及的各個(gè)技術(shù)層面(界面/數(shù)據(jù)/邏輯)。
  • 全生命周期管理:作為一站式的應(yīng)用開(kāi)發(fā)平臺(tái),低代碼支持應(yīng)用的完整生命周期管理,即從設(shè)計(jì)階段開(kāi)始(有些平臺(tái)還支持更前置的項(xiàng)目與需求管理),歷經(jīng)開(kāi)發(fā)、構(gòu)建、測(cè)試和部署,一直到上線后的各種運(yùn)維(e.g. 監(jiān)控報(bào)警、應(yīng)用上下線)和運(yùn)營(yíng)(e.g. 數(shù)據(jù)報(bào)表、用戶(hù)反饋)。
  • 低代碼擴(kuò)展能力:使用低代碼開(kāi)發(fā)時(shí),大部分情況下仍離不開(kāi)代碼,因此平臺(tái)必須能支持在必要時(shí)通過(guò)少量的代碼對(duì)應(yīng)用各層次進(jìn)行靈活擴(kuò)展,比如添加自定義組件、修改主題 CSS 樣式、定制邏輯流動(dòng)作等。一些可能的需求場(chǎng)景包括:UI 樣式定制、遺留代碼復(fù)用、專(zhuān)用的加密算法、非標(biāo)系統(tǒng)集成。

4. 不只是少寫(xiě)代碼

回到最初那個(gè)直擊心靈的小白問(wèn)題:Low-Code 中的 “Low”,到底是啥意思?答案已經(jīng)顯而易見(jiàn):既不是指抽象程度很低(相反,低代碼開(kāi)發(fā)方式的抽象程度要比傳統(tǒng)編程語(yǔ)言高一個(gè) level),也不是指代碼很 low(也相反,低代碼所生成的代碼一般都經(jīng)過(guò)精心維護(hù)和反復(fù)測(cè)試,整體質(zhì)量強(qiáng)于大部分手寫(xiě)代碼),而是單純的“少寫(xiě)代碼” —— 只在少數(shù)需要的情況下才手寫(xiě)代碼,其他大部分時(shí)候都能用可視化等非代碼方式解決。

再往深一點(diǎn)兒看,低代碼不只是少寫(xiě)代碼而已:代碼寫(xiě)得少,bug 也就越少(正所謂“少做少錯(cuò)”),因此開(kāi)發(fā)環(huán)節(jié)的兩大支柱性工作“趕需求”和“修 bug”就都少了;要測(cè)的代碼少了,那么測(cè)試用例也可以少寫(xiě)不少;除了開(kāi)發(fā)階段以外,平臺(tái)還覆蓋了后續(xù)的應(yīng)用構(gòu)建、部署和管理,因此運(yùn)維操作也更少了(Low-Code → Low-Ops)。

然而,少并不是最終目的:如果單純只是想達(dá)到少的效果,砍需求減人力、降低質(zhì)量要求也是一樣的。低代碼背后的哲學(xué),是少即是多(Less is More),或者更準(zhǔn)確說(shuō)是多快好?。―o More with Less) —— 能力更多、上線更快、質(zhì)量更好,成本還更省,深刻踐行了阿里“既要,又要,還要”的價(jià)值觀精髓。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

5. 平臺(tái)的職責(zé)與挑戰(zhàn)

上面說(shuō)的是低代碼給開(kāi)發(fā)者提供的能力與吸引力,那么作為服務(wù)的提供方與應(yīng)用的承載者,低代碼開(kāi)發(fā)平臺(tái)自身應(yīng)該承擔(dān)怎樣的職責(zé),其中又會(huì)遇到多大的挑戰(zhàn)?是否就一定要如阿里云所主張的那樣,“把復(fù)雜留給自己,把簡(jiǎn)單留給別人”?雖然這句話聽(tīng)起來(lái)很深明大義,但不知道大家有沒(méi)有想過(guò),為什么我們一定要抱著復(fù)雜不放,平白無(wú)故給自己找事?就不能直接干掉復(fù)雜,也給咱阿里云自己的員工留點(diǎn)簡(jiǎn)單嗎?是工作太容易就體現(xiàn)不出來(lái) KPI 價(jià)值了,還是家里的飯菜不如公司的夜宵香?

冥思苦想許久后,我從熱力學(xué)第一定律中找到了答案:開(kāi)發(fā)一個(gè)應(yīng)用的總復(fù)雜度是恒定的,只能轉(zhuǎn)移而不可能憑空消失。要想讓開(kāi)發(fā)者做的更少,安心享受簡(jiǎn)單的快樂(lè),那么平臺(tái)方就得做的更多,默默承擔(dān)盡可能多的復(fù)雜度。就像一個(gè)滿身腱子肉的雜技男演員,四平八穩(wěn)地托舉著在高處旋轉(zhuǎn)與跳躍的女搭檔;上面的人顯得越輕盈越毫不費(fèi)力,下面的人就得越穩(wěn)重越用盡全力。當(dāng)然,不是說(shuō)上面的女演員就很輕松沒(méi)壓力,只是他們各自的分工不同,所承擔(dān)的復(fù)雜度也不一樣。

根據(jù)《人月神話》作者 Fred Brooks 的劃分,軟件開(kāi)發(fā)的復(fù)雜度可以劃分為本質(zhì)復(fù)雜度(Essential complexity )和偶然復(fù)雜度(Accidental complexity)。前者是解決問(wèn)題時(shí)固有的最小復(fù)雜度,跟你用什么樣的工具、經(jīng)驗(yàn)是否豐富、架構(gòu)好不好等都無(wú)關(guān),而后者就是除此之外在實(shí)際開(kāi)發(fā)過(guò)程中引入的復(fù)雜度。通常來(lái)說(shuō),本質(zhì)復(fù)雜度與業(yè)務(wù)要解決的特定問(wèn)題域強(qiáng)相關(guān),因此這里我把它稱(chēng)為更好理解的“業(yè)務(wù)復(fù)雜度”;這部分復(fù)雜度不是任何開(kāi)發(fā)方法或工具能解決的,包括低代碼。而偶然復(fù)雜度一般與開(kāi)發(fā)階段的技術(shù)細(xì)節(jié)強(qiáng)相關(guān),因此我也相應(yīng)把它稱(chēng)為“技術(shù)復(fù)雜度”;而這一部分復(fù)雜度,恰好就是低代碼所擅長(zhǎng)且適合解決的。

為開(kāi)發(fā)者盡可能屏蔽底層技術(shù)細(xì)節(jié)、減少不必要的技術(shù)復(fù)雜度,并支撐其更好地應(yīng)對(duì)業(yè)務(wù)復(fù)雜度(滿足靈活通用的業(yè)務(wù)場(chǎng)景需求),這是身為一個(gè)低代碼開(kāi)發(fā)平臺(tái)所應(yīng)該盡到的核心職責(zé)。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

在盡到上述職責(zé)的同時(shí),低代碼開(kāi)發(fā)平臺(tái)作為一個(gè)面向開(kāi)發(fā)者的產(chǎn)品,還需要致力于為開(kāi)發(fā)者提供簡(jiǎn)單直觀的極致開(kāi)發(fā)體驗(yàn)。這背后除了巨大的工作量,還得能在“強(qiáng)大”和“易用”這兩個(gè)很難兩全其美的矛盾點(diǎn)之間,努力找到一個(gè)符合自己產(chǎn)品定位與目標(biāo)客戶(hù)需求的平衡點(diǎn) —— 這也許是設(shè)計(jì)一個(gè)通用低代碼開(kāi)發(fā)平臺(tái)所面臨的最大挑戰(zhàn)。

低代碼相關(guān)概念對(duì)比

1. 純代碼(Pro-Code / Custom-Code)

“純代碼”可能算是我杜撰的一個(gè)詞,更常見(jiàn)的說(shuō)法是專(zhuān)業(yè)代碼(Pro-Code)或定制代碼(Custom-Code);但意思都一樣,就是指?jìng)鹘y(tǒng)的以代碼為中心(Code-Centric)的開(kāi)發(fā)模式。之所以我選擇用“純代碼”,是因?yàn)槿绻谩皩?zhuān)業(yè)代碼”會(huì)顯得似乎低代碼就不專(zhuān)業(yè)了一樣,而用“定制代碼”又容易讓人誤解成低代碼無(wú)法支持定制的自定義代碼。

當(dāng)然,更準(zhǔn)確的稱(chēng)謂我認(rèn)為是“高代碼”(與低代碼恰好對(duì)應(yīng),只是名字太難聽(tīng),被我嫌棄了…),因?yàn)榧幢闶鞘褂脗鹘y(tǒng)的代碼 IDE,有些開(kāi)發(fā)工作也支持(甚至更適合)以非代碼方式完成,比如:iOS 端開(kāi)發(fā)時(shí)使用的 SwiftUI 界面設(shè)計(jì)器、服務(wù)端開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用時(shí)使用的 PowerDesigner 建模工具。不過(guò)這部分可視化工作在傳統(tǒng)開(kāi)發(fā)模式下只是起輔助作用,最后通常也是生成開(kāi)發(fā)者可直接修改的代碼;開(kāi)發(fā)者仍然是以代碼為中心來(lái)開(kāi)展主要工作。

低代碼與純代碼之間的關(guān)系,其實(shí)跟視頻和文章之間很像:

  • 低代碼就像是現(xiàn)代的“視頻”,大部分內(nèi)容都由直觀易理解、表達(dá)能力強(qiáng)的圖片組成,因此更容易被大眾所接受。但與此同時(shí),視頻也不是死板得只能有圖片,完全可以添加少量文字(如字幕、標(biāo)注)來(lái)彌補(bǔ)圖片表達(dá)不夠精確的問(wèn)題。BTW,關(guān)于“圖”和“文字”之間的辯證關(guān)系,可以進(jìn)一步參考《架構(gòu)制圖:工具與方法論》這篇文章中的相關(guān)描述。
  • 純代碼則更像是傳統(tǒng)的“文章”,雖然很久以來(lái)都一直是信息傳播的唯一媒介,但自從視頻技術(shù)誕生以及相應(yīng)軟硬件基礎(chǔ)設(shè)施的普及以來(lái),便逐漸開(kāi)始被搶走了風(fēng)頭。如今,視頻已成為大部分人獲取信息的主要渠道(從電視電影到 B 站抖音),而經(jīng)常讀書(shū)讀文章的人卻越來(lái)越少。但不可否認(rèn)的是,文章依然有它存在的意義和受眾(不然我也不會(huì)費(fèi)這勁敲這么多字了),即使“市場(chǎng)份額”一直在被擠壓,但永遠(yuǎn)會(huì)有它立足的空間。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

如果按上面這種類(lèi)比關(guān)系推導(dǎo),低代碼未來(lái)也會(huì)遵循與視頻類(lèi)似的發(fā)展軌跡,超越純代碼成為主流開(kāi)發(fā)模式。Gartner 的預(yù)測(cè)也表達(dá)了相同的觀點(diǎn):到 2024 年,所有應(yīng)用程序開(kāi)發(fā)活動(dòng)當(dāng)中的 65% 將通過(guò)低代碼的方式完成,同時(shí) 75% 的大型企業(yè)將使用至少四種低代碼開(kāi)發(fā)工具進(jìn)行應(yīng)用開(kāi)發(fā)。

但同樣地,就像是視頻永遠(yuǎn)無(wú)法取代文章一樣,低代碼也永遠(yuǎn)無(wú)法徹底取代純代碼開(kāi)發(fā)方式。未來(lái)低代碼和純代碼方式將以互補(bǔ)的形態(tài)長(zhǎng)期共存,各自在其所適合的業(yè)務(wù)場(chǎng)景中發(fā)光發(fā)熱。在后面的“低代碼業(yè)務(wù)場(chǎng)景”章節(jié),會(huì)詳細(xì)列出哪些場(chǎng)景在現(xiàn)階段更適合用低代碼模式開(kāi)發(fā)。

2. 零代碼(Zero-Code / No-Code)

從分類(lèi)的完備性角度來(lái)看,有“純代碼”自然也應(yīng)該有完全相反的“零代碼”(也稱(chēng)為“無(wú)代碼”)。零代碼就是完全不需要寫(xiě)代碼的應(yīng)用開(kāi)發(fā)平臺(tái),但這并不代表零代碼就比低代碼更高級(jí)和先進(jìn),它只是做了一個(gè)更極端的選擇而已:徹底擁抱簡(jiǎn)單的圖形可視化,完全消滅復(fù)雜的文本代碼。選擇背后的原因是,零代碼開(kāi)發(fā)平臺(tái)期望能盡可能降低應(yīng)用開(kāi)發(fā)門(mén)檻,讓人人都能成為開(kāi)發(fā)者(注意:開(kāi)發(fā) ≠ 寫(xiě)代碼),包括完全不懂代碼的業(yè)務(wù)分析師、用戶(hù)運(yùn)營(yíng),甚至是產(chǎn)品經(jīng)理(不懂裝懂可不算懂)。

即便是專(zhuān)業(yè)開(kāi)發(fā)者,在技術(shù)分工越來(lái)越精細(xì)的趨勢(shì)下(前端/后端/算法/SRE/數(shù)據(jù)分析..),也很難招到一個(gè)能獨(dú)立開(kāi)發(fā)和維護(hù)整套復(fù)雜應(yīng)用的全棧工程師。但零代碼可以改變這一切:無(wú)論是 Java 和 JavaScript 傻傻分不清楚的技術(shù)小白,還是精通深度學(xué)習(xí)但沒(méi)時(shí)間學(xué)習(xí) Web 開(kāi)發(fā)的算法大牛,都可以通過(guò)零代碼實(shí)現(xiàn)自己的技術(shù)夢(mèng)或全棧夢(mèng)?!案淖兪澜绲?idea 已有,就差一個(gè)程序員了”,這句玩笑話或許真的可以成真;哦不,甚至都用不著程序員,有 idea 的人自己就能上。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

當(dāng)然,所有選擇都要付出代價(jià),零代碼也不例外。完全拋棄代碼的代價(jià),就是平臺(tái)能力與靈活性受限:

  • 一方面,可視化編輯器的表達(dá)能力遠(yuǎn)不及圖靈完備的通用編程語(yǔ)言,不引入代碼根本沒(méi)法實(shí)現(xiàn)靈活的定制與擴(kuò)展(當(dāng)然,理論上也可以做成 Scrach/Blockly 那樣的圖形編程語(yǔ)言,但那樣不過(guò)是換一種形式在手寫(xiě)代碼而已)。
  • 另一方面,由于目標(biāo)受眾是非專(zhuān)業(yè)開(kāi)發(fā)人員,平臺(tái)能支持的操作會(huì)更趨于“傻瓜化”(e.g. 頁(yè)面只支持大塊業(yè)務(wù)組件的簡(jiǎn)單堆疊,不支持細(xì)粒度原子組件和靈活的 CSS 布局定義),同時(shí)也只會(huì)透出相對(duì)“親民化”的模型和概念(e.g. 使用“表格”表示數(shù)據(jù),而不是用“數(shù)據(jù)庫(kù)”),無(wú)法支撐強(qiáng)大專(zhuān)業(yè)的底層開(kāi)發(fā)原語(yǔ)和編程理念。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

雖然零代碼與狹義上的低代碼有著上述明顯差異,但從廣義上來(lái)說(shuō),零代碼可以當(dāng)作低代碼的一個(gè)子集。Gartner 在其相關(guān)調(diào)研報(bào)告中,就是將 “No Code” 劃在了范圍更廣的低代碼應(yīng)用平臺(tái)“LCAP”(Low-Code Application Platform)中。而當(dāng)前市面上很多通用的低代碼開(kāi)發(fā)平臺(tái),也都兼具一定程度的零代碼能力;比如低代碼領(lǐng)域領(lǐng)頭羊 Mendix,既提供了簡(jiǎn)單易用的零代碼 Web IDE – Mendix Studio,也包括一個(gè)功能更強(qiáng)大的低代碼桌面 IDE – Mendix Studio Pro。

3. HpaPaaS(高生產(chǎn)力應(yīng)用 PaaS)

上文提到,“Low-Code” 一詞是拜 Forrester 所賜。作為同樣是國(guó)際知名調(diào)研機(jī)構(gòu)(a.k.a 造詞小能手)的 Gartner,顯然不會(huì)輕易在這場(chǎng)可能決定低代碼領(lǐng)域江湖地位的新概念作詞大賽中認(rèn)輸,于是也于 2017 年發(fā)明了 “HpaPaaS”(High-productivity application Platform as a Service)這個(gè)聽(tīng)上去更高大上的縮寫(xiě)詞。

按照 Gartner 的定義,HpaPaaS 是一種支持聲明式、模型驅(qū)動(dòng)設(shè)計(jì)和一鍵部署的平臺(tái),提供了云上的快速應(yīng)用開(kāi)發(fā)(RAD)、部署和運(yùn)行特性;這顯然與低代碼的定義如出一轍。但事實(shí)證明,名字起得太專(zhuān)業(yè)并不見(jiàn)得是好事,“HpaPaas” 最終還是敗給了起源更早、更接地氣也更順口的 “Low-Code”:從 2019 年開(kāi)始,Gartner 在其相關(guān)調(diào)研報(bào)告中也開(kāi)始全面采用 “Low-Code” 一詞(如 LCAP),親手為 “HpaPaaS” 打上了 @deprecated 印記。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

圖源:https://blog.kintone.com/business-with-heart/difference-SaaS-iaas-paas-apaas-hpapaas

值得補(bǔ)充的是,“HpaPaaS“ 這個(gè)詞也并非橫空出世,而是傳承自更早之前 Gartner 提出的 “aPaaS”,它倆之間的關(guān)系是:HpaPaaS 只是 aPaaS 的一個(gè)子類(lèi);除了 HpaPaaS 這種通過(guò)低代碼實(shí)現(xiàn)的高生產(chǎn)力應(yīng)用開(kāi)發(fā)平臺(tái)以外,aPaaS 還包括面向純代碼的傳統(tǒng)應(yīng)用開(kāi)發(fā)平臺(tái)(High-control aPaaS,即可控度更高的純代碼開(kāi)發(fā)方式)。

不值得但就想八卦一下的是,“aPaaS” 這個(gè)詞也非憑空捏造,而是與云計(jì)算的興起淵源頗深。相信各位云道中人都已猜到,aPaaS 與 IaaS/PaaS/SaaS 這些云計(jì)算遠(yuǎn)古概念是一脈相承的:aPaaS 介于 PaaS 和 SaaS 之間,相比 PaaS 提供的服務(wù)更偏應(yīng)用,但又不像 SaaS 一樣提供現(xiàn)成的軟件服務(wù)(更詳細(xì)的說(shuō)明可參考配圖來(lái)源文章)。

為什么需要低代碼?

低代碼是什么可能并沒(méi)那么重要,畢竟在這個(gè)信息爆炸的世界,永遠(yuǎn)不缺少新奇而又短命的事物。大部分所謂的新技術(shù)都只是曇花一現(xiàn):出現(xiàn)了,被看到了;大部分人“哦”了一聲,已閱但表示不感興趣;小部分人驚嘆于它的奇思妙想,激動(dòng)地點(diǎn)了個(gè)贊后,回過(guò)頭來(lái)該用什么還是什么。真正決定新技術(shù)是否能轉(zhuǎn)化為新生產(chǎn)力的,永遠(yuǎn)不是技術(shù)本身有多么優(yōu)秀和華麗,而是它是否真的被需要,即:為什么需要低代碼?如果用不同的主語(yǔ)填充上面這個(gè)問(wèn)句(冷知識(shí):這叫做“延遲主語(yǔ)初始化”),可以更全面地看待這個(gè)問(wèn)題:

1. 為什么「市場(chǎng)」需要低代碼?

在這個(gè)大爺大媽都滿嘴“互聯(lián)網(wǎng) ”和“數(shù)字化轉(zhuǎn)型”的時(shí)代,企業(yè)越來(lái)越需要通過(guò)應(yīng)用(App)來(lái)改善企業(yè)內(nèi)部的信息流轉(zhuǎn)、強(qiáng)化與客戶(hù)之間的觸點(diǎn)連接。然而,誕生還不太久的 IT 信息時(shí)代,也正面臨著與我國(guó)社會(huì)主義初級(jí)階段類(lèi)似的供需關(guān)系矛盾:落后的軟件開(kāi)發(fā)生產(chǎn)力跟不上人民日益增長(zhǎng)的業(yè)務(wù)需求。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

Gartner 預(yù)測(cè),到 2021 年應(yīng)用開(kāi)發(fā)需求的市場(chǎng)增長(zhǎng)將至少超過(guò)企業(yè) IT 交付能力的 5 倍。面對(duì)如此巨大的 IT 缺口,如果沒(méi)有一種革命性的“新生產(chǎn)力”體系,很難想象僅憑現(xiàn)有傳統(tǒng)技術(shù)體系的發(fā)展延續(xù)就能徹底解決問(wèn)題。而低代碼技術(shù)正是帶著這樣的使命而降臨,期望通過(guò)以下幾個(gè)方面徹底革新應(yīng)用開(kāi)發(fā)生產(chǎn)力,拯救差一點(diǎn)就要邁入水深火熱的 IT 世界:

1)提效降本 & 質(zhì)量保障

雖然軟件行業(yè)一直在高速發(fā)展,新的語(yǔ)言、框架和工具層出不窮,但作為從業(yè)者我們不得不承認(rèn):軟件開(kāi)發(fā)仍處于手工作坊階段,效率低、人力成本高、質(zhì)量不可控。項(xiàng)目延期交付已成為行業(yè)常態(tài),而瓶頸幾乎總是開(kāi)發(fā)人員(對(duì)機(jī)器能解決的問(wèn)題都不是問(wèn)題);優(yōu)秀的開(kāi)發(fā)人才永遠(yuǎn)是稀缺資源,還賊貴;軟件質(zhì)量缺陷始終無(wú)法收斂,線上故障頻發(fā)資損不斷。

相比而言,傳統(tǒng)制造業(yè)經(jīng)過(guò)幾百年工業(yè)革命的發(fā)展,大部分早已擺脫了對(duì)“人”的強(qiáng)依賴(lài):從原料輸入到制品輸出,中間是各種精密儀器和自動(dòng)化流水線的穩(wěn)定支撐,真正實(shí)現(xiàn)生產(chǎn)的標(biāo)準(zhǔn)化和規(guī)?;?。雖然信息化號(hào)稱(chēng)是人類(lèi)的第三次工業(yè)革命,但以軟件行業(yè)目前的狀況,遠(yuǎn)遠(yuǎn)還沒(méi)到達(dá)成熟的“工業(yè)化”階段。

所以,親愛(ài)的程序員朋友,當(dāng)你與前端聯(lián)調(diào)了一上午接口,又與產(chǎn)品撕逼了一下午需求,再與自己的 bug 抗?fàn)幜艘徽?,好不容易遁入?mèng)鄉(xiāng)又被一連串報(bào)警短信吵醒時(shí),是否有抬頭對(duì)著星空憧憬過(guò):“I have a dream… that one day,軟件開(kāi)發(fā)也能像工業(yè)制品一樣,批量流水化生產(chǎn),穩(wěn)定高效沒(méi)煩惱。” 事到如今,不管你有沒(méi)有意識(shí)到,這個(gè)憧憬正在慢慢變成現(xiàn)實(shí)。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

是的,低代碼正在將應(yīng)用軟件開(kāi)發(fā)過(guò)程工業(yè)化:每個(gè)低代碼開(kāi)發(fā)平臺(tái)都是一個(gè)技術(shù)密集型的應(yīng)用工廠,所有項(xiàng)目相關(guān)人員都在同一條產(chǎn)線內(nèi)緊密協(xié)作。開(kāi)發(fā)主力不再是熟知 for 循環(huán)一百種寫(xiě)法的技術(shù) Geek,而是一群心懷想法業(yè)務(wù) sense 十足的應(yīng)用 Maker。借助應(yīng)用工廠中各種成熟的基礎(chǔ)設(shè)施、現(xiàn)成的標(biāo)準(zhǔn)零件、自動(dòng)化的裝配流水線,開(kāi)發(fā)者只需要專(zhuān)注于最核心的業(yè)務(wù)價(jià)值即可。即便是碰到非標(biāo)需求,也可以隨時(shí)自己動(dòng)手,用最靈活的手工定制(代碼)方式來(lái)解決各種邊角問(wèn)題。

2)擴(kuò)大應(yīng)用開(kāi)發(fā)勞動(dòng)力

通過(guò)讓大部分開(kāi)發(fā)工作可以?xún)H通過(guò)簡(jiǎn)單的拖拽與配置完成,低代碼(包括零代碼)顯著降低了使用者門(mén)檻,讓企業(yè)能夠充分利用前面所提到的平民開(kāi)發(fā)者資源。部分純零代碼需求場(chǎng)景下,低代碼還能讓業(yè)務(wù)人員實(shí)現(xiàn)自助式(self-service)應(yīng)用交付,既解決了傳統(tǒng) IT 交付模式下的任務(wù)堆積(backlog)問(wèn)題,避免稀缺的專(zhuān)業(yè)開(kāi)發(fā)資源被大量簡(jiǎn)單、重復(fù)性的應(yīng)用開(kāi)發(fā)需求所侵占,也能讓業(yè)務(wù)人員真正按自己的想法去實(shí)現(xiàn)應(yīng)用,擺脫交由他人開(kāi)發(fā)時(shí)不可避免的桎梏。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

至此,應(yīng)用開(kāi)發(fā)能力不再是少數(shù)專(zhuān)業(yè)開(kāi)發(fā)者的專(zhuān)利和特權(quán),且今后所需要的技能門(mén)檻與擁有成本也會(huì)越來(lái)越低,真正實(shí)現(xiàn)所謂的“技術(shù)民主化”(democratization of technology)。

3)加強(qiáng)開(kāi)發(fā)過(guò)程的溝通協(xié)作

多方調(diào)查結(jié)果顯示,軟件項(xiàng)目失敗的最主要原因之一就是缺乏溝通(poor communication)。傳統(tǒng)開(kāi)發(fā)模式下,業(yè)務(wù)、產(chǎn)品、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試與運(yùn)維人員各司其職,且各有一套領(lǐng)域內(nèi)的工具和語(yǔ)言,長(zhǎng)久以來(lái)很容易形成一個(gè)個(gè)“豎井”(silos),讓跨職能的溝通變得困難而低效。這也是為什么當(dāng)前熱門(mén)的敏捷開(kāi)發(fā)和 DevOps 都在強(qiáng)調(diào)溝通(前者是協(xié)同 Biz 與 Dev,而后者是協(xié)同 Dev 和 Ops),而經(jīng)典的 DDD 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)也主張通過(guò)“統(tǒng)一語(yǔ)言”來(lái)減少業(yè)務(wù)與技術(shù)人員之間的溝通不一致。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

有了低代碼后,這一狀況將得到根本改善:上述各角色都可以在同一個(gè)低代碼開(kāi)發(fā)平臺(tái)上緊密協(xié)作(甚至可以是同一個(gè)人),這種全新的協(xié)作模式不僅打破了職能豎井,還能通過(guò)統(tǒng)一的可視化語(yǔ)言和單一的應(yīng)用表示(頁(yè)面/數(shù)據(jù)/邏輯),輕松對(duì)齊項(xiàng)目各方對(duì)應(yīng)用形態(tài)和項(xiàng)目進(jìn)度的理解,實(shí)現(xiàn)更終極的敏捷開(kāi)發(fā)模式,以及在傳統(tǒng) DevOps 基礎(chǔ)之上更進(jìn)一步的 BizDevOps。

4)統(tǒng)一開(kāi)發(fā)平臺(tái)下的聚合效應(yīng)

低代碼嘗試將所有與應(yīng)用開(kāi)發(fā)相關(guān)活動(dòng)都收斂到同一個(gè)平臺(tái)(one platform)上后,將會(huì)產(chǎn)生更多方面的聚合效應(yīng)與規(guī)模收益:

  • 人員聚合:除了上一點(diǎn)所提到的各職能角色緊密協(xié)作以外,人員聚合到統(tǒng)一的低代碼開(kāi)發(fā)平臺(tái)進(jìn)行作業(yè)后,還能促進(jìn)整個(gè)項(xiàng)目流程的標(biāo)準(zhǔn)化、規(guī)范化和統(tǒng)一化。
  • 應(yīng)用聚合:一方面,新應(yīng)用的架構(gòu)設(shè)計(jì)、資產(chǎn)復(fù)用、相互調(diào)用變得更容易;另一方面,各應(yīng)用的數(shù)據(jù)都天然互通,同時(shí)平臺(tái)外數(shù)據(jù)也能通過(guò)集成能力進(jìn)行打通,徹底消除企業(yè)的數(shù)據(jù)孤島問(wèn)題。
  • 生態(tài)聚合:當(dāng)?shù)痛a開(kāi)發(fā)平臺(tái)聚合了足夠多的開(kāi)發(fā)者和應(yīng)用后,將形成一個(gè)巨大的、連接一切、有無(wú)限想象力的生態(tài)體系,徹底放飛低代碼的價(jià)值。

2. 為什么「這個(gè)時(shí)代」才需要低代碼?

如果你了解過(guò)市面上各種低代碼產(chǎn)品,不難發(fā)現(xiàn)其實(shí)這個(gè)領(lǐng)域的許多玩家在低代碼概念誕生之前就已經(jīng)存在了,比如:低代碼領(lǐng)域的另一個(gè)巨頭 OutSystems,早在 2001 年就已經(jīng)創(chuàng)立;而去年也被 Forrester 評(píng)為低代碼行業(yè)leader之一的 FileMaker,更是誕生于遙遠(yuǎn)的 1985 年(正好 35 歲,似乎在瘋狂暗示什么)。那么,如果低代碼像前面說(shuō)的那么好,為什么以前沒(méi)有火起來(lái)呢?從技術(shù)和業(yè)務(wù)兩個(gè)角度看,可以歸納為以下原因:

1)技術(shù)成熟度不足

低代碼底層的各項(xiàng)核心技術(shù)(可視化、模型驅(qū)動(dòng)、RAD、BPMS…)都已經(jīng)有漫長(zhǎng)的發(fā)展歷史,看上去似乎只是新瓶裝舊酒。然而理智的人都知道,任何技術(shù)都會(huì)遵循所謂的“技術(shù)成熟度曲線”(The Hype Cycle),不可能剛一誕生就跳過(guò)發(fā)育直接秀翻全場(chǎng),被大規(guī)模采納和投入生產(chǎn)。以模型驅(qū)動(dòng)技術(shù)為例,雖然十幾年前就已經(jīng)有體系化的理論研究(e.g. MDA)和配套工具(e.g. EMF),但在當(dāng)時(shí)的技術(shù)背景下,由于能力不完備、過(guò)于理想化、技術(shù)門(mén)檻高等原因,一直沒(méi)能在工業(yè)界走向主流。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

而如今這個(gè)時(shí)代,支撐低代碼的那些“老”技術(shù)都已經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展醞釀與市場(chǎng)檢驗(yàn),而另一些完美互補(bǔ)的“新”技術(shù)(e.g. 云原生、響應(yīng)式 Web)也在飛速發(fā)展和走向成熟,是時(shí)候通過(guò)“低代碼”這個(gè)新酒瓶重新包裝上市,為亟需新生產(chǎn)力的傳統(tǒng)IT市場(chǎng)帶來(lái)一場(chǎng)真香之旅了。

2)業(yè)務(wù)收益不明顯

即使十幾年前的低代碼技術(shù)已經(jīng)足夠成熟,也一定不會(huì)在當(dāng)年的應(yīng)用開(kāi)發(fā)市場(chǎng)上產(chǎn)生現(xiàn)在這樣的影響力。為什么?因?yàn)榧夹g(shù)都是為業(yè)務(wù)服務(wù)的,而當(dāng)時(shí)的應(yīng)用開(kāi)發(fā)業(yè)務(wù)需求可比現(xiàn)在簡(jiǎn)單多了:沒(méi)有如今的多渠道(Multi-channel)、多樣化體驗(yàn)(Multi-experience)和各種集成與定制需求,也不會(huì)奢求如今已成為企業(yè)級(jí)應(yīng)用標(biāo)配的彈性、分布式和高可用,更是缺乏快速變化的IT業(yè)務(wù)場(chǎng)景來(lái)推動(dòng)持續(xù)集成與快速交付。

雖然低代碼可以完美解決上述所有問(wèn)題(e.g. 多端應(yīng)用生成、云原生架構(gòu)、API 集成能力),但放在當(dāng)年的市場(chǎng)和業(yè)務(wù)背景下,加上前面所說(shuō)的技術(shù)不成熟度,整體的投入產(chǎn)出比會(huì)很低,不足以讓企業(yè)大面積采納低代碼解決方案。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

而如今這個(gè)時(shí)代,企業(yè)都快被新技術(shù)帶來(lái)的能力和收益“慣壞了”,動(dòng)不動(dòng)就是:我想做一個(gè)送菜應(yīng)用。用戶(hù)端?安卓、iOS、H5、小程序都來(lái)一套。運(yùn)營(yíng)端?一般都在電腦上看,但記得手機(jī)上也得適配啊。服務(wù)端?上云,必須的。哦,我聽(tīng)技術(shù)合伙人說(shuō)現(xiàn)在流行多云架構(gòu),也給我整一套哈。運(yùn)維還要錢(qián)?啥是運(yùn)維?應(yīng)用有了不就能用了嘛,運(yùn)維還要花我錢(qián)?你當(dāng)投資者給我的錢(qián)是大風(fēng)刮來(lái)的??!

如果用傳統(tǒng)的開(kāi)發(fā)模式,這么全套下來(lái)的工時(shí)與報(bào)價(jià),可能早就嚇跑了這群跟產(chǎn)品經(jīng)理一樣天真可愛(ài)的人;但現(xiàn)代化的低代碼技術(shù),可以圓了上面這位創(chuàng)業(yè)者的賣(mài)菜夢(mèng),用白菜一般的價(jià)格,實(shí)現(xiàn)白粉一樣的價(jià)值。當(dāng)年的程維如果能用上現(xiàn)在的低代碼,第一版的滴滴 App 也就不至于被外包做得烏煙瘴氣直接報(bào)廢了(至少能多扛一陣子…)。

3. 為什么「專(zhuān)業(yè)開(kāi)發(fā)者」也需要低代碼?

雖然零代碼確實(shí)是設(shè)計(jì)給非專(zhuān)業(yè)開(kāi)發(fā)者用的,但其所能支撐的業(yè)務(wù)場(chǎng)景確實(shí)有限,無(wú)法真正革新傳統(tǒng)開(kāi)發(fā)模式,替代那些仍需專(zhuān)業(yè)開(kāi)發(fā)者參與的復(fù)雜業(yè)務(wù)場(chǎng)景。而狹義上的低代碼卻有潛力做到這一點(diǎn),因?yàn)樗焐褪菫閷?zhuān)業(yè)開(kāi)發(fā)者而量身定制的。Gartner 最近的一項(xiàng)調(diào)研報(bào)告顯示,“66% 的低代碼開(kāi)發(fā)平臺(tái)用戶(hù)都是企業(yè) IT 部門(mén)的專(zhuān)業(yè)開(kāi)發(fā)者”。這充分說(shuō)明了,專(zhuān)業(yè)開(kāi)發(fā)者比平民開(kāi)發(fā)者更需要低代碼。

屏幕前一批穿格子襯衫的同學(xué)要發(fā)問(wèn)了:“低代碼都不怎么寫(xiě)代碼了,怎么能算是為我們程序員服務(wù)呢?”。雖然程序員討厭重復(fù)自己,但重要的事情還是得多說(shuō)一遍:開(kāi)發(fā) ≠ 寫(xiě)代碼。1 萬(wàn)年前蹲在洞穴里的原始人,在用小石子畫(huà)遠(yuǎn)古圖騰;100 年前坐在書(shū)桌前的徐志摩,在用鋼筆給林徽因?qū)懬闀?shū);而今天趴在屏幕前的很多人,相信都已經(jīng)開(kāi)始用上手寫(xiě)板或 iPad 涂涂寫(xiě)寫(xiě)了。千百年來(lái),人類(lèi)使用的工具一直在演進(jìn),但所從事活動(dòng)的本質(zhì)并沒(méi)有多大改變。無(wú)論是用小石子還是小鼠標(biāo),寫(xiě)作繪畫(huà)的本質(zhì)都是創(chuàng)造與表達(dá),最終作品的好壞并不取決于當(dāng)時(shí)你手中拿著什么;同樣地,應(yīng)用開(kāi)發(fā)的本質(zhì)是想法和邏輯,最終價(jià)值的高低也不取決你實(shí)現(xiàn)時(shí)是用的純代碼還是低代碼。

而相比純代碼而言,低代碼極有可能成為更好的下一代生產(chǎn)力工具:

1)減少不必要的工作量

可視化拖拽與參數(shù)配置的極簡(jiǎn)開(kāi)發(fā)模式,結(jié)合模型驅(qū)動(dòng)的代碼自動(dòng)生成機(jī)制,可以消滅絕大部分繁瑣和重復(fù)的 boilerplate 代碼;一站式的部署和運(yùn)維管理平臺(tái),無(wú)需自己搭建 CI/CD 流水線、申請(qǐng)環(huán)境資源、配置監(jiān)控報(bào)警;一次搭建同時(shí)生成、構(gòu)建和發(fā)布多端應(yīng)用,免去人工同步維護(hù)多個(gè)功能重復(fù)的端應(yīng)用;開(kāi)箱即用的組件庫(kù)、模板庫(kù)、主題庫(kù)、連接器等,讓最大化軟件復(fù)用成為可能。總而言之,低代碼能夠讓專(zhuān)業(yè)開(kāi)發(fā)者更專(zhuān)注于創(chuàng)新性、有價(jià)值、有區(qū)分度的工作,而不是把寶貴開(kāi)發(fā)時(shí)間都耗費(fèi)在上面那些不必要的非業(yè)務(wù)核心工作上。

2)強(qiáng)大的平臺(tái)能力支撐

雖然上面列的技術(shù)支撐性工作并不直接產(chǎn)生業(yè)務(wù)價(jià)值,但卻會(huì)直接影響業(yè)務(wù)的性能、成本、穩(wěn)定性、安全性、可持續(xù)發(fā)展能力等。有遠(yuǎn)見(jiàn)的企業(yè),絕不允許犧牲這些重要指標(biāo),來(lái)?yè)Q取短暫的業(yè)務(wù)加速。低代碼開(kāi)發(fā)平臺(tái)深知這一點(diǎn),因此在簡(jiǎn)化和屏蔽底層技術(shù)細(xì)節(jié)的同時(shí),也會(huì)盡可能把自己所 cover 的部分做到最好(至少能和純代碼開(kāi)發(fā)方式一樣好),包括但不限于:

  • 現(xiàn)代化的技術(shù)架構(gòu)和實(shí)現(xiàn):現(xiàn)代化的低代碼開(kāi)發(fā)平臺(tái),在支撐用戶(hù)應(yīng)用時(shí)所選擇的技術(shù)架構(gòu)與實(shí)現(xiàn)方案,也會(huì)是現(xiàn)代化且符合業(yè)界最佳實(shí)踐的,例如,前端基于主流的 HTML5/CSS3 標(biāo)準(zhǔn)和 React 框架,后端基于成熟的 Java 語(yǔ)言、SpringBoot 框架和 MySQL 數(shù)據(jù)庫(kù),部署環(huán)境基于云原生的 Docker 鏡像、CI/CD 流水線、K8s 集群和 Service Mesh 技術(shù)(相關(guān)知識(shí)可參考《正確入門(mén) Service Mesh:起源、發(fā)展和現(xiàn)狀》)。
  • 零成本的技術(shù)升級(jí)和維護(hù):低代碼的高維抽象開(kāi)發(fā)方式,讓?xiě)?yīng)用的核心業(yè)務(wù)邏輯與底層技術(shù)細(xì)節(jié)徹底解耦。開(kāi)發(fā)者在大部分情況下都不需要關(guān)心底層技術(shù)選型,同時(shí)也無(wú)需親自跟進(jìn)這些技術(shù)的版本升級(jí)與漏洞修復(fù),免費(fèi)享受與時(shí)俱進(jìn)的技術(shù)紅利和應(yīng)用安全性提升。即便遇到某些底層技術(shù)或工具需要進(jìn)行徹底更換(比如不再維護(hù)的開(kāi)源項(xiàng)目),開(kāi)發(fā)者也完全不必感知;技術(shù)遷移再費(fèi)勁再難搞,平臺(tái)自己努力就行,對(duì)開(kāi)發(fā)者來(lái)說(shuō)只要服務(wù)一直在線,歲月就依然靜好;事后可能還會(huì)驚喜地發(fā)現(xiàn),應(yīng)用訪問(wèn)突然就變得更快了,仿佛冥冥中自有天助,感激上蒼和低代碼。

3)一體化生態(tài)能力復(fù)用

復(fù)用(Reuse)是提升軟件開(kāi)發(fā)效率和工程質(zhì)量的最有效途徑。傳統(tǒng)的代碼開(kāi)發(fā)模式下,開(kāi)發(fā)者可以通過(guò)提取公共類(lèi)/函數(shù)、引用共享庫(kù)、調(diào)用外部 API 服務(wù)、沉淀代碼片段和模板等方式實(shí)現(xiàn)復(fù)用。在低代碼的世界里,平臺(tái)也可以提供對(duì)應(yīng)的多層次多粒度復(fù)用手段,比如頁(yè)面組件庫(kù)、邏輯函數(shù)庫(kù)、應(yīng)用模板庫(kù)等。

但更重要的是,低代碼平臺(tái)還可以充分發(fā)揮其一體化的生態(tài)優(yōu)勢(shì),提供強(qiáng)大易用的可復(fù)用能力(資產(chǎn))的發(fā)現(xiàn)、集成與共享體系:以頁(yè)面組件為例,你可以直接用系統(tǒng)組件,也可以在平臺(tái)自帶的組件市場(chǎng)上搜索和引用更合適的組件,還可以自己用代碼開(kāi)發(fā)一個(gè)自定義組件并發(fā)布到市場(chǎng)中。平臺(tái)的生態(tài)體系越大,積累的可復(fù)用能力就越多,應(yīng)用的開(kāi)發(fā)成本也會(huì)越低。

相比而言,雖然傳統(tǒng)代碼世界整體生態(tài)更龐大和深厚,但由于各類(lèi)技術(shù)不互通、缺乏統(tǒng)一平臺(tái)與市場(chǎng)、代碼集成成本高等原因,一直以來(lái)都沒(méi)有形成有類(lèi)似規(guī)模潛力的生態(tài)能力復(fù)用體系,導(dǎo)致重復(fù)造輪子和低水平重復(fù)建設(shè)的現(xiàn)象司空見(jiàn)慣,還美名為“新基建”。

說(shuō)到這里,另一批裹著沖鋒衣頭頂锃亮的同學(xué)也忍不住了:“萬(wàn)一低代碼真的發(fā)展起來(lái)了,是不是就不需要那么多程序員了???上有老下有小的,同是碼農(nóng)身,相煎何太急!”。低代碼雖然是一場(chǎng)應(yīng)用開(kāi)發(fā)生產(chǎn)力革命,但并不會(huì)革掉程序員的飯碗。它去掉的只是難懂的編程語(yǔ)法、繁瑣的技術(shù)細(xì)節(jié)和一切可自動(dòng)化的重復(fù)性工作,并沒(méi)有也無(wú)法去掉應(yīng)用開(kāi)發(fā)最核心的東西:嚴(yán)謹(jǐn)?shù)臉I(yè)務(wù)邏輯、巧妙的算法設(shè)計(jì)、良好的工程風(fēng)格等。對(duì)于真正的程序員,即使剝?nèi)ニ粚佑忠粚拥木幊陶Z(yǔ)言和工具熟練度技能外殼,最終剩下的仍然是一個(gè)有價(jià)值的硬核開(kāi)發(fā)者。

當(dāng)然,如果你堅(jiān)持要用純粹的寫(xiě)代碼方式來(lái)改變世界,也不至于失業(yè)。要么,你可以選擇那些低代碼暫時(shí)不太適用的領(lǐng)域,比如底層系統(tǒng)驅(qū)動(dòng)、3D 游戲引擎、火箭發(fā)射程序;或者,你也可以選擇去寫(xiě)低代碼中那一部分不可或缺的自定義代碼擴(kuò)展,為平民開(kāi)發(fā)者提供高質(zhì)量的積木。最后,你也完全可以選擇為低代碼平臺(tái)本身的底層代碼添磚加瓦,比如加入阿里云云原生應(yīng)用研發(fā)平臺(tái) EMAS 團(tuán)隊(duì) (〃'▽'〃) ,與作者一起共建下一代云原生低代碼開(kāi)發(fā)平臺(tái)“Mobi”,內(nèi)推直達(dá)郵箱:pengqun.pq # alibaba-inc.com。

4. 為什么「我不」需要低代碼

即使所有人都認(rèn)同上述“為什么要用低代碼”的理由,但仍不時(shí)會(huì)有試水者跳出來(lái),給大家細(xì)數(shù)“為什么我不需要低代碼”。實(shí)踐出真知沒(méi)錯(cuò),而且大部分質(zhì)疑背后也都有一定道理;但在我看來(lái),更多的可能是主觀或無(wú)意識(shí)的偏見(jiàn)。這里我列了一些對(duì)低代碼的常見(jiàn)質(zhì)疑和我個(gè)人的看法,期望能幫助大家看到一個(gè)更全面和客觀的低代碼。

質(zhì)疑 1:低代碼平臺(tái)不好使

“試用過(guò)一些所謂的低代碼開(kāi)發(fā)平臺(tái),要么能力很弱,要么體驗(yàn)太差,只能開(kāi)發(fā)點(diǎn)玩具應(yīng)用。”

作為調(diào)研過(guò)國(guó)內(nèi)外多款低代碼產(chǎn)品的深度體驗(yàn)用戶(hù),我的觀點(diǎn)是:不能以偏概全。低代碼市場(chǎng)在國(guó)內(nèi)正處于爆發(fā)初期,所以許多與低代碼只沾一點(diǎn)邊的產(chǎn)品也都在蹭熱點(diǎn);但它們并不能代表低代碼目前的業(yè)界水平和發(fā)展方向。市面上真正成熟的企業(yè)級(jí)低代碼開(kāi)發(fā)平臺(tái),完全有能力以高效的開(kāi)發(fā)方式滿足大部分復(fù)雜場(chǎng)景的功能需求,以及企業(yè)級(jí)應(yīng)用所需要的安全、性能、可伸縮等非功能需求,這一點(diǎn)在國(guó)外市場(chǎng)已得到充分驗(yàn)證(不然也不會(huì)這么被寄予厚望)。

當(dāng)然,國(guó)內(nèi)市場(chǎng)尚處于魚(yú)龍混雜的混戰(zhàn)階段,遇到真龍的概率很低,但碰上金魚(yú)鯉魚(yú)甚至木頭假魚(yú)都在所難免。相信隨著時(shí)間推移,真正有實(shí)力和口碑的產(chǎn)品都能脫穎而出,為大家展現(xiàn)低代碼該有的樣子。

質(zhì)疑 2:低代低開(kāi)發(fā)不可控

“平臺(tái)上的各種可視化組件、邏輯動(dòng)作和部署環(huán)境都是黑盒,如果內(nèi)部出問(wèn)題無(wú)法排查和解決?!?/span>

作為同樣不搞清楚底層原理不舒服斯基的程序員,我更愿意相信:?jiǎn)栴}只是暫時(shí)的。雖然這確實(shí)是目前使用低代碼平臺(tái)時(shí)繞不開(kāi)的一個(gè)痛點(diǎn),但并不屬于低代碼技術(shù)本身的固有缺陷。計(jì)算機(jī)領(lǐng)域有一句至理名言:任何問(wèn)題都可以通過(guò)增加一個(gè)間接的中間層來(lái)解決。低代碼的思路亦是如此:與當(dāng)年的操作系統(tǒng)和現(xiàn)在的云平臺(tái)一樣,都是想通過(guò)建立一個(gè)黑盒化的中間層抽象來(lái)降低開(kāi)發(fā)者的工作量與心智負(fù)擔(dān)。

當(dāng)然,所有額外增加的中間層都不是完全免費(fèi)的,低代碼也不例外。作為一個(gè)尚未成熟穩(wěn)定的新的中間層,低代碼必然會(huì)出現(xiàn)各種讓使用者束手無(wú)措的問(wèn)題,就跟當(dāng)年的操作系統(tǒng)內(nèi)核 bug、如今的云主機(jī) I/O hang 一樣。但歷史規(guī)律也告訴我們,所有偉大的技術(shù)最終都會(huì)走向成熟;只要低代碼領(lǐng)域一直健康發(fā)展,問(wèn)題總會(huì)越來(lái)越少,最終降到一個(gè)絕大部分人感知不到的范圍內(nèi)。過(guò)去縈繞在 Windows 用戶(hù)心中揮之不去的“藍(lán)屏”問(wèn)題,對(duì)如今的新用戶(hù)來(lái)說(shuō)早已不知為何物;今天低代碼開(kāi)發(fā)者所遇到的種種“藍(lán)瘦”問(wèn)題,未來(lái)也終將成為被遺忘的歷史(誰(shuí)還沒(méi)段黑歷史呢)。

質(zhì)疑 3:低代碼應(yīng)用難維護(hù)

“應(yīng)用一旦復(fù)雜起來(lái),各種復(fù)雜邏輯流穿插著自定義代碼,看不懂也改不動(dòng),還不如全用代碼呢?!?/span>

作為對(duì)軟件可維護(hù)性深有感觸的無(wú)腦級(jí)布道者(見(jiàn)《救火必備!問(wèn)題排查與系統(tǒng)優(yōu)化手冊(cè)》),我不得不說(shuō):用低代碼開(kāi)發(fā),也要講基本法。一般來(lái)說(shuō),無(wú)論是使用低代碼開(kāi)發(fā)還是純代碼開(kāi)發(fā),造成應(yīng)用可維護(hù)性低的根本原因往往不在于開(kāi)發(fā)工具,而是開(kāi)發(fā)者自身沒(méi)有去遵循一些軟件開(kāi)發(fā)的普適原則,比如工程規(guī)范性、命名可讀性、DRY/KISS/SOLID 原則等。

好的低代碼平臺(tái)絕不會(huì)阻礙開(kāi)發(fā)者去改善應(yīng)用的可維護(hù)性;恰恰相反,還會(huì)盡可能提供引導(dǎo)和幫助。以 Mendix 為例,除了支持基本的模型分析與重構(gòu)(e.g. 無(wú)用模型、對(duì)象重命名、子邏輯流提?。┮酝?,甚至還提供了基于 ISO/IEC 25010 標(biāo)準(zhǔn)的應(yīng)用質(zhì)量監(jiān)控(AQM)能力。另一方面,讓?xiě)?yīng)用變得難以維護(hù)的一個(gè)客觀原因也是應(yīng)用本身過(guò)于復(fù)雜,而低代碼作為高度抽象和自動(dòng)化的開(kāi)發(fā)模式,在降低應(yīng)用復(fù)雜度方面是專(zhuān)業(yè)的。

綜合來(lái)看,低代碼雖然不是能解決一切問(wèn)題的銀彈,但更不是會(huì)帶來(lái)更多問(wèn)題的炸彈:在提高應(yīng)用可維護(hù)性方面的上限,一定比傳統(tǒng)開(kāi)發(fā)模式更高;但決定應(yīng)用可維護(hù)性下限的,依然還是開(kāi)發(fā)者自己。

低代碼行業(yè)發(fā)展

回應(yīng)質(zhì)疑的最好方式,就是做好你自己,用實(shí)際的表現(xiàn)說(shuō)話。對(duì)于一個(gè)行業(yè)而言,判斷它當(dāng)前的表現(xiàn)是否夠好,或者未來(lái)是否有潛力做到更好,可以從以下這三個(gè)方面進(jìn)行衡量:市場(chǎng)規(guī)模(蛋糕夠不夠大)、適用場(chǎng)景(是否可落地)、競(jìng)品狀況(有沒(méi)有被驗(yàn)證過(guò))。

1. 市場(chǎng)規(guī)模

"Talk is cheap,show me the code money." > —— Linus Starcraft

文章可以忽悠,但市場(chǎng)不會(huì)說(shuō)謊:

  • Forrester 在 2015 年曾預(yù)測(cè)過(guò),低代碼的市場(chǎng)將從 2015 年的 17 億美元增長(zhǎng)至 2020 年的 150 億美元。
  • Marketsandmarkets 在今年四月份的分析報(bào)告中預(yù)測(cè),低代碼的市場(chǎng)將從 2020 年的 130 億美元(估算值,可以看出來(lái)與 Forrester 當(dāng)年的預(yù)測(cè)是接近的)增長(zhǎng)到 2025 年的 450 億美元(年復(fù)合增長(zhǎng)率:28.1%)。
  • PS Inteligence 在 2018 年的分析報(bào)告中預(yù)測(cè),全球的低代碼開(kāi)發(fā)平臺(tái)市場(chǎng)中,亞太地區(qū)將在今后五年(2019-2024 年)中保持最高的增長(zhǎng)速度。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

總結(jié)一下就是兩點(diǎn):

  • 低代碼的市場(chǎng)規(guī)模足夠大,且一直都在高速增長(zhǎng)。
  • 作為亞太地區(qū)的經(jīng)濟(jì)大國(guó)與IT強(qiáng)國(guó),中國(guó)的低代碼市場(chǎng)將會(huì)引來(lái)一個(gè)爆發(fā)期,未來(lái)幾年內(nèi)的增速都會(huì)超過(guò)全球平均水平。

2. 適用場(chǎng)景

理論上來(lái)說(shuō),低代碼是完全對(duì)標(biāo)傳統(tǒng)純代碼的通用開(kāi)發(fā)模式,應(yīng)該有能力支撐所有可能的業(yè)務(wù)場(chǎng)景。但理論也只是理論,低代碼一統(tǒng)江湖的夢(mèng)想尚未照進(jìn)現(xiàn)實(shí),也不可能完全取代現(xiàn)實(shí)。前文中提到過(guò),低代碼與純代碼方式是互補(bǔ)關(guān)系,未來(lái)也將長(zhǎng)期共存,各自在其所適合的業(yè)務(wù)場(chǎng)景中發(fā)光發(fā)熱。同時(shí)還需要指出的是,當(dāng)前階段的低代碼技術(shù)、產(chǎn)品和市場(chǎng)都尚未完全成熟,因此部分本來(lái)可能很適合用低代碼來(lái)開(kāi)發(fā)的場(chǎng)景,目前也只能先用純代碼來(lái)替代。

Gartner 在 2019 年的低代碼調(diào)研報(bào)告中,曾經(jīng)繪制過(guò)一張用來(lái)闡述低代碼適用場(chǎng)景的“應(yīng)用金字塔”:

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

  • 應(yīng)用級(jí)別劃分:從下往上,分別為工作組級(jí)(Workgroup Class)、部門(mén)級(jí)(Departmental Class)、企業(yè)級(jí)(Enterprise Class)、可擴(kuò)展需求極強(qiáng)的企業(yè)級(jí)(Extreme-Scale Enterprise Class)。容易看出來(lái),它主要的劃分維度就是應(yīng)用所面向的用戶(hù)基數(shù)(基數(shù)越大,可擴(kuò)展需求也越高)。
  • 任務(wù)關(guān)鍵性:從下往上,各級(jí)別應(yīng)用的任務(wù)關(guān)鍵性(Mission Criticality)逐級(jí)遞增。例如一個(gè)只在工作組內(nèi)使用的后臺(tái)管理應(yīng)用,一般都不會(huì)涉及到影響整個(gè)企業(yè)的關(guān)鍵任務(wù)。脫離企業(yè)這個(gè)視角來(lái)看,整個(gè)軟件產(chǎn)業(yè)中也有很多通用的任務(wù)關(guān)鍵型應(yīng)用,比如:實(shí)時(shí)操作系統(tǒng)、航空調(diào)度系統(tǒng)、銀行對(duì)賬系統(tǒng)。
  • 實(shí)現(xiàn)復(fù)雜度:從下往上,各級(jí)別應(yīng)用的復(fù)雜度(Complexity)也逐級(jí)遞增。例如最上層的企業(yè)級(jí)應(yīng)用,除了功能覆蓋面大導(dǎo)致業(yè)務(wù)復(fù)雜以外,往往還需要滿足更多苛刻的非功能需求,包括但不限于:用戶(hù)體驗(yàn)、性能、可靠性、安全性、可伸縮性、可維護(hù)性、兼容性。其他一些復(fù)雜軟件的案例包括:3D 游戲界面(交互復(fù)雜)極其底層的游戲引擎(邏輯復(fù)雜)、超大型 CRM 系統(tǒng)(一方面是實(shí)現(xiàn)很復(fù)雜,另一方面,這種成熟軟件的標(biāo)準(zhǔn)化程度較高,大部分情況下可以直接用現(xiàn)成的 SaaS 軟件)。
  • 應(yīng)用需求量:從上往下,各級(jí)別應(yīng)用的需求體量(Volume)逐級(jí)遞增,呈現(xiàn)一個(gè)金字塔形狀。這個(gè)特征可以用萬(wàn)能的 2/8 原則來(lái)理解:20% 的“全民”應(yīng)用,由于需求的通用性和普適性,可以覆蓋至少 80% 的用戶(hù)群體(例如企業(yè)大部分人都要用的考勤系統(tǒng));而剩下那 80% 的“小眾”應(yīng)用,由于需求的定制化和特殊性(例如螞蟻的期權(quán)系統(tǒng)…),就只能覆蓋各自小圈子里那 20% 的用戶(hù)了。
  • 與低代碼的契合關(guān)系:從上往下,各級(jí)別應(yīng)用與低代碼越來(lái)越契合(Relevant)。也就是說(shuō):越簡(jiǎn)單的應(yīng)用,越契合低代碼;越不太關(guān)鍵的任務(wù),也越契合低代碼。同時(shí),由于契合低代碼的應(yīng)用更偏金字塔底層,而這些應(yīng)用的需求量都更大,所以可以得出如下判斷:低代碼能夠適用于大部分業(yè)務(wù)場(chǎng)景(而且這個(gè)比例會(huì)一直上升,逐步往金字塔的更上層應(yīng)用逼近),例如:B2E 類(lèi)應(yīng)用(表單、審批流、ERP 系統(tǒng))、B2B 類(lèi)應(yīng)用(企業(yè)商城、工業(yè)控制臺(tái))、B2C 類(lèi)應(yīng)用(企業(yè)展示、營(yíng)銷(xiāo)頁(yè)、店鋪裝修)。

3. 競(jìng)品概況

低代碼雖然是一個(gè)新興概念,但這個(gè)行業(yè)本身并不算很新(前文也有提到),這些年以來(lái)早就積累了不少資深的榮耀王者。同時(shí),低代碼作為一個(gè)朝陽(yáng)產(chǎn)業(yè)和資本熱點(diǎn),近幾年也不斷有更多的新玩家在加入這個(gè)刺激戰(zhàn)場(chǎng)。

什么是低代碼(Low-Code)?(什么是低代碼和無(wú)代碼)

上圖分別是 Gartner 給出的低代碼平臺(tái)魔力象限和 Forrester 給出的低代碼平臺(tái)技術(shù)波譜。從圖中可以看到:

  • OutSystems 和 Mendix 一馬當(dāng)先,是公認(rèn)的低代碼領(lǐng)域頭牌。這兩家都是很純粹的通用低代碼開(kāi)發(fā)平臺(tái),且都經(jīng)過(guò)了長(zhǎng)時(shí)間的發(fā)展和積累:OutSystems 成立于 2001 年,員工人數(shù) 1000 ,年?duì)I收超過(guò) 1 億美元;2018 年 6 月獲得了 KKR 和高盛的 3.6 億美元融資,目前估值超過(guò) 10 億美元;Mendix 成立于 2005 年,員工人數(shù) 500 ,年?duì)I收超過(guò) 2300 萬(wàn)美元(18 年數(shù)據(jù)),2018 年 8 月被西門(mén)子以 7.3 億美元收購(gòu)。
  • Salesforce 和 Microsoft 緊隨其后,都處于行業(yè)領(lǐng)先者地位。但這兩家的公司性質(zhì)和發(fā)展路徑都很不一樣:Salesforce 是以 SaaS 起家,公司規(guī)模就不用多說(shuō)了,反正就是 SaaS 屆的巨無(wú)霸。這類(lèi) SaaS 廠商做低代碼的動(dòng)力,是為了解決客戶(hù)對(duì)成品 SaaS 軟件的定制訴求。M$ 更不用多介紹,只說(shuō)下他們做低代碼的天然優(yōu)勢(shì):一方面,作為辦公軟件航空母艦,低代碼可以幫助他們的客戶(hù)實(shí)現(xiàn)從 Excel 表單到定制 App 的能力與體驗(yàn)升級(jí);另一方面,作為云計(jì)算三巨頭之一,低代碼可以幫助他們連接內(nèi)部的云計(jì)算生態(tài)體系,為開(kāi)發(fā)者提供一個(gè)統(tǒng)一和易用的上云界面。
  • 國(guó)外市場(chǎng)已經(jīng)得到充分驗(yàn)證,但國(guó)內(nèi)市場(chǎng)還剛剛興起,還沒(méi)有一家能夠贏得上述調(diào)研機(jī)構(gòu)的芳心,擠進(jìn)上面這兩張方圖。國(guó)內(nèi)目前的一些競(jìng)品和融資情況包括:2018 年 5 月,搭搭云完成A輪的千萬(wàn)級(jí)融資;2018 年 9 月,宜創(chuàng)科技得到清源創(chuàng)投的戰(zhàn)略融資;2018 年 12 月,輕流完成千萬(wàn)級(jí) Pre-A 融資;2019 年 8 月,數(shù)式科技得到盈動(dòng)資本的數(shù)千萬(wàn)人民幣天使輪融資;2019 年 8 月,ClickPaas 獲得晨興資本數(shù)百萬(wàn)美元的 A 輪融資;2019 年,奧哲分別獲得阿里 5 千萬(wàn)的 A 輪融和高榕資本上億元的 B 輪融資。(注:競(jìng)品數(shù)據(jù)來(lái)源于我們組 PD 的辛勤整理;為此我決定這篇文章剩下內(nèi)容再也不黑 PD 了;下篇再說(shuō)。)

結(jié)語(yǔ)

本文總結(jié)了低代碼領(lǐng)域的基本概念、核心價(jià)值與行業(yè)現(xiàn)狀。雖然這些內(nèi)容都比較基礎(chǔ)和偏理論,但我始終認(rèn)為,深刻理解一個(gè)系統(tǒng)的前提,正是這些務(wù)虛的東西 —— 技術(shù)架構(gòu)只會(huì)告訴你這個(gè)系統(tǒng)是怎么實(shí)現(xiàn)的(How),無(wú)法準(zhǔn)確表述它到底能用來(lái)做什么(What),以及為什么要做這樣一個(gè)東西(Why);而后面這兩個(gè)問(wèn)題的答案,才是后續(xù)系統(tǒng)所有設(shè)計(jì)與演進(jìn)的根因和驅(qū)動(dòng)力。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線咨詢(xún)
分享本頁(yè)
返回頂部