“行業(yè)毒瘤”低代碼
帶著這些問題,InfoQ 采訪了 ThoughtWorks 中國區(qū) CTO 徐昊,他表示低代碼不是一個(gè)新概念,現(xiàn)在也不是低代碼第一次引發(fā)業(yè)界討論,以降低程序員門檻為目的的低代碼從底層邏輯上就是不通的,這類低代碼不是風(fēng)口,而是行業(yè)毒瘤。
1低代碼并不是新概念,每隔幾年就會(huì)重新流行什么是低代碼呢?2014 年,F(xiàn)orrester Research 研究機(jī)構(gòu)正式提出了低代碼的定義,即利用很少或幾乎不需要寫代碼就可以快速開發(fā)應(yīng)用,并可以快速配置和部署的一種技術(shù)和工具。通俗一點(diǎn)理解,在程序員實(shí)現(xiàn)功能的過程中,只使用了很少的代碼,或者是通過拼接的方式來完成,比如我們?cè)?Excel 中輸入公式,完成相應(yīng)計(jì)算,這也可以算是低代碼的一種。
在徐昊看來,低代碼并不是一個(gè)新概念,每隔幾年低代碼就會(huì)卷土重來,在業(yè)界引發(fā)熱議。
伴隨著計(jì)算機(jī)產(chǎn)生的歷史,“程序員”有一個(gè)圣杯性的使命——讓計(jì)算機(jī)徹底工具化。不要只是讓專業(yè)人員來操控計(jì)算機(jī),要讓一些沒有編程訓(xùn)練、不是計(jì)算機(jī)專業(yè)的人也可以使用計(jì)算機(jī)完成相應(yīng)的工作。
順著計(jì)算機(jī)發(fā)展歷史去看低代碼,我們會(huì)發(fā)現(xiàn)每個(gè)階段的低代碼定義都是不一樣的。
最開始,我們是使用機(jī)器碼來編程的,F(xiàn)ORTRAN 編程語言出現(xiàn)之后,我們就可以使用高級(jí)編程語言去編程,不用再操控機(jī)器。那么,與操控機(jī)器對(duì)比,F(xiàn)ORTRAN 中的數(shù)學(xué)表達(dá)式就是“低代碼”。
經(jīng)過一段時(shí)間的發(fā)展,編程開始圍繞數(shù)據(jù)來展開,那么,業(yè)務(wù)人員能不能不用寫代碼就生成自己的數(shù)據(jù)報(bào)表呢?這時(shí),SQL 就出現(xiàn)了,當(dāng)年它也被認(rèn)為是“低代碼”。
根據(jù)歷史規(guī)律,這類“低代碼”總是在出現(xiàn)之后再慢慢演變成程序員的一個(gè)工具。
這次,低代碼能夠流行的一個(gè)背景是微服務(wù)的發(fā)展。微服務(wù)的理念是把企業(yè)中復(fù)雜度高的應(yīng)用拆解成多個(gè)微服務(wù),然后通過更簡(jiǎn)單、更低成本的方式把已存在的微服務(wù)串聯(lián)起來,形成新的功能。那么,企業(yè)在進(jìn)行微服務(wù)改造的時(shí)候,心中存的念想就是可以降低新功能研發(fā)和創(chuàng)新的成本。當(dāng)企業(yè)的微服務(wù)改造都基本完成之后,通過“低代碼”的開發(fā)模式將它們串聯(lián)成新功能,似乎是合理的選擇。
2以降低程序員門檻為目的的低代碼是最沒用的低代碼領(lǐng)域目前沒有特別明確的類別劃分依據(jù),各家研究機(jī)構(gòu)和企業(yè)都有自己的劃分標(biāo)準(zhǔn)。在徐昊看來,低代碼可以粗粒度地分為三類。
第一類低代碼是我們常說的腳本化,類似于在 Excel 中使用宏,通常是圍繞一個(gè)特定的產(chǎn)品或生態(tài)去形成腳本化的環(huán)境。以 Salesforce 為例,每家公司的銷售流程都會(huì)有差異,即使是再優(yōu)秀的 SaaS 服務(wù)或產(chǎn)品都只能覆蓋 80% 以上的功能,剩下一些需求還是要定制化。而這些定制化的需求往往是輕量級(jí)的,因此,SaaS 或 PaaS 平臺(tái)通過低代碼工具就可以實(shí)現(xiàn)這些需求。
其實(shí),腳本化在行業(yè)中已經(jīng)存在很多了,基本上所有做產(chǎn)品的公司都有腳本化的需求,主體功能不變,通過一個(gè)輕量的腳本語言在上面去做定制化需求。最典型的例子 JavaScript,JavaScript 出現(xiàn)時(shí)的平臺(tái)產(chǎn)品是瀏覽器,通過一個(gè)腳本語言去完成瀏覽器上的一些額外功能,但是現(xiàn)在很少有人會(huì)把使用 JavaScript 叫做低代碼。從某種程度上來講,這類低代碼產(chǎn)品最終會(huì)演變成程序員的工作,甚至引發(fā)新一類程序員的出現(xiàn),而它本身則從低代碼退化成為真正的代碼。
第二類是我們希望看到的低代碼,但是可能沒有商業(yè)前景。目前企業(yè)內(nèi)部仍然存在大量的人工操作和流程。這些操作或流程可能都有特殊之處,如果把它們自動(dòng)化,就可以把大量的人力從繁瑣的工作中解放出來。
但是企業(yè)很難關(guān)注這些流程,再加上想要自動(dòng)化這些工作是很難的。不過我們會(huì)發(fā)現(xiàn),在行業(yè)中出現(xiàn)了很多針對(duì)個(gè)人工作流的自動(dòng)化工具,比如蘋果的 automator, 曇花一現(xiàn)的 IFTTT,甚至更早的 yahoo pipes。這種簡(jiǎn)單的個(gè)人流程自動(dòng)化低代碼,通常是根據(jù)屏幕上發(fā)生的事情來觸發(fā),或者根據(jù)繪制的簡(jiǎn)單流程完成業(yè)務(wù)自動(dòng)化的操作。
服務(wù)于個(gè)人生產(chǎn)力的低代碼,既不會(huì)對(duì)行業(yè)造成影響,同時(shí)又有很明確的市場(chǎng)需求,但由于不賺錢,進(jìn)入這個(gè)領(lǐng)域的人非常少。
第三類是現(xiàn)在常見的以降低程序員門檻為目的,想要說服企業(yè)使用便宜的人力成本去干活的低代碼平臺(tái)。在它們的宣傳語中甚至?xí)?qiáng)調(diào)自己不只是低代碼,而是無代碼。
這類低代碼其實(shí)就是之前出現(xiàn)過的使用表單去繪制工作流,然后在工作流程的每個(gè)節(jié)點(diǎn)上配上表、企業(yè)流程和 OA。
徐昊表示:“這類代碼其實(shí)是最沒有用的,它給行業(yè)傳達(dá)了非常不好的信號(hào)——程序員的價(jià)值是不值錢的,它嘗試說服企業(yè)的理由永遠(yuǎn)是程序員那么貴,使用我的工具,就可以使用更便宜的程序員了。事實(shí)上,這些能夠?qū)崿F(xiàn)的功能非常有限,甚至?xí)?dǎo)致很嚴(yán)重的結(jié)果,讓一些不具備專業(yè)技能的人,使用極不趁手、效率低下的工具,來干寫代碼的工作。這是非常危險(xiǎn)的,這樣寫出來的代碼既難以維護(hù),又難以測(cè)試,這一類的工具低代碼平臺(tái)是行業(yè)毒瘤。”
3為什么我說低代碼是行業(yè)毒瘤?徐昊認(rèn)為以降低程序員門檻為目的的低代碼是行業(yè)毒瘤,但有意思的是,這類低代碼平臺(tái)在資本上是最受追捧的,因?yàn)樗苤v出很美好的故事。原本企業(yè)需要花很多費(fèi)用來雇傭程序員,而使用低代碼工具就可以節(jié)約這部分成本。但仔細(xì)思考,就會(huì)發(fā)現(xiàn)這個(gè)故事的內(nèi)在邏輯是有問題的。問題出在哪里呢?
第一,低代碼平臺(tái)預(yù)設(shè)的使用人群永遠(yuǎn)是初級(jí)、入門的人
以圖形化工作流為例,當(dāng)你完全不會(huì)寫代碼時(shí),通過拖拽工作流這種直觀的方式可以實(shí)現(xiàn)相關(guān)代碼。但開發(fā)者會(huì)成長(zhǎng),不會(huì)永遠(yuǎn)處在同樣的位置,而低代碼平臺(tái)預(yù)設(shè)的使用群體永遠(yuǎn)是初級(jí)、入門的人。
以面向幼兒編程的編程語言 Scratch 為例,它將代碼結(jié)構(gòu)表達(dá)為圖形化的模塊,通過圖形化的拖拽拼搭代碼。在這種情況下,即使是不識(shí)字的小朋友也可以通過拖拽去實(shí)現(xiàn)相關(guān)功能。但是小朋友不會(huì)永遠(yuǎn)不識(shí)字,當(dāng)他成長(zhǎng)之后,就會(huì)發(fā)現(xiàn)打字的效率是要遠(yuǎn)高于拖拽。
第二,低代碼平臺(tái)暗藏巨大的變革成本
根據(jù)徐昊的觀察,目前絕大多數(shù)低代碼廠商提供的產(chǎn)品都嘗試覆蓋完整的軟件生命周期。企業(yè)購買之后,開發(fā)者在平臺(tái)上按照平臺(tái)的規(guī)則來編程。所以,低代碼平臺(tái)看似售賣的是開發(fā)工具,實(shí)際上賣的是一種工作模式,企業(yè)研發(fā)團(tuán)隊(duì)需要改變?cè)镜墓ぷ髂J?。這種變革的成本是非常巨大的。
據(jù)徐昊所知,某廠商的研發(fā)部想要上線一個(gè)低代碼平臺(tái)來提升研發(fā)效能,但是上線之后,發(fā)現(xiàn)團(tuán)隊(duì)沒有辦法使用低代碼平臺(tái)來接管整個(gè)業(yè)務(wù),再加上上線時(shí)間很緊張,所以權(quán)衡之后,他們又采購了另一個(gè)低代碼平臺(tái),想要聯(lián)合兩個(gè)平臺(tái)來解決問題,但現(xiàn)實(shí)是直到現(xiàn)在,他們還在嘗試如何將低代碼平臺(tái)成功應(yīng)用到企業(yè)業(yè)務(wù)中。
第三,風(fēng)口不代表長(zhǎng)期發(fā)展,低代碼其實(shí)是個(gè)偽需求
在投資市場(chǎng)中,低代碼似乎已經(jīng)成為了一個(gè)新風(fēng)口,很多研究機(jī)構(gòu)都對(duì)低代碼的未來做了分析和預(yù)測(cè)。Infolob 研究顯示,低代碼應(yīng)用程序保持著 40% 的年復(fù)合增長(zhǎng)率,預(yù)計(jì)到 2022 年,低代碼應(yīng)用程序市場(chǎng)總規(guī)模將達(dá) 212 億美元。研究機(jī)構(gòu) Gartner 則預(yù)測(cè),2024 年應(yīng)用軟件開發(fā)活動(dòng)當(dāng)中的 65% 將通過低代碼方式完成,同時(shí) 75% 的大型企業(yè)將使用至少四種低代碼開發(fā)工具進(jìn)行應(yīng)用開發(fā)。
那么,被資本市場(chǎng)看好是否意味著低代碼的未來值得期待呢?
徐昊表示:“風(fēng)口和長(zhǎng)期發(fā)展并不能完全劃等號(hào)。資本市場(chǎng)的投資策略往往是寧可錯(cuò)投、不可錯(cuò)過,而作為行業(yè)從業(yè)者,我是從基礎(chǔ)邏輯來判斷一項(xiàng)技術(shù)的未來,即它對(duì)行業(yè)長(zhǎng)期發(fā)展是否有幫助?!?br /> “低代碼的出現(xiàn)確實(shí)是有市場(chǎng)機(jī)遇的,現(xiàn)在程序員缺口很大,大家都在 996,加班干活,所以我們需要一個(gè)提升效能的工具。但你仔細(xì)思考,對(duì)于很多企業(yè)來說,這其實(shí)是個(gè)偽需求,低代碼的定位不是幫助從業(yè)者提升效能,而幫助小白來入門行業(yè)。軟件從業(yè)者的效率會(huì)低于一個(gè)沒有入門的人嗎?顯然不可能,所以與其關(guān)注低代碼,不如關(guān)注針對(duì)程序員本身是否有工具可以幫助他,能否將他的流程進(jìn)行有效的自動(dòng)化。”
采訪嘉賓:徐昊,ThoughtWorks 全球技術(shù)策略顧問、中國區(qū) CTO 及首席咨詢師。自 2003 年起開始實(shí)踐極限編程等敏捷方法,是 Agile China 和 BJUG(Beijing Java User Group)創(chuàng)始人,在 Scrum 和 FDD 等敏捷方法、敏捷交付和敏捷項(xiàng)目管理、IT 人員勝任力、大規(guī)模工程實(shí)踐、以及組織認(rèn)知模型等方面有著豐富經(jīng)驗(yàn)。目前致力于構(gòu)造高效 IT 組織的理論與實(shí)踐,大規(guī)模團(tuán)隊(duì)敏捷實(shí)踐和管理再造,以及企業(yè)級(jí)技術(shù)應(yīng)用趨勢(shì)和技術(shù)戰(zhàn)略的研究等。