你常常聽(tīng)說(shuō)“全棧工程師”這個(gè)叫法吧,不過(guò)這到底表示什么意思呢,你覺(jué)得自己應(yīng)該成為一名全棧工程師么?下面我們就來(lái)探討一下這個(gè)話題。在Web與軟件開(kāi)發(fā)的世界中有3個(gè)基本的關(guān)注點(diǎn):前端、后端與全棧。下面就來(lái)解釋一下他們的含義。
何為全棧工程師?
前端工程師:在打開(kāi)一個(gè)網(wǎng)站時(shí),屏幕上的一切都屬于前端。前端工程師負(fù)責(zé)創(chuàng)建用戶界面背后的代碼。這些工程師不僅要熟悉HTML、JavaScript與CSS,還要掌握很多框架。這些框架有Foundation、Angular JS、Ember JS、Backbone及Bootstrap等等。前端工程師要與設(shè)計(jì)師和其他專家協(xié)同工作,從而將網(wǎng)站從模型轉(zhuǎn)換為可使用的模式。 后端工程師:在你每天所訪問(wèn)的網(wǎng)站背后有服務(wù)器網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)以及各種應(yīng)用,他們相互協(xié)作將你所請(qǐng)求的網(wǎng)頁(yè)與數(shù)據(jù)傳遞給你。后端工程師負(fù)責(zé)構(gòu)建這些組件。他們要擅長(zhǎng)各種編程語(yǔ)言,如Python、.Net、Ruby、Java及PHP等等,從而通過(guò)這些語(yǔ)言來(lái)編寫程序。他們還需要使用各種數(shù)據(jù)庫(kù)程序如MySQL、SQL Server及Oracle等來(lái)操縱信息并將其傳遞給最終用戶。后端工程師需要與組織中的各種經(jīng)理及其他成員通力配合來(lái)完成工作。 全棧工程師:全棧工程師既要了解后端開(kāi)發(fā),也要了解前端開(kāi)發(fā)。他們是“全方位”的工程師,熟悉服務(wù)端的同時(shí)又懂客戶端用戶體驗(yàn)。全棧工程師理解Web開(kāi)發(fā)進(jìn)程的每一個(gè)方面,同時(shí)又會(huì)就整體策略與最佳實(shí)踐對(duì)相關(guān)干系人提出建議與指導(dǎo)。
角色演變
在早期的桌面計(jì)算時(shí)代,我們常常會(huì)看到一個(gè)人就完成了整個(gè)應(yīng)用的開(kāi)發(fā)工作。隨著程序變得越來(lái)越復(fù)雜,以及越來(lái)越多的技術(shù)涌現(xiàn)了出來(lái),一個(gè)人很難再完全掌控應(yīng)用開(kāi)發(fā)的各個(gè)方面。在21世紀(jì)初期,一些擁有專業(yè)化技能的專家開(kāi)始出現(xiàn)。由于復(fù)雜性的持續(xù)攀升,當(dāng)Web 2.0站點(diǎn)開(kāi)始出現(xiàn)時(shí),很多程序員又回到了更簡(jiǎn)單的方式上來(lái)。相比于構(gòu)建復(fù)雜的數(shù)據(jù)庫(kù)和企業(yè)計(jì)算網(wǎng)絡(luò),開(kāi)發(fā)者開(kāi)始部署穩(wěn)定的LAMP棧(Linux、Apache、MySQL與PHP),并創(chuàng)建出了靈活的面向?qū)ο笳Z(yǔ)言,如Django與Ruby on Rails。在這種環(huán)境下,全棧工程師的價(jià)值變得越來(lái)越大,因?yàn)樗麄兪煜ご蠖鄶?shù)現(xiàn)代框架與語(yǔ)言。
運(yùn)維復(fù)雜性的回歸
不過(guò),由于移動(dòng)計(jì)算與iOS和Android平臺(tái)的興起,我們又回到了復(fù)雜性的新時(shí)代:低成本的云服務(wù)器如Amazon Web Services和微軟的Azure、MongoDB等數(shù)據(jù)庫(kù)、Node.js與Angular.js等前端技術(shù)、Docker等容器技術(shù)。這些平臺(tái)、服務(wù)與框架都擁有自身的特性。因此,一個(gè)人幾乎無(wú)法成為能夠掌握所有技術(shù)的全棧工程師。
通才與專才
在當(dāng)前的環(huán)境下,成為全棧工程師的好處在于沒(méi)多少人擁有足夠的知識(shí)、經(jīng)驗(yàn)與溝通能力來(lái)整體把控使用了各種平臺(tái)與框架的項(xiàng)目,如HTML5、機(jī)器學(xué)習(xí)及Scala等。因此,高水準(zhǔn)的全棧工程師總是供不應(yīng)求的。不過(guò),壞處則在于對(duì)于全棧工程師來(lái)說(shuō),他需要能夠熟練掌握這些組件,但這是非常困難的事情,況且未來(lái)還會(huì)有新的技術(shù)涌現(xiàn)出來(lái)。你可能很聰明,但這些組件本身卻是非常復(fù)雜的,每幾個(gè)月都會(huì)出現(xiàn)新的語(yǔ)言和平臺(tái)。要想時(shí)刻保持技術(shù)上的領(lǐng)先是一件極其困難的事情。出于這個(gè)原因,專才擁有自己獨(dú)特的優(yōu)勢(shì)。組織傾向于雇傭?qū)iT的角色,因此相比于其他開(kāi)發(fā)者來(lái)說(shuō),專才在深層次的知識(shí)以及某個(gè)狹窄領(lǐng)域的經(jīng)驗(yàn)上會(huì)更勝一籌。
全棧工程師的薪資
無(wú)論選擇在前端還是后端進(jìn)行深入學(xué)習(xí),抑或是將自己定位成一個(gè)全棧的通才,從工作前景上來(lái)看都是好的。根據(jù)美國(guó)勞工統(tǒng)計(jì)局發(fā)布的統(tǒng)計(jì)信息來(lái)看,軟件工程師是未來(lái)10年最具發(fā)展?jié)摿Φ穆殬I(yè)之一。2014年,大約有718,000名軟件工程師;從全國(guó)范圍來(lái)看,其平均薪資大約為$95,510。這個(gè)數(shù)字未來(lái)還會(huì)繼續(xù)攀升。那么,到底什么才是最好的工作呢?這取決于你的背景、經(jīng)驗(yàn)與目標(biāo)。前端工程師需要掌握如下技能:
HTML與HTML5
CSS、CSS3與SASS
PHP
JavaScript
jQuery、Angular.js、React,js與Node.js
Websockets與Ajax requests
瀏覽器開(kāi)發(fā)工具與調(diào)試器
Python
Git
后端開(kāi)發(fā)者應(yīng)該精于服務(wù)端編程、語(yǔ)言與框架,如:
C與C++
Python
JavaScript
Ruby on Rails
PHP
Perl
Node.js與Express
MongoDB
Postgres
MySQL與NoSQL
Git
Web APIs
Go
如果想要向著全棧工程師的方向邁進(jìn),你應(yīng)該掌握很多知識(shí)與技能,并且熟悉上面提到的各種組件。此外,還要提升自己的個(gè)人溝通技能,這樣才能管理并與前端與后端開(kāi)發(fā)者實(shí)現(xiàn)較好的協(xié)作。好消息是未來(lái)對(duì)于每一類Web開(kāi)發(fā)者來(lái)說(shuō)都是光明的,無(wú)論是前端、后端,還是全棧。要堅(jiān)持學(xué)習(xí)一切有價(jià)值的東西;掌握新的框架、語(yǔ)言與平臺(tái);并且與開(kāi)發(fā)者同事及最終用戶保持高效的溝通。在這種情況下,無(wú)論世界發(fā)生什么變化,你都會(huì)始終立于不敗之地。
各位讀者,相信大家也對(duì)Web開(kāi)發(fā)的前端、后端及全棧工程師有著自己的認(rèn)識(shí)和理解。你現(xiàn)在的工作可能就位于這3種類型中的一種或是幾種。當(dāng)然了,無(wú)論是前端還是后端都有大量的知識(shí)和技能需要我們理解并掌握,對(duì)于通才與專才的理解也是見(jiàn)仁見(jiàn)智的。在某一個(gè)領(lǐng)域做到很深的程度會(huì)為公司與用戶帶來(lái)價(jià)值;熟練掌握各個(gè)領(lǐng)域的知識(shí)也是頗具價(jià)值的。那么,在你的眼里看來(lái),何為全棧工程師呢?要想成為全棧工程師需要開(kāi)發(fā)者付出哪些努力呢?全棧工程師的價(jià)值與專注于特定領(lǐng)域的工程師價(jià)值之間是如何對(duì)比的呢?你認(rèn)為自己是否應(yīng)該成為全棧工程師呢?歡迎發(fā)表你的看法與見(jiàn)解,并與其他讀者一同交流和討論。
-
工程師
+關(guān)注
關(guān)注
59文章
1571瀏覽量
68555
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論