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