低代碼平臺(tái)的興起對(duì)程序員職業(yè)的影響和沖擊是有多大?
先說結(jié)論: 因人而異。
會(huì)不會(huì)失業(yè),取決于你工作的內(nèi)容、你對(duì)新事物的態(tài)度、你學(xué)習(xí)新知識(shí)的能力,簡而言之,取決于你的認(rèn)知。本文主要闡述低代碼的概念,介紹目前主流的低代碼平臺(tái),總結(jié)低代碼平臺(tái)的典型特征、存在優(yōu)勢(shì)以及未來發(fā)展趨勢(shì)。并站在程序員的角度,分析如何在已經(jīng)到來的低代碼戰(zhàn)爭中,找到自己的定位,一展所長。什么是低代碼?低代碼(Low-Code)一詞最早由Forrester在2014年提出,通過少量代碼就可以快速生成應(yīng)用程序的開發(fā)平臺(tái)。這類平臺(tái)面向的是IT專家或者平民程序員,以快速交付應(yīng)用程序?yàn)槟康模鉀Q傳統(tǒng)軟件開發(fā)模式帶來的周期長、成本高等問題。低代碼是一個(gè)相對(duì)的概念。從字面上看,能減少代碼量的開發(fā)方式就可以看做是低代碼。低代碼平臺(tái)指面向業(yè)務(wù)開發(fā)人員,屏蔽底層技術(shù)復(fù)雜性,以可視化方式為主,少量代碼為輔,用來快速搭建各種應(yīng)用系統(tǒng)的開發(fā)平臺(tái)。低代碼業(yè)內(nèi)領(lǐng)軍者Outsystems有自己對(duì)低代碼的定義:低代碼是一種軟件開發(fā)方法,可以更快地交付應(yīng)用程序,并且只需很少的手工編碼。低代碼平臺(tái)是一組工具,這些工具可以通過建模和圖形界面來可視化應(yīng)用程序開發(fā)。可以使開發(fā)人員可以跳過手工編碼,從而加快了將應(yīng)用程序投入生產(chǎn)的過程。Mendix認(rèn)為,低代碼開發(fā)是一種可視化應(yīng)用開發(fā)方法。通過低代碼開發(fā),不同經(jīng)驗(yàn)水平的開發(fā)人員能夠通過圖形用戶界面,使用拖放式組件和模型驅(qū)動(dòng)邏輯來創(chuàng)建 Web 和移動(dòng)應(yīng)用。從各個(gè)低碼平臺(tái)對(duì)低代碼的定義,可以看出低代碼概念的基礎(chǔ)特征:只需少量代碼、通過可視化方式開發(fā),相比傳統(tǒng)開發(fā)模式,周期短,交付快,能夠快速搭建應(yīng)用。形式各異的低碼平臺(tái)比較知名的低碼平臺(tái),國外有Outsystems、Mendix,國內(nèi)有華為應(yīng)用魔方、阿里宜搭、簡道云、清流等。讓我們先來看看這些低代碼平臺(tái)研制的產(chǎn)品的功能有哪些,主要解決什么樣的問題。華為應(yīng)用魔方華為應(yīng)用魔方(AppCube)提供四大能力,幫助開發(fā)者高效構(gòu)建應(yīng)用。頁面編排能力,可以把頁面的組件、布局、顏色進(jìn)行編排;相關(guān)數(shù)據(jù)建模能力,用于保存業(yè)務(wù)數(shù)據(jù);業(yè)務(wù)邏輯編排能力,基于機(jī)器自動(dòng)執(zhí)行的、不需要人為干涉的流程,可以高效編排;BPM的流程編排的能力,用以解決人為干涉和審批類的流程問題。對(duì)于復(fù)雜的企業(yè)數(shù)字化場(chǎng)景,AppCube提供了全場(chǎng)景的開發(fā)能力對(duì)于專業(yè)軟件開發(fā)工程師和企業(yè)IT人員,可以用低代碼開發(fā)能力快速開發(fā)應(yīng)用對(duì)于業(yè)務(wù)人員,可以用零代碼能力,通過一些拖拽快速構(gòu)建對(duì)于面向?qū)I(yè)領(lǐng)域的專業(yè)問題,如復(fù)雜業(yè)務(wù)算法,開發(fā)者可以使用Java、Python等語言開發(fā),以微服務(wù)的方式發(fā)布到AppCube低代碼平臺(tái)進(jìn)行托管和調(diào)用阿里宜搭宜搭是阿里巴巴自研的低代碼應(yīng)用構(gòu)建平臺(tái),通過可視化拖拽的方式,傳統(tǒng)模式下需要2周才能完成開發(fā)的應(yīng)用,用宜搭2小時(shí)就能完成。用宜搭搭建應(yīng)用,你只需要關(guān)注業(yè)務(wù)本身。數(shù)據(jù)存儲(chǔ)、運(yùn)行環(huán)境、服務(wù)器、網(wǎng)絡(luò)安全等,平臺(tái)為你全部搞定。宜搭通過高度的抽象,將頁面元素封裝為基礎(chǔ)組件和業(yè)務(wù)組件,將業(yè)務(wù)規(guī)則、權(quán)限等封裝為規(guī)則配置、公式和可拖拽的流程設(shè)計(jì)器,通過拖拽以及配置,無需寫代碼,即可完成符合業(yè)務(wù)需求的應(yīng)用系統(tǒng)搭建。簡道云簡道云是一款靈活易用的應(yīng)用搭建平臺(tái),提供豐富的功能模塊,如:在線表單,流程,儀表盤,知識(shí)庫等功能。使用者無需代碼基礎(chǔ)即可像搭建積木一樣,快速搭建出符合需求的個(gè)性化管理應(yīng)用。清流輕流認(rèn)為的無代碼開發(fā)是一種無需代碼基礎(chǔ)、適合業(yè)務(wù)人員、IT開發(fā)及其他各類人員使用的、快速構(gòu)建適應(yīng)企業(yè)各種需求變化的數(shù)字化開發(fā)平臺(tái),用戶在幾天甚至幾個(gè)小時(shí)內(nèi)就能完成系統(tǒng)的開發(fā)、測(cè)試和部署,并能夠隨時(shí)調(diào)整或更新。OutsystemsOutSystems 是低代碼市場(chǎng)的長期領(lǐng)導(dǎo)者,OutSystems 的低代碼開發(fā)平臺(tái),讓軟件開發(fā)人員和業(yè)務(wù)用戶通過直觀的可視化界面來構(gòu)建應(yīng)用程序,而不是傳統(tǒng)的編寫代碼方式。用戶可以在開發(fā)平臺(tái)靈活拖動(dòng)各個(gè)圖形化控件,以構(gòu)建業(yè)務(wù)流程、邏輯和數(shù)據(jù)模型等所需的功能,必要時(shí)還可以添加自己的代碼。Mendix美國原生代低代碼開發(fā)廠商,低代碼開發(fā)平臺(tái)的全球領(lǐng)導(dǎo)者之一。Mendix大部分的功能都是優(yōu)越的,包括其數(shù)據(jù)建模和管理能力、提供數(shù)據(jù)庫及核心系統(tǒng)的連接組件,可以實(shí)現(xiàn)CRM、ERP等獨(dú)立應(yīng)用數(shù)據(jù)的聯(lián)通。雖然每個(gè)低代碼平臺(tái)的功能形態(tài)各不相同,但是我們?nèi)匀豢梢詮闹械贸鲆恍┑痛a平臺(tái)的通用特征:低碼平臺(tái)的核心是搭建基礎(chǔ)引擎,如:表單引擎,流程引擎,報(bào)表引擎,消息引擎,規(guī)則引擎等等。低碼平臺(tái)要具備建設(shè)系統(tǒng)基礎(chǔ)設(shè)施能力,如:組織架構(gòu),用戶體系,權(quán)限管理等。低碼平臺(tái)都有組件/插件庫,基于數(shù)據(jù)模型,通過可視化的頁面操作/配置來構(gòu)建應(yīng)用 復(fù)雜一點(diǎn)的低碼平臺(tái),需要擁有集成管理的能力,如:集成現(xiàn)有系統(tǒng)的開發(fā)能力,自動(dòng)對(duì)接第三方開放平臺(tái)等。 低碼平臺(tái)功能越是豐繁復(fù)雜,越是需要程序員參與開發(fā)對(duì)接,深度配合。程序員的核心競(jìng)爭力是什么?復(fù)盤能力復(fù)盤能力要求我們?cè)诠ぷ魍瓿梢欢温浜螅瑢?duì)前期工作的代碼和bug進(jìn)行回顧分析,發(fā)現(xiàn)閃光點(diǎn)和不足。具體而言,如何實(shí)現(xiàn)代碼復(fù)用、局部重構(gòu),改善既有的代碼;如何避免出現(xiàn)重復(fù)的、相似的bug?復(fù)盤能力能夠幫助程序員在日常的開發(fā)工作中,一點(diǎn)一滴的成長。系統(tǒng)思維能力系統(tǒng)性思維要求我們?cè)诰幊虒?shí)踐中要有方法論,要善于抽象,從整體上去思考問題。舉個(gè)例子,當(dāng)一個(gè)項(xiàng)目趨于穩(wěn)定之后,系統(tǒng)架構(gòu)和編程范式基本不變了,開發(fā)具體功能的代碼結(jié)構(gòu)就會(huì)變得很相似。那如何來提升編程效率呢?寫個(gè)代碼生成器或許就是一個(gè)不錯(cuò)的思路!學(xué)習(xí)新知識(shí)的能力海量的信息在互聯(lián)網(wǎng)上不分日夜地進(jìn)行創(chuàng)造、分發(fā),每個(gè)人都能自由的獲取信息。如何篩選信息,如何辨識(shí)信息,是現(xiàn)階段信息化最大的挑戰(zhàn)。作為信息化的建設(shè)者,程序員的自學(xué)能力,主動(dòng)探索未知領(lǐng)域的能力,是非常核心的能力。這一點(diǎn)基本算業(yè)界共識(shí)了。解決問題的能力解決問題的穩(wěn)準(zhǔn)狠是衡量一個(gè)程序員是否優(yōu)秀的重要因素之一,也是資深技術(shù)人員真正的價(jià)值所在。程序員如何與低代碼相處?低代碼要解決的痛點(diǎn)是,在低代碼平臺(tái)提供核心引擎和業(yè)務(wù)組件的基礎(chǔ)上,快速搭建一套具備基礎(chǔ)的業(yè)務(wù)功能,滿足常規(guī)需求和日常使用的應(yīng)用。對(duì)業(yè)務(wù)人員而言,它確實(shí)滿足了80%高頻重復(fù)的基礎(chǔ)需求,但仍有20%定制功能、復(fù)雜交互、特殊場(chǎng)景等個(gè)性化需求,無法通過可視化操作或者通用引擎來解決,必須要程序員介入開發(fā)。另一方面,持續(xù)地進(jìn)行迭代更新是一款軟件保持生命力的基本要素。而這往往會(huì)造成原本屬于二八原則里80%基礎(chǔ)需求變成20%的個(gè)性化需求。越是復(fù)雜的功能迭代,越是離不開程序員。無代碼或許會(huì)到來,但去程序員不會(huì)發(fā)生。然而這并不意味著對(duì)程序員毫無影響。恰恰相反,當(dāng)一個(gè)軟件工程80%的功能,都可以通過簡單的代碼邏輯,甚至不需要代碼就能實(shí)現(xiàn)。如果不具備核心競(jìng)爭力,那程序員還是程序員嗎?