爲什麼我說低代碼是“行業毒瘤”?

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用低代碼平臺寫出來的代碼既難以維護,又難以測試,同時它還給行業傳遞了非常不好的信號,“程序員的價值是不值錢的”,最終造成的結果就是一些不具備編程專業技能的人,使用極不趁手、效率低下的工具來做寫代碼的工作。這是非常危險的,這類低代碼工具就是行業毒瘤!"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"近段時間,低代碼在市場中獲得了前所未有的熱度,很多投資機構都做了相關的分析與預測。Gartner 預測:到 2025 年,70% 的新應用將由低代碼 \/ 無代碼技術完成開發。那麼,低代碼真的是新風口嗎?它真的可以提升效率嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"帶着這些問題,InfoQ 採訪了 ThoughtWorks 中國區 CTO 徐昊,他表示低代碼不是一個新概念,現在也不是低代碼第一次引發業界討論,以降低程序員門檻爲目的的低代碼從底層邏輯上就是不通的,這類低代碼不是風口,而是行業毒瘤。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"低代碼並不是新概念,每隔幾年就會重新流行"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"什麼是低代碼呢?2014 年,Forrester Research 研究機構正式提出了低代碼的定義,即利用很少或幾乎不需要寫代碼就可以快速開發應用,並可以快速配置和部署的一種技術和工具。通俗一點理解,在程序員實現功能的過程中,只使用了很少的代碼,或者是通過拼接的方式來完成,比如我們在 Excel 中輸入公式,完成相應計算,這也可以算是低代碼的一種。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在徐昊看來,低代碼並不是一個新概念,每隔幾年低代碼就會捲土重來,在業界引發熱議。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"伴隨着計算機產生的歷史,“程序員”有一個聖盃性的使命——讓計算機徹底工具化。不要只是讓專業人員來操控計算機,要讓一些沒有編程訓練、不是計算機專業的人也可以使用計算機完成相應的工作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"順着計算機發展歷史去看低代碼,我們會發現每個階段的低代碼定義都是不一樣的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最開始,我們是使用機器碼來編程的,FORTRAN 編程語言出現之後,我們就可以使用高級編程語言去編程,不用再操控機器。那麼,與操控機器對比,FORTRAN 中的數學表達式就是“低代碼”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"經過一段時間的發展,編程開始圍繞數據來展開,那麼,業務人員能不能不用寫代碼就生成自己的數據報表呢?這時,SQL 就出現了,當年它也被認爲是“低代碼”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"根據歷史規律,這類“低代碼”總是在出現之後再慢慢演變成程序員的一個工具。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這次,低代碼能夠流行的一個背景是微服務的發展。微服務的理念是把企業中複雜度高的應用拆解成多個微服務,然後通過更簡單、更低成本的方式把已存在的微服務串聯起來,形成新的功能。那麼,企業在進行微服務改造的時候,心中存的念想就是可以降低新功能研發和創新的成本。當企業的微服務改造都基本完成之後,通過“低代碼”的開發模式將它們串聯成新功能,似乎是合理的選擇。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"以降低程序員門檻爲目的的低代碼是最沒用的"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"低代碼領域目前沒有特別明確的類別劃分依據,各家研究機構和企業都有自己的劃分標準。在徐昊看來,低代碼可以粗粒度地分爲三類。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第一類低代碼是我們常說的腳本化"},{"type":"text","text":",類似於在 Excel 中使用宏,通常是圍繞一個特定的產品或生態去形成腳本化的環境。以 Salesforce 爲例,每家公司的銷售流程都會有差異,即使是再優秀的 SaaS 服務或產品都只能覆蓋 80% 以上的功能,剩下一些需求還是要定製化。而這些定製化的需求往往是輕量級的,因此,SaaS 或 PaaS 平臺通過低代碼工具就可以實現這些需求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其實,腳本化在行業中已經存在很多了,基本上所有做產品的公司都有腳本化的需求,主體功能不變,通過一個輕量的腳本語言在上面去做定製化需求。最典型的例子 JavaScript,JavaScript 出現時的平臺產品是瀏覽器,通過一個腳本語言去完成瀏覽器上的一些額外功能,但是現在很少有人會把使用 JavaScript 叫做低代碼。從某種程度上來講,"},{"type":"text","marks":[{"type":"strong"}],"text":"這類低代碼產品最終會演變成程序員的工作,甚至引發新一類程序員的出現,而它本身則從低代碼退化成爲真正的代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第二類是我們希望看到的低代碼,但是可能沒有商業前景。"},{"type":"text","text":"目前企業內部仍然存在大量的人工操作和流程。這些操作或流程可能都有特殊之處,如果把它們自動化,就可以把大量的人力從繁瑣的工作中解放出來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但是企業很難關注這些流程,再加上想要自動化這些工作是很難的。不過我們會發現,在行業中出現了很多針對個人工作流的自動化工具,比如蘋果的 automator, 曇花一現的 IFTTT,甚至更早的 yahoo pipes。這種簡單的個人流程自動化低代碼,通常是根據屏幕上發生的事情來觸發,或者根據繪製的簡單流程完成業務自動化的操作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"服務於個人生產力的低代碼,既不會對行業造成影響,同時又有很明確的市場需求,但由於不賺錢,進入這個領域的人非常少。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第三類是現在常見的以降低程序員門檻爲目的,想要說服企業使用便宜的人力成本去幹活的低代碼平臺"},{"type":"text","text":"。在它們的宣傳語中甚至會強調自己不只是低代碼,而是無代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這類低代碼其實就是之前出現過的使用表單去繪製工作流,然後在工作流程的每個節點上配上表、企業流程和 OA。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"徐昊表示:"},{"type":"text","marks":[{"type":"strong"}],"text":"“這類代碼其實是最沒有用的,它給行業傳達了非常不好的信號——"},{"type":"text","text":"程序員的價值是不值錢的,它嘗試說服企業的理由永遠是程序員那麼貴,使用我的工具,就可以使用更便宜的程序員了。事實上,這些能夠實現的功能非常有限,甚至會導致很嚴重的結果,讓一些不具備專業技能的人,使用極不趁手、效率低下的工具,來幹寫代碼的工作。這是非常危險的,這樣寫出來的代碼既難以維護,又難以測試,"},{"type":"text","marks":[{"type":"strong"}],"text":"這一類的工具低代碼平臺是行業毒瘤。”"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"爲什麼我說低代碼是行業毒瘤?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"徐昊認爲以降低程序員門檻爲目的的低代碼是行業毒瘤,但有意思的是,這類低代碼平臺在資本上是最受追捧的,因爲它能講出很美好的故事。原本企業需要花很多費用來僱傭程序員,而使用低代碼工具就可以節約這部分成本。但仔細思考,就會發現這個故事的內在邏輯是有問題的。問題出在哪裏呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第一,低代碼平臺預設的使用人羣永遠是初級、入門的人"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以圖形化工作流爲例,當你完全不會寫代碼時,通過拖拽工作流這種直觀的方式可以實現相關代碼。但開發者會成長,不會永遠處在同樣的位置,而低代碼平臺預設的使用羣體永遠是初級、入門的人。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以面向幼兒編程的編程語言 Scratch 爲例,它將代碼結構表達爲圖形化的模塊,通過圖形化的拖拽拼搭代碼。在這種情況下,即使是不識字的小朋友也可以通過拖拽去實現相關功能。但是小朋友不會永遠不識字,當他成長之後,就會發現打字的效率是要遠高於拖拽。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第二,低代碼平臺暗藏巨大的變革成本"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"根據徐昊的觀察,目前絕大多數低代碼廠商提供的產品都嘗試覆蓋完整的軟件生命週期。企業購買之後,開發者在平臺上按照平臺的規則來編程。所以,低代碼平臺看似售賣的是開發工具,實際上賣的是一種工作模式,企業研發團隊需要改變原本的工作模式。這種變革的成本是非常巨大的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據徐昊所知,某廠商的研發部想要上線一個低代碼平臺來提升研發效能,但是上線之後,發現團隊沒有辦法使用低代碼平臺來接管整個業務,再加上上線時間很緊張,所以權衡之後,他們又採購了另一個低代碼平臺,想要聯合兩個平臺來解決問題,但現實是直到現在,他們還在嘗試如何將低代碼平臺成功應用到企業業務中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第三,風口不代表長期發展,低代碼其實是個僞需求"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在投資市場中,低代碼似乎已經成爲了一個新風口,很多研究機構都對低代碼的未來做了分析和預測。Infolob 研究顯示,低代碼應用程序保持着 40% 的年複合增長率,預計到 2022 年,低代碼應用程序市場總規模將達 212 億美元。研究機構 Gartner 則預測,2024 年應用軟件開發活動當中的 65% 將通過低代碼方式完成,同時 75% 的大型企業將使用至少四種低代碼開發工具進行應用開發。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那麼,被資本市場看好是否意味着低代碼的未來值得期待呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"徐昊表示:“風口和長期發展並不能完全劃等號。資本市場的投資策略往往是寧可錯投、不可錯過,而作爲行業從業者,我是從基礎邏輯來判斷一項技術的未來,即它對行業長期發展是否有幫助。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“低代碼的出現確實是有市場機遇的,現在程序員缺口很大,大家都在 996,加班幹活,所以我們需要一個提升效能的工具。但你仔細思考,對於很多企業來說,這其實是個僞需求,低代碼的定位不是幫助從業者提升效能,而幫助小白來入門行業。軟件從業者的效率會低於一個沒有入門的人嗎?顯然不可能,所以與其關注低代碼,不如關注針對程序員本身是否有工具可以幫助他,能否將他的流程進行有效的自動化。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"採訪嘉賓:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"徐昊,ThoughtWorks 全球技術策略顧問、中國區 CTO 及首席諮詢師。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自 2003 年起開始實踐極限編程等敏捷方法,是 Agile China 和 BJUG(Beijing Java User Group)創始人,在 Scrum 和 FDD 等敏捷方法、敏捷交付和敏捷項目管理、IT 人員勝任力、大規模工程實踐、以及組織認知模型等方面有着豐富經驗。目前致力於構造高效 IT 組織的理論與實踐,大規模團隊敏捷實踐和管理再造,以及企業級技術應用趨勢和技術戰略的研究等。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章