程序員們,請(qǐng)不要看低零代碼
文/明道云創(chuàng)始人任向暉
我們的業(yè)務(wù)進(jìn)程中,不可避免地開(kāi)始和開(kāi)發(fā)者群體產(chǎn)生了一些沖突,更準(zhǔn)確地說(shuō),是一些誤會(huì)。對(duì)此,我們也有思想準(zhǔn)備。
當(dāng)然,可愛(ài)的程序員們往往都很含蓄,他們不會(huì)說(shuō)——“零代碼平臺(tái)有什么鳥(niǎo)用?如果不寫(xiě)代碼就能夠開(kāi)發(fā)軟件,還要我們干嗎?”。
他們不會(huì)說(shuō),但我們心里知道。當(dāng)我們向一位潛在顧客演示明道云后,我?guī)缀醵寄苈?tīng)到有幾位程序員心里的想法。有時(shí)候,客戶不同職能的人圍繞是否要采納零代碼系統(tǒng)當(dāng)面爭(zhēng)執(zhí)起來(lái),我也有點(diǎn)尷尬。
有外部人士好心給我們建議將產(chǎn)品定位名稱修改為“低代碼”,而不要那么決絕地叫“零代碼”。因?yàn)榻械痛a,好歹不會(huì)讓程序員群體過(guò)于反感,感覺(jué)自己至少還有用武之地。
事實(shí)上,明道云也包含若干低代碼模塊,允許部分高級(jí)用戶使用腳本語(yǔ)言來(lái)簡(jiǎn)化配置步驟,使用API來(lái)進(jìn)行對(duì)接開(kāi)發(fā),這些都離不開(kāi)訓(xùn)練有素的程序員。
但這不是重點(diǎn),我們想要達(dá)成的目標(biāo),是讓現(xiàn)役程序員做點(diǎn)真正有價(jià)值的活,而把那些重復(fù)性的開(kāi)發(fā)工作完全削減。稱為“零代碼”,的確包含一些市場(chǎng)宣言的意圖成分。
零代碼平臺(tái)替代哪些軟件開(kāi)發(fā)工作?
概括來(lái)說(shuō),以明道云為代表的零代碼平臺(tái)主要用于企業(yè)中后臺(tái)應(yīng)用領(lǐng)域,尤其是圍繞數(shù)據(jù)管理和工作流相關(guān)的應(yīng)用類別,他們一般都用于企業(yè)內(nèi)部,有時(shí)候也會(huì)延伸到外部客戶和合作伙伴。這些應(yīng)用都圍繞數(shù)據(jù)的增刪查改和靈活的工作流程管理而建立,用戶通過(guò)瀏覽器和移動(dòng)設(shè)備進(jìn)行使用。
這段概括的確已經(jīng)將企業(yè)軟件行業(yè)中的很多場(chǎng)景都包括在內(nèi)了。為了讓讀者更好理解,我再例舉一些更為具體的場(chǎng)景:
1)基于關(guān)系數(shù)據(jù)庫(kù)的業(yè)務(wù)管理應(yīng)用
是指不同行業(yè)圍繞著核心業(yè)務(wù)構(gòu)筑的業(yè)務(wù)管理系統(tǒng),例如:
- 流通業(yè)的進(jìn)銷存
- 制造業(yè)的生產(chǎn)執(zhí)行、物料管理、設(shè)備管理
- 現(xiàn)代服務(wù)業(yè)的項(xiàng)目管理
- 教育行業(yè)的師資、學(xué)員、課程管理
- 設(shè)備工程業(yè)的采購(gòu)、安裝和服務(wù)管理
- 一般B2B行業(yè)的銷售管理等等
這個(gè)大類別中大多數(shù)軟件都長(zhǎng)得幾乎一模一樣。在Web版本上,往往通過(guò)頂部和左側(cè)菜單進(jìn)行功能導(dǎo)航,主界面用表格列出數(shù)據(jù)條目,打開(kāi)記錄詳情可以進(jìn)行各種數(shù)據(jù)操作,查看關(guān)聯(lián)數(shù)據(jù)。
正是因?yàn)檫@樣的雷同度,所以零代碼平臺(tái)可以大顯身手,將所有這些應(yīng)用的實(shí)現(xiàn)用一個(gè)統(tǒng)一的組裝方式來(lái)實(shí)現(xiàn),從而避免從頭至尾的原生軟件開(kāi)發(fā)過(guò)程。
2)利用移動(dòng)應(yīng)用采集數(shù)據(jù)的應(yīng)用
制造、工程、零售等行業(yè)需要特定職能人員從一線采集數(shù)據(jù)的應(yīng)用場(chǎng)景。
3)利用API接口寫(xiě)入數(shù)據(jù)并構(gòu)筑管理看板的應(yīng)用
從多個(gè)異構(gòu)系統(tǒng)抽取數(shù)據(jù),沉淀到統(tǒng)一的數(shù)據(jù)中臺(tái),并結(jié)合本產(chǎn)品的自定義儀表盤(pán)功能構(gòu)筑管理駕駛艙的應(yīng)用需求。這個(gè)應(yīng)用場(chǎng)景用另外一種方式替代了BI ETL的方案。
4)部門(mén)級(jí)解決特定業(yè)務(wù)環(huán)節(jié)需求的小應(yīng)用
因?yàn)榱愦a系統(tǒng)帶來(lái)的易用性和免除代碼開(kāi)發(fā)的特點(diǎn),用戶企業(yè)可以由業(yè)務(wù)部門(mén)的非開(kāi)發(fā)人員直接搭建或者主導(dǎo)一些簡(jiǎn)單的小應(yīng)用。在統(tǒng)一的應(yīng)用管理能力下,同時(shí)也能防范影子IT問(wèn)題。
5)為實(shí)現(xiàn)流程自動(dòng)化而構(gòu)建的應(yīng)用
基于本產(chǎn)品的自動(dòng)化工作流,可以打通過(guò)去需要人工協(xié)調(diào)的斷續(xù)工作流程,例如:
- 訂單、交付和發(fā)票的自動(dòng)銜接
- 基于時(shí)間觸發(fā)的檢查單生成、設(shè)備維保提醒、合同到期提醒等
- 基于銷售流程和營(yíng)銷流程之間的線索自動(dòng)標(biāo)簽和線索培育等
6)為實(shí)現(xiàn)數(shù)據(jù)流轉(zhuǎn)、填報(bào)和審核過(guò)程而構(gòu)筑的流程應(yīng)用
在復(fù)雜的數(shù)據(jù)協(xié)同中,構(gòu)筑基于表單數(shù)據(jù),審批和填寫(xiě)節(jié)點(diǎn)的人工控制工作流應(yīng)用。
零代碼不擅長(zhǎng)的場(chǎng)景
除了這些正面范疇,也有一些負(fù)面清單。意思是零代碼平臺(tái)并不善于解決的場(chǎng)景也有很多,比如:
1)市場(chǎng)規(guī)模巨大,場(chǎng)景一致,通用程度很高的品類
比如協(xié)作應(yīng)用,通訊應(yīng)用。當(dāng)然,因?yàn)檫@些市場(chǎng)容量巨大,也已經(jīng)有大量的成熟廠商在提供產(chǎn)品。你完全沒(méi)有必要去用零代碼去搭建。如果你要參與這些市場(chǎng)的競(jìng)爭(zhēng),理應(yīng)擁有一支技能完善的軟件產(chǎn)品研發(fā)團(tuán)隊(duì),才能對(duì)市場(chǎng)競(jìng)爭(zhēng)做出及時(shí)的響應(yīng)。
2)在特定行業(yè)中依賴非常專有化的計(jì)算或?qū)S谢囊晥D來(lái)提供服務(wù)的門(mén)類
例如酒店行業(yè)的動(dòng)態(tài)房?jī)r(jià)管理,餐飲業(yè)的收銀排桌,圍繞生產(chǎn)制造的工業(yè)控制和特殊邏輯排程,圍繞市場(chǎng)營(yíng)銷目標(biāo)的廣告數(shù)據(jù)管理等等。這就像要擰無(wú)數(shù)顆直徑固定為3毫米的螺母,就沒(méi)有必要用萬(wàn)能扳手。
3)面向消費(fèi)者的應(yīng)用
這個(gè)很好理解,2C應(yīng)用是十分多元的,很難通過(guò)零代碼的方式來(lái)實(shí)現(xiàn)。當(dāng)然,那些簡(jiǎn)單的信息展示類或者購(gòu)物車類的小程序應(yīng)用另當(dāng)別論。很多小程序生成平臺(tái),本質(zhì)上也是一種零代碼平臺(tái)。
我相信這個(gè)清單并沒(méi)有完,這個(gè)市場(chǎng)總是存在各種各樣特殊情況的長(zhǎng)尾,以至于每一個(gè)零星需求都不得不專門(mén)來(lái)進(jìn)行架構(gòu),設(shè)計(jì)和開(kāi)發(fā)。
零代碼為什么比寫(xiě)代碼還要好?
一旦你要實(shí)現(xiàn)的場(chǎng)景和我們的優(yōu)勢(shì)方向吻合,那么我敢說(shuō),用零代碼平臺(tái)搭建的應(yīng)用,要比絕大多數(shù)普通軟件開(kāi)發(fā)團(tuán)隊(duì)開(kāi)發(fā)出來(lái)的應(yīng)用要好得多。
我這么說(shuō),可能有點(diǎn)不禮貌了,但我們都得客觀一些,優(yōu)秀和杰出的軟件開(kāi)發(fā)團(tuán)隊(duì)總是有限的,他們不會(huì)天天在開(kāi)發(fā)增刪查改數(shù)據(jù)的企業(yè)應(yīng)用。這些活交給我們比較合適。
1)免除交互體驗(yàn)設(shè)計(jì)流程
零代碼平臺(tái)承擔(dān)了基本交互設(shè)計(jì)的全部工作,圍繞數(shù)據(jù)輸入,查詢,展示等一系列動(dòng)作。應(yīng)用零代碼平臺(tái)后,不需要再進(jìn)行這些細(xì)枝末節(jié)的交互體驗(yàn)設(shè)計(jì)和增強(qiáng)。
比如:一個(gè)復(fù)雜表單的每個(gè)控件,應(yīng)該用什么樣式,保持什么間距,支不支持鍵盤(pán)切換焦點(diǎn)等等,這些細(xì)節(jié)問(wèn)題往往耗費(fèi)前端程序員大量的重復(fù)勞動(dòng)。
現(xiàn)在,都不用了。我們的一次性范式設(shè)計(jì)統(tǒng)統(tǒng)考慮在內(nèi)了。
有人說(shuō),如果不能個(gè)性化設(shè)計(jì)前端頁(yè)面,那做出來(lái)的應(yīng)用豈不是很雷同。的確是這樣,但這種雷同是好的重復(fù),而不是粗鄙的復(fù)制。
我們可以為一個(gè)日期輸入控件耗費(fèi)幾天的時(shí)間來(lái)優(yōu)化,這并不是所有的應(yīng)用前端開(kāi)發(fā)所能夠承擔(dān)的成本。
而且,即便你不用零代碼平臺(tái),在應(yīng)用前端框架時(shí),也絕對(duì)不可能自己從頭開(kāi)始設(shè)計(jì),總是會(huì)應(yīng)用一些現(xiàn)成的成熟框架。君不見(jiàn)各種后臺(tái)系統(tǒng)使用的幾乎都是阿里Ant的那一套?
在企業(yè)中后臺(tái)應(yīng)用中,界面好看,功能好用是最重要的目標(biāo)。所以,高質(zhì)量的雷同正是解決這個(gè)問(wèn)題的手段。
2)免除后端架構(gòu)流程
前端開(kāi)發(fā)容易產(chǎn)生重復(fù)工作,后端數(shù)據(jù)架構(gòu)也是一樣。為了讓一個(gè)企業(yè)應(yīng)用能夠滿足業(yè)務(wù)數(shù)據(jù)管理和工作流程的需要,開(kāi)發(fā)者需要設(shè)計(jì)正確合理的數(shù)據(jù)結(jié)構(gòu)。這個(gè)工作,無(wú)論是零代碼,還是傳統(tǒng)的原生開(kāi)發(fā)都是需要的。
但是,除了數(shù)據(jù)模型外,原生開(kāi)發(fā)項(xiàng)目還需要架構(gòu)師設(shè)計(jì)合理的數(shù)據(jù)存儲(chǔ)過(guò)程和函數(shù)(可重復(fù)利用的程序結(jié)構(gòu)),這些工作都是依賴經(jīng)驗(yàn)豐富的架構(gòu)師的。
有了零代碼平臺(tái),所有的后端架構(gòu)工作被轉(zhuǎn)化成可視化的配置過(guò)程,數(shù)據(jù)結(jié)構(gòu)依靠表單來(lái)建立,工作流依靠觸發(fā)器和節(jié)點(diǎn)來(lái)配置,權(quán)限系統(tǒng)依靠角色和顆粒度很高的權(quán)限細(xì)節(jié)來(lái)組合。
這些工作雖然不會(huì)自動(dòng)完成,但它們已經(jīng)不再依賴狹義的軟件架構(gòu)師,完成這些工作的時(shí)間成本也大大降低。
這里還要提到一個(gè)重要因素,那就是業(yè)務(wù)變更所帶來(lái)的后端架構(gòu)調(diào)整噩夢(mèng)。
一旦業(yè)務(wù)流程產(chǎn)生新的需求,絕大多數(shù)情況下都不是簡(jiǎn)單地修改幾行前端代碼能夠搞定的,后端架構(gòu)都需要配合進(jìn)行調(diào)整。
在過(guò)去,這是很多定制開(kāi)發(fā)軟件項(xiàng)目的危機(jī)所在,因?yàn)橥枰臅r(shí)候找不到人,或者找不到健全的文檔,導(dǎo)致后續(xù)跟進(jìn)的修改中堆疊出越來(lái)越多的低質(zhì)量代碼。
有零代碼系統(tǒng),無(wú)非就是調(diào)整一下配置就能夠完成。這是原生開(kāi)發(fā)永遠(yuǎn)難以企及的效果。
3)簡(jiǎn)化測(cè)試流程
零代碼搭建的應(yīng)用也要測(cè)試,但用戶只需要聚焦在數(shù)據(jù)處理的正確性上,一次對(duì),次次對(duì)。
傳統(tǒng)軟件的測(cè)試要復(fù)雜得多,首先要有開(kāi)發(fā)人員自己完成的白盒測(cè)試,還需要有需求方和測(cè)試人員共同編寫(xiě)黑盒測(cè)試用例清單。
光這一件事情就依賴專業(yè)人員,成本很高,而且有很麻煩的跨專業(yè)溝通。完整的測(cè)試還需要涵蓋性能,兼容性等方面,相當(dāng)?shù)睾臅r(shí)耗力。
所以大部分定制軟件開(kāi)發(fā)是沒(méi)有健壯的測(cè)試流程的。作為只有一個(gè)用戶的定制軟件,軟件缺陷的消除過(guò)程非常漫長(zhǎng)。
4)免除應(yīng)用分發(fā)
開(kāi)發(fā)已經(jīng)掉了一層皮,但一個(gè)最終可用的企業(yè)應(yīng)用,為了能夠地讓員工開(kāi)始正常使用,還有一個(gè)“在組織內(nèi)分發(fā)”的過(guò)程。
這個(gè)過(guò)程通常都比想象的復(fù)雜,尤其是那些需要根據(jù)不同角色分配不同權(quán)限的復(fù)雜系統(tǒng)。在軟件開(kāi)發(fā)完畢后,還需要引導(dǎo)用戶注冊(cè)賬戶,分配角色后,用戶才真正能夠登錄系統(tǒng)使用。
目前,越來(lái)越多的企業(yè)已經(jīng)開(kāi)始使用釘釘和企業(yè)微信等平臺(tái),這意味著,開(kāi)發(fā)出來(lái)的企業(yè)應(yīng)用最好還能夠適配這些平臺(tái),至少實(shí)現(xiàn)用戶賬戶和消息通知的打通。
零代碼系統(tǒng)一般都帶有完善的企業(yè)管理后臺(tái),提供用戶,部門(mén),職能角色,匯報(bào)關(guān)系配置,還預(yù)先和釘釘和企業(yè)微信等平臺(tái)接通。
這樣,用零代碼方式搭建的應(yīng)用不僅交付迅捷,部署到用戶那里也很方便。如果某個(gè)應(yīng)用的角色需要對(duì)應(yīng)企業(yè)的財(cái)務(wù)出納,配置好以后,只要有人入職了財(cái)務(wù)出納崗位,就能夠自動(dòng)得到這個(gè)應(yīng)用的訪問(wèn)權(quán)和恰當(dāng)?shù)臋?quán)限。
5)讓需求溝通更輕松
在開(kāi)發(fā)企業(yè)軟件的過(guò)程中,最痛苦和昂貴的過(guò)程真的不是寫(xiě)代碼,而是需求溝通,讓開(kāi)發(fā)者理解軟件的應(yīng)用目標(biāo)和掌握必要的背景知識(shí)。在稍微復(fù)雜一些的企業(yè)軟件領(lǐng)域,比如生產(chǎn)制造流程管理,物流管理,物料管理,設(shè)備管理,倉(cāng)儲(chǔ)管理和財(cái)務(wù)信息交換等環(huán)節(jié),軟件的設(shè)計(jì)源泉完全來(lái)自企業(yè)管理最佳實(shí)踐。沒(méi)有企業(yè)的運(yùn)營(yíng)知識(shí),是絕不可能開(kāi)發(fā)出可用的企業(yè)軟件的。
于是乎,企業(yè)軟件開(kāi)發(fā)的主要成本都投入在了這些浩繁的需求溝通上。
通常是開(kāi)發(fā)廠商提供一個(gè)框架解決方案,懂行的客戶基本能夠判斷是否合適,然后客戶企業(yè)需要就自己的實(shí)際運(yùn)營(yíng)提出組合和修改要求,開(kāi)發(fā)廠商再記錄在需求清單中,并用工作范疇文檔(SOW)和原型圖讓客戶確認(rèn)。
即便花了很多時(shí)間做前期的需求確認(rèn)工作,到了實(shí)際交付的節(jié)點(diǎn),依然還會(huì)有大量的調(diào)整和確認(rèn)環(huán)節(jié)。這也是為什么交付是傳統(tǒng)軟件開(kāi)發(fā)服務(wù)的噩夢(mèng)。成本和進(jìn)度都是在這些環(huán)節(jié)上容易失控的。
零代碼平臺(tái)首先了提供一個(gè)可能性——不要開(kāi)發(fā)人員參與,精通需求的業(yè)務(wù)人員直接自主實(shí)現(xiàn),因?yàn)樗麄儾恍枰莆沾a開(kāi)發(fā)知識(shí)。
因?yàn)樾枨蠓街苯幼灾鲗?shí)現(xiàn),自然也就免去了反復(fù)的需求溝通和確認(rèn)。人人都能夠開(kāi)發(fā)軟件,這句話一半是宣言,一半已經(jīng)是現(xiàn)實(shí)。這完全看用戶自己對(duì)需求的清晰程度和學(xué)習(xí)新工具的意愿。美國(guó)人為什么習(xí)慣DIY?一方面是因?yàn)楣蛡蚬と颂F,另一方面是因?yàn)榉浅0l(fā)達(dá)和廉價(jià)的DIY工具支持。
就算零代碼平臺(tái)也是由技術(shù)團(tuán)隊(duì)來(lái)提供服務(wù),業(yè)務(wù)需求方也很容易通過(guò)預(yù)先搭建的示范模塊來(lái)確認(rèn)是否滿足需求。搭建者和使用者的溝通會(huì)非常順暢,有時(shí)候,使用者會(huì)忍不住自己動(dòng)起手來(lái)。
把正兒八經(jīng)的開(kāi)發(fā)力量投向何處?
零代碼平臺(tái)會(huì)不會(huì)替代程序員的所有工作?
我認(rèn)為不能,至少在短期內(nèi)是不現(xiàn)實(shí)的,零代碼平臺(tái)還有很長(zhǎng)的產(chǎn)品路線圖要完成。就算我們吃到大力丸,立刻把產(chǎn)品做得又簡(jiǎn)單好用,又強(qiáng)大全能(雖然天下幾乎沒(méi)有這樣的產(chǎn)品),企業(yè)用戶建立信任也需要時(shí)間。
至少在當(dāng)下,程序員們可以開(kāi)始將精力轉(zhuǎn)向一些更有價(jià)值的領(lǐng)域。大膽地將我們擅長(zhǎng)的領(lǐng)域交給零代碼系統(tǒng)來(lái)嘗試。反正我們這樣的平臺(tái)都提供免費(fèi)試用,實(shí)現(xiàn)不了的,你們也不用花冤枉功夫。
但是,在沒(méi)有親手實(shí)踐之前,阻止和勸導(dǎo)其他人不要嘗試是不公道的。零代碼好歹都能夠搭建出可用的應(yīng)用,讓客戶來(lái)進(jìn)行實(shí)際驗(yàn)證,至少是局部的模塊,原生軟件開(kāi)發(fā)就不可能這么豪邁了,客戶再怎么不信任,你也不可能把軟件開(kāi)發(fā)好,再去和客戶簽合同。
真正有價(jià)值的原生軟件開(kāi)發(fā)應(yīng)該聚焦在客戶基數(shù)巨大,模式化設(shè)計(jì)能夠以一當(dāng)十的市場(chǎng)
軟件產(chǎn)業(yè)的成功就是建立在“復(fù)制”的基礎(chǔ)上的,如果一套軟件就是一個(gè)用戶,這是軟件行業(yè)的恥辱。在中國(guó)市場(chǎng),值得投入的軟件產(chǎn)品領(lǐng)域依然很多,在有些細(xì)分市場(chǎng),零代碼平臺(tái)也毫無(wú)優(yōu)勢(shì)。
比如電商ERP和延伸的新零售解決方案,智能的營(yíng)銷自動(dòng)化工具,這些市場(chǎng)目前依然沒(méi)有飽和,但零代碼系統(tǒng)缺乏基礎(chǔ)的框架模塊和生態(tài)連接,做起來(lái)會(huì)比較吃力。
而且,即使有了零代碼應(yīng)用,也不排除客戶繼續(xù)選用一些套裝軟件產(chǎn)品混合使用。在這個(gè)過(guò)程中,依然有配套的集成開(kāi)發(fā)工作需要完成,才能給客戶提供完善的應(yīng)用體驗(yàn)。這些集成開(kāi)發(fā)涉及到圍繞業(yè)務(wù)需求合理設(shè)計(jì)數(shù)據(jù)接口,建立數(shù)據(jù)調(diào)度服務(wù),接通不同的網(wǎng)絡(luò)環(huán)境。當(dāng)然,零代碼的另外一個(gè)分支——集成平臺(tái)即服務(wù)(IPaaS)也在努力通過(guò)產(chǎn)品化來(lái)削減這些重復(fù)工作。
每位程序員真的一定要一輩子寫(xiě)代碼嗎?
如果你想在代碼開(kāi)發(fā)領(lǐng)域以外拓展視野,又想充分利用已有的IT知識(shí),那么幫助更多的人來(lái)使用零代碼平臺(tái),圍繞業(yè)務(wù)需求來(lái)做好應(yīng)用搭建規(guī)劃,提供必要的集成開(kāi)發(fā)服務(wù),不是很好的一個(gè)選擇嗎?
很多程序員都希望能夠多了解商業(yè),但是僅僅是服務(wù)商業(yè)需求是不夠的,參與商業(yè)需求的規(guī)劃和設(shè)計(jì)才能真正轉(zhuǎn)換視角,成功跨界。
從Coder成為No-Coder一點(diǎn)也不掉價(jià)
我總認(rèn)為程序員群體最寶貴的特質(zhì)是學(xué)習(xí)能力,畢竟在代碼開(kāi)發(fā)領(lǐng)域也需要不斷學(xué)習(xí)和掌握新的技術(shù)棧才能持續(xù)吃好這碗飯。那么今天,當(dāng)零代碼成為一個(gè)選項(xiàng)時(shí),明智的程序員不會(huì)盲目排斥它,而是應(yīng)該好好把玩一下。如果你的確對(duì)代碼開(kāi)發(fā)興趣濃厚,并有志于成為高等級(jí)的程序員,加入明道云也是一個(gè)不錯(cuò)的選擇,因?yàn)榱愦a系統(tǒng)倒的確是用代碼編寫(xiě)出來(lái)的(Java為核心)。