從后端研發(fā)到全棧開(kāi)發(fā),是不是最美逆行者?
桂林-遇龍河
大家好,我是業(yè)余碼農(nóng)。
早在我還是個(gè)學(xué)生的時(shí)候,就經(jīng)常聽(tīng)到「全棧工程師」的稱(chēng)號(hào)。那時(shí)候就覺(jué)得這個(gè)崗位一定很牛逼,前后端的技術(shù)都會(huì),一定是程序員中的人上上。
后面慢慢也聽(tīng)說(shuō)過(guò),全棧工程師實(shí)際上就是啥都會(huì)點(diǎn),但啥都不精,就跟我們大學(xué)時(shí)代的那些專(zhuān)業(yè)一樣。
看起來(lái)好像博大精深,但是都只是略懂皮毛。那全棧是不是一個(gè)扯淡的事呢?

咱也不過(guò)多評(píng)論了,反正隨著工作年限的提高,最近我也逐漸接觸并承擔(dān)了一些關(guān)于全棧的開(kāi)發(fā)工作,覺(jué)得這個(gè)方向還是挺有意思的。
感覺(jué)是,沒(méi)有程序員人上人這么夸張,但是需要掌握和涉獵的技術(shù)點(diǎn)也的確是挺多的。
這里總結(jié)幾個(gè)關(guān)于全棧工程師的特點(diǎn):
一、大局觀(guān)更重要
既然是全棧了,當(dāng)然前后端的技術(shù)都會(huì)懂點(diǎn),不然怎樣一個(gè)人充當(dāng)一個(gè)團(tuán)隊(duì)呢。
但是也不要過(guò)于神化這個(gè)身份,畢竟還沒(méi)幾個(gè)人能夠說(shuō)自己能夠精通前端或者后端技術(shù)的。
全棧工程師更傾向于是一個(gè)獨(dú)立開(kāi)發(fā)者,不出意外的話(huà)能夠包攬一個(gè)小項(xiàng)目中的所有代碼成分。
包括前端的UI渲染、組建封裝、頁(yè)面布局、數(shù)據(jù)請(qǐng)求以及必要的邏輯處理,還有后端的接口封裝、數(shù)據(jù)庫(kù)設(shè)計(jì)、數(shù)據(jù)校驗(yàn)、服務(wù)構(gòu)建以及架構(gòu)設(shè)計(jì)等模塊。

單從技術(shù)點(diǎn)上來(lái)說(shuō),的確是比單純的前端工程師或后端工程師要了解得更多更全面。
我們都知道,在大型項(xiàng)目的協(xié)作開(kāi)發(fā)中,溝通聯(lián)調(diào)往往是最麻煩也是最累人的環(huán)節(jié)。
因?yàn)榍昂蠖送瑢W(xué)會(huì)經(jīng)常性的只站在自己?jiǎn)味说牧?chǎng)和角度上去思考和規(guī)劃接口以及技術(shù)方案的制定,這樣就會(huì)導(dǎo)致方案缺乏整體的可行性。
所以相對(duì)來(lái)說(shuō),全棧工程師能夠省去許多在溝通協(xié)作上花費(fèi)的精力和時(shí)間,自己就能夠進(jìn)行全鏈路的分析和方案制定。

在這個(gè)層面上來(lái)說(shuō),全棧工程師所帶來(lái)的整體項(xiàng)目風(fēng)險(xiǎn)上的評(píng)估把控,以及技術(shù)方案上的精簡(jiǎn)和融洽是單端工程師無(wú)法比擬的。
所以在我看來(lái),全棧工程師所處的視角一定不是傾向于某一端的,而是需要擁有一個(gè)全局的視角。從用戶(hù)和技術(shù)人雙重身份出發(fā),全鏈路的審視和評(píng)測(cè)整個(gè)項(xiàng)目的。
許多后端開(kāi)發(fā)會(huì)覺(jué)得前端就是切切圖畫(huà)畫(huà)UI,請(qǐng)求數(shù)據(jù)渲染下圖表;很多前端也會(huì)覺(jué)得后端就是對(duì)數(shù)據(jù)庫(kù)的增刪改查,到處調(diào)接口拼湊下數(shù)據(jù)返回。這其實(shí)都是因?yàn)橄敕ū容^片面所造成的。
對(duì)于一個(gè)全棧工程師,更應(yīng)該能夠區(qū)分前后端的區(qū)別和所擅長(zhǎng)的地方,在代碼構(gòu)建上能夠?qū)⑦壿嬤M(jìn)行合理的劃分。
比如后端就不該無(wú)腦透?jìng)鳎岸艘膊辉撟鎏嗵氐臄?shù)據(jù)處理的邏輯。在項(xiàng)目整體上避免頭重腳輕。
二、適合小而美的項(xiàng)目
上面也提到過(guò),全棧工程師實(shí)際上相當(dāng)于獨(dú)立開(kāi)發(fā)者,相當(dāng)于一個(gè)團(tuán)隊(duì)。但是按照我的理解,一名全棧工程師其實(shí)并不適合去完成一個(gè)大型的項(xiàng)目。
全棧工程師由于技術(shù)全面,所以無(wú)論是在學(xué)習(xí)成本還是開(kāi)發(fā)精力上,都是比單端工程師要高的。這就會(huì)導(dǎo)致大家的一種固有印象,“全棧就是雜而不精”。
雖然不能一棒子打死,一言以蔽之,但是至少還是能夠說(shuō)明全棧在實(shí)際的大型項(xiàng)目開(kāi)發(fā)中,大概率單端能力是比不上單端工程師的。
并且再加上由于人力成本和項(xiàng)目規(guī)劃上的考慮,全棧更適合的是那種小而美的項(xiàng)目。而不是分分鐘幾億日活的超級(jí)項(xiàng)目。

所以其實(shí)認(rèn)識(shí)到這點(diǎn)之后,全棧能夠做的東西就很多了。在大廠(chǎng)中,全棧往往都不會(huì)參與巨無(wú)霸app主端的開(kāi)發(fā)工作,更多是在做各種平臺(tái)建設(shè)以及效率工具的研發(fā)。
我們都知道大廠(chǎng)里內(nèi)卷現(xiàn)象嚴(yán)重,很多時(shí)候卷就卷在平臺(tái)建設(shè)上。

各種類(lèi)型相似的平臺(tái)層出不窮,每個(gè)團(tuán)隊(duì)想象向全部門(mén)甚至全公司推廣自己內(nèi)部的研發(fā)平臺(tái),之后就是各種開(kāi)源的操作,以提升影響力。
所以千萬(wàn)不要小看了做平臺(tái)建設(shè)和效率工具研發(fā)的這群全棧。當(dāng)然了,現(xiàn)在真正做平臺(tái)的也不只是全棧工程師了,只要會(huì)寫(xiě)點(diǎn)代碼的都會(huì)來(lái)做平臺(tái)。
什么前后端客戶(hù)端測(cè)試測(cè)開(kāi),學(xué)點(diǎn)前端看下后端,一個(gè)個(gè)做的飛起。懂得都懂。
三、容易轉(zhuǎn)技術(shù)管理
我們都知道,一般技術(shù)人的一大出路就是做技術(shù)管理。其實(shí)這就是當(dāng)領(lǐng)導(dǎo)了。
現(xiàn)在互聯(lián)網(wǎng)大廠(chǎng)里,特別是比較看重技術(shù)的公司,很多領(lǐng)導(dǎo)實(shí)際上都是技術(shù)出身轉(zhuǎn)的管理層。

這樣的方式的好處不言而喻,讓懂技術(shù)的人來(lái)帶技術(shù)團(tuán)隊(duì)是最好不過(guò)的了。而一個(gè)稍微成熟點(diǎn)的技術(shù)團(tuán)隊(duì),都不會(huì)只有一種崗位的。
很多領(lǐng)導(dǎo)管理的都是包括前端后端測(cè)試測(cè)開(kāi)等技術(shù)崗位的一個(gè)大團(tuán)隊(duì)。
在這樣團(tuán)隊(duì)中,對(duì)領(lǐng)導(dǎo)的技術(shù)視野以及技術(shù)廣度的要求是很高的。而一名全棧工程師,天生就有這樣的優(yōu)勢(shì)。
全棧從一開(kāi)始,所處的視角就更為全面,從項(xiàng)目規(guī)劃到技術(shù)方案,從風(fēng)險(xiǎn)評(píng)估到排期交付,全棧工程師都擁有更靠近上帝的視角。
實(shí)際上就是偏領(lǐng)導(dǎo)的視角,這本質(zhì)上對(duì)技術(shù)管理的工作的工作來(lái)說(shuō)是有幫助的。
再加上全棧工程師接觸的技術(shù)點(diǎn)更廣,在技術(shù)上更側(cè)重于廣度,實(shí)際上也是理解和協(xié)作不同領(lǐng)域技術(shù)人的基礎(chǔ)。
當(dāng)然這只是從技術(shù)廣度上來(lái)說(shuō)明全棧工程師擁有相對(duì)而言更全面的技術(shù)廣度和相對(duì)高的技術(shù)視野。并不意味著全棧更容易得到晉升或者當(dāng)領(lǐng)導(dǎo)。
畢竟,作為一個(gè)技術(shù)管理最重要的還是領(lǐng)導(dǎo)力和管理能力。更多的時(shí)候還是需要時(shí)運(yùn)和機(jī)會(huì)。
四、低代碼輕服務(wù)
上面也提到過(guò),全棧更適合小而美的項(xiàng)目。在這樣的前提之下,誕生了許多能夠幫助全棧工程師快速搭建平臺(tái)產(chǎn)物的工具。
比如最常見(jiàn)的就是只需要拖拽組件就能夠快速進(jìn)行頁(yè)面布局的前端工具,現(xiàn)在還有慢慢流行起來(lái)的可視化后臺(tái)管理配置系統(tǒng)。
這些本質(zhì)上都屬于低代碼甚至是無(wú)代碼工具,只需要掌握基本的前后端理論就能夠快速搭建簡(jiǎn)易的平臺(tái)。
在程序員已經(jīng)成為勞動(dòng)密集型的新型農(nóng)民工的時(shí)代背景下,這種低代碼平臺(tái)能夠很容易想象到它在tob端的用武之地。

除此之外,輕服務(wù)也是用來(lái)快速構(gòu)建平臺(tái)的有利工具。現(xiàn)在互聯(lián)網(wǎng)大廠(chǎng)基本都離不開(kāi)各種云服務(wù),各家大廠(chǎng)也都在發(fā)力云服務(wù)器的研發(fā)的擴(kuò)展。
因此基于各種成熟云服務(wù)器的輕服務(wù)也隨之流行。輕服務(wù)相比于傳統(tǒng)的后端框架,能夠提供開(kāi)箱即用的開(kāi)發(fā)體驗(yàn)。
開(kāi)發(fā)者無(wú)需考慮服務(wù)器和數(shù)據(jù)庫(kù)等基礎(chǔ)設(shè)施的搭建,更不用操心測(cè)試環(huán)境配置、數(shù)據(jù)備份和線(xiàn)上運(yùn)維等一系列繁瑣之事,只需專(zhuān)注于產(chǎn)品開(kāi)發(fā)本身。
其實(shí)輕服務(wù)本質(zhì)上就是相當(dāng)于部署在云服務(wù)器上的容器,可以在容器中建立云函數(shù)云方法,甚至是云工程,開(kāi)發(fā)者自身不需要關(guān)心后端各種環(huán)境的搭建。
當(dāng)然這樣的方式更適用于輕量級(jí)的后端,像騰訊云和字節(jié)輕服務(wù)都是類(lèi)似的所謂后端低代碼的實(shí)現(xiàn)方式。
所以對(duì)于全棧開(kāi)發(fā)者而言,低代碼和輕服務(wù)在很大程度上能夠幫助快速便捷的搭建平臺(tái)。當(dāng)然對(duì)于單端開(kāi)發(fā)者而言也可以很輕易的上手構(gòu)建全棧項(xiàng)目。
全棧工程師其實(shí)也不是什么十分高大上的崗位,相比于單純的前端或后端工程師,擁有更為廣泛的技術(shù)視野和全局視角。而單端工程師在現(xiàn)在的技術(shù)環(huán)境下,也能夠很容易的去做全棧的工作。
所以全棧工程師的職業(yè)發(fā)展后期也需要保證技術(shù)廣度的前提下,專(zhuān)攻一個(gè)方向,提升某個(gè)技術(shù)方向的技術(shù)深度。這樣才能更長(zhǎng)久。
就像我現(xiàn)在一樣,做業(yè)務(wù)需求或技術(shù)重構(gòu)都是用本職工作的技術(shù)棧,但是在參與研發(fā)工具和研發(fā)平臺(tái)的建設(shè)時(shí),往往都是前端后端客戶(hù)端一手抓的。
Python、JS/TS、C/C++、Java、Go、Ruby各種語(yǔ)言都是哪樣順手用哪樣。
技術(shù)這種東西本身是不設(shè)限的,并且只要入了這行,就不可能說(shuō)一直只寫(xiě)某一種語(yǔ)言,或者只用某一個(gè)技術(shù)棧。
在不同場(chǎng)景,不同需求背景以及不同產(chǎn)品上,能夠選擇合適的語(yǔ)言,合適的框架,保持不斷的學(xué)習(xí)才是持續(xù)進(jìn)階的基礎(chǔ)。
或許,每一個(gè)開(kāi)發(fā)者都應(yīng)該,并且都可以是一個(gè)全棧工程師。

