全棧工程師這個(gè)頭銜在國(guó)內(nèi)還是少有聽(tīng)聞,但是在美國(guó)早已大肆流行開(kāi)來(lái),縱關(guān)Facebook,Twitter,Amazon的招聘要求來(lái)看,有相當(dāng)多的職位寫的是Full Stack Enginner,即全棧工程師。那么,到底什么樣的程序員才可以稱之為全棧工程師呢?
我們要先理解『棧』這個(gè)概念。在編程行業(yè)中,棧指的是一個(gè)程序員或軟件工程師所擁有的技術(shù)量和技術(shù)水平。現(xiàn)在的開(kāi)發(fā)工作普遍分為前端,后端,移動(dòng)端。而全棧則表示一名程序員懂得開(kāi)發(fā)所有端的知識(shí)和技術(shù),并且也懂得一些運(yùn)維、產(chǎn)品和營(yíng)銷知識(shí),而且還了解大數(shù)據(jù)處理、機(jī)器學(xué)習(xí)、區(qū)塊鏈等,那么這個(gè)趨勢(shì)是怎么發(fā)展來(lái)的呢?隨著軟件技術(shù)和云計(jì)算服務(wù)越來(lái)越成熟,開(kāi)發(fā)一項(xiàng)產(chǎn)品越來(lái)越簡(jiǎn)單,我們可以用更短的時(shí)間去學(xué)習(xí)一門新的技術(shù),然后用這門技術(shù)更快的開(kāi)發(fā)出想要的結(jié)果。這樣下來(lái),學(xué)習(xí)和開(kāi)發(fā)成本的下降,造成了程序員不滿足單一使用某一項(xiàng)技術(shù)或開(kāi)發(fā)某一端應(yīng)用,比如后端工程師學(xué)習(xí)前端和移動(dòng)端開(kāi)發(fā)。
全棧工程師之所以在美國(guó)如此流行是因?yàn)楫?dāng)程序員自身了解的編程語(yǔ)言和架構(gòu)知識(shí)以及其他像產(chǎn)品、運(yùn)維之類的軟實(shí)力越多越透徹,就越容易開(kāi)發(fā)出容易維護(hù),可伸縮,高性能,且符合用戶使用習(xí)慣的產(chǎn)品。編程語(yǔ)言只是工具,當(dāng)我們工具箱中的工具逐漸增多時(shí),我們就會(huì)考慮該用哪種工具去解決哪類問(wèn)題。比如要解決高并發(fā)的問(wèn)題,我們可能會(huì)選用基于Node.js的后端JavaScript進(jìn)行開(kāi)發(fā),因?yàn)樗欠亲枞鸌/O和事件驅(qū)動(dòng)的編程模型,可以用更少的線程去處理更多的業(yè)務(wù),從而減少系統(tǒng)資源的開(kāi)銷。而對(duì)于一個(gè)大型的分布式系統(tǒng),我們可以用不同的編程語(yǔ)言去實(shí)現(xiàn)不同的功能模塊,有的需要實(shí)時(shí)處理的就用Node.js,而需要多線程操作的我們就用go,安全性要求高的我們就用Java。一個(gè)人掌握的越多,對(duì)軟件宏觀的思考就會(huì)越周到,所以公司們都十分青睞這樣的人才。
所以作為一名普通的程序員,我們應(yīng)該如何提升自己,讓自己成功全棧工程師呢?我們可以從現(xiàn)有的技術(shù)棧開(kāi)始拓展,比如當(dāng)前是做后端開(kāi)發(fā),那么或多或少的會(huì)用html,css和客戶端JavaScript寫一些界面,那么我們就可以在業(yè)余時(shí)間學(xué)習(xí)一下Vue.js或ReactJS,開(kāi)發(fā)一個(gè)小型的單頁(yè)應(yīng)用的demo,因?yàn)槎际怯猛籎avsScript語(yǔ)法,所以學(xué)起來(lái)并不是很難,前端庫(kù)雖然多,但是都比較容易掌握。對(duì)于移動(dòng)端,如果本身會(huì)Java的話,就可以去學(xué)安卓,至于IOS,有編程語(yǔ)言基礎(chǔ)的話學(xué)swift并不是很難,而且即使都不會(huì),只要會(huì)JavaScript,就可以用React Native進(jìn)行ios和安卓開(kāi)發(fā),而且一套語(yǔ)言可以在兩個(gè)平臺(tái)共享,且性能接近原生。運(yùn)維的話就可以看看比較火的docker,Spring Cloud,和kubernetes,其實(shí)都是差不多的,只不過(guò)需要配置很多參數(shù),這個(gè)只有實(shí)際運(yùn)用的時(shí)候才能得到最佳解決方案,所以基本沒(méi)什么學(xué)習(xí)成本,只是用到的時(shí)候知道去哪查配置就好了。
成為一個(gè)全能型的全棧工程師可能會(huì)犧牲一些深度的,細(xì)節(jié)上的功力,但是得到的是一個(gè)有廣度的、知識(shí)儲(chǔ)備豐富、可拓展、可培養(yǎng)的人才,所以公司才如此渴求此類程序員,我們應(yīng)該做的就是盡早準(zhǔn)備,把自己鍛煉成既有宏觀把控能力,又有細(xì)節(jié)深究能力的優(yōu)秀工程師。
-
工程師
+關(guān)注
關(guān)注
59文章
1571瀏覽量
68546 -
程序員
+關(guān)注
關(guān)注
4文章
952瀏覽量
29812
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論