前端工程師,后端工程師以及全棧工程師都做什么?各自的薪水狀況又如何?
大家好,這一期我們來談一下,前端工程師,后端工程師和全棧工程師的技術(shù)要求和職責(zé)范圍。
具體來說,不僅僅對(duì)于軟件開發(fā)門外的人來說,對(duì)這項(xiàng)工作內(nèi)容云里霧里,即使對(duì)于程序員自身來說,有很多對(duì)這三個(gè)概念也是模糊不清的。
希望通過這一期的講解,讓大家清楚這三個(gè)概念,然后你可以選擇自己的主攻方向。
首先我們來說一下前端工程師。
前端工程師的主要職責(zé)是處理面向用戶的界面。所有涉及到的可視化的內(nèi)容,以及在這些可視化內(nèi)容基礎(chǔ)上的數(shù)據(jù)交互,比如說輸入輸出,這都屬于前端工程師的職責(zé)。
以網(wǎng)絡(luò)應(yīng)用開發(fā)為例子的話,前端工程師需要了解HTML,CSS, JavaScript,這算是最靠前的三門技術(shù)。
具體到實(shí)際的開發(fā)當(dāng)中,又會(huì)涉及到很不同的架構(gòu)。在不同的公司中會(huì)有不同的架構(gòu)應(yīng)用,這就要求前端工程師需要適用各種各樣的開發(fā)環(huán)境。
這樣的開發(fā)環(huán)境框架,比如說Angular, Reacr, Vue等等。這些框架的好處就是能夠很快的幫助用戶搭好整個(gè)程序的框架, 從而增加程序的擴(kuò)展性和開發(fā)的效率。
對(duì)于一些非常龐大的系統(tǒng)來說,可能會(huì)用到一些設(shè)計(jì)模式比如說Redux來管理狀態(tài)。因?yàn)檫@些狀態(tài)管理系統(tǒng)是額外的一套系統(tǒng),如果用不好的話,可能會(huì)增加開發(fā)的難度,而不是減輕開發(fā)的負(fù)擔(dān)。
所以我建議在選擇這類開發(fā)模式的時(shí)候一定要慎重。
像以前,這類狀態(tài)管理都是放在后端處理的,但是在現(xiàn)在的網(wǎng)絡(luò)應(yīng)用開發(fā)中,把這一部分都放到前端來了。這樣做的目的就是減輕后端的數(shù)據(jù)吞吐量,提高后端的數(shù)據(jù)處理效率。
另一部分從后端挪到前端來的就是路徑管理部分。在多頁應(yīng)用程序開發(fā)中,一般都是后端來返回某個(gè)頁面,前端顯示就行了。
在現(xiàn)在的應(yīng)用開發(fā)中,一般都是單頁應(yīng)用開發(fā),這樣路徑的處理就在前端進(jìn)行了。這樣做的好處是提高前端應(yīng)用的處理效率。從而增強(qiáng)用戶的體驗(yàn)。
用戶界面這一塊也有單獨(dú)的框架,也可以稱之為CSS的框架,比如說像bootstrap,primeNG 等等。這些東西作為前端開發(fā)工程師來說是應(yīng)該知道的,至少要知道一種或者幾種。因?yàn)楹芏喙径荚谟眠@些東西。
基于這些框架,開發(fā)出來的界面看上去更專業(yè),而且速度很快。
除了這些界面架構(gòu),還要了解CSS里面的一些基礎(chǔ)技術(shù),比如Flex Box,Grid Box等等, 最好在用一些界面框架之前先了解這些比較基本的CSS的技術(shù)。學(xué)好這些基本技術(shù)的最大好處, 就是不會(huì)被一些界面的框架綁住手腳。
當(dāng)然了,還有一部分要學(xué)好的東西就是前端的編程工具,比如說Visual Studio Code是比較流行的。要了解一些需要的插件, 這樣可以讓你的開發(fā)工作變得容易一些。
代碼管理工具部分也是要了解的,這個(gè)不管是前端開發(fā),后端開發(fā)還是全棧開發(fā)都需要掌握的,比如說現(xiàn)在比較流行的是Git版本管理。
前端開發(fā)還需要學(xué)一些包管理的工具,比如說NPM, YARN,web pack,Babel, Sass等等。
前端工程師還需要了解HTTP協(xié)議的基本的操作,比如說get,post,put,delete等等,然后要了解返回值代碼代表的意義。
JSON數(shù)據(jù)結(jié)構(gòu)和應(yīng)用程序接口的調(diào)用也是必須要了解的。因?yàn)楝F(xiàn)在基本上都是restful API,所以以上這些知識(shí)是經(jīng)常被用到的。
對(duì)于前端工程師來說,設(shè)計(jì)界面雖然不是個(gè)硬性指標(biāo),但是你如果懂的話肯定是個(gè)優(yōu)勢(shì)的。
一般的公司都會(huì)有UI/UX設(shè)計(jì)師,作為前端工程師呢,你的任務(wù)就是如果能看懂他們的工作,然后把他們的工作轉(zhuǎn)成代碼,實(shí)現(xiàn)出來就可以了。但是有些小公司是沒有UI/UX設(shè)計(jì)師的, 所以前端工程師的任務(wù),也要做界面的設(shè)計(jì)。
到目前為止,基本上介紹完了前端工程師的工作內(nèi)容,內(nèi)容不少吧?嗯,是的。
接下來我們來說一下后端工程師的工作內(nèi)容。
后端工程師主要是開發(fā)服務(wù)器端運(yùn)行的代碼,這些代碼是不會(huì)在客戶端跑的。從一定意義上來講后端的工作就像蓋樓房的地基部分和框架部分。前端的工作就像除此之外的那些工作。
后端開發(fā)工程師需要學(xué)習(xí)的語言,可以有很多種,比如說JavaScript,如果你用nodejs的話。也可以是PHP, 也可以是Python, 也可以去asp.net, 也可以是Java。幾乎所有的語言都可以在服務(wù)端用起來。跟前端開發(fā)一樣,在后端開發(fā)的時(shí)候你可能也要用一些框架。比如說nodejs的話, 你可以用express,PHP的話,你可以用laravel, Python的話有django和pyramid。對(duì)于所有后端開發(fā)的程序語言,都有相應(yīng)的開發(fā)框架, 也有可能你自己定一些開發(fā)框架,或者你們公司已經(jīng)在使用一些自定義的開發(fā)框架了。
后端工程還要有很強(qiáng)的數(shù)據(jù)庫的知識(shí),如果你使用關(guān)系型數(shù)據(jù)庫也就是結(jié)構(gòu)化數(shù)據(jù)庫的話,對(duì)于SQL一定要精通,如果你使用非關(guān)系型數(shù)據(jù)庫也稱之為非結(jié)構(gòu)化數(shù)據(jù)庫的話,對(duì)于JSON以及對(duì)應(yīng)的數(shù)據(jù)庫工具一定要精通。后端工程師需要對(duì)數(shù)據(jù)庫的表格或者數(shù)據(jù)集進(jìn)行設(shè)計(jì)。
后端開發(fā)工作當(dāng)然要處理HTTP的請(qǐng)求, 這就需要更加清楚每一種請(qǐng)求狀態(tài)所代表的意義,以及返回值的定義,還有接收數(shù)據(jù)的定義。
在接口開發(fā)這一部分當(dāng)中,你可能會(huì)用到一些ORM模型, 比如說,asp.net的話有Entity framework,Java的話會(huì)用到hibernate。你也可以用直接的sql語句來處理數(shù)據(jù)庫的操作,甚者可以寫一下復(fù)雜的存儲(chǔ)程序。這里尤其需要指出的是, 對(duì)于存儲(chǔ)程序開發(fā)來說, 肯定要對(duì)sql語言相當(dāng)熟悉,只有這樣你才能開發(fā)出比較高效的存儲(chǔ)程序來。
對(duì)于非關(guān)系型數(shù)據(jù)庫,比如說Mango db可以用好類似mongoose的工具。
后端開發(fā)一個(gè)很重要的工作內(nèi)容就是保證數(shù)據(jù)的安全性。比如有一些對(duì)于一些特定的接口,只能有特定的用戶來使用, 其他的用戶不可以進(jìn)行訪問的。
后端開發(fā)還要了解服務(wù)器部署的工作內(nèi)容, 只有了解這些,才可以告訴DevOps工程師如何部署你的服務(wù)端程序代碼。這里的工作,比如說如何設(shè)置nginx, 如何使用docker container,如何使用tomcat, iis等等。
最后來說一下全棧開發(fā)的工作內(nèi)容。
全棧開發(fā)工作內(nèi)容,基本上包含了前面談到的前端工程師的工作內(nèi)容和后端工程師的工作內(nèi)容。全站工程師的另一個(gè)重要任務(wù)就是把前端和后端的工作合起來。
這個(gè)工作不像前端工作或者后端工作那么單純,全棧工程師需要了解幾乎所有的事情,尤其是對(duì)于一個(gè)項(xiàng)目在使用微服務(wù)處理的話,有可能有十幾個(gè),20多個(gè),甚至更多的微服務(wù)系統(tǒng),全棧工程師需要對(duì)這些都要了如指掌。
但是話又說回來,作為一名全棧工程師,不一定說每天都要對(duì)所有的事情親自去處理。一般來說,具體的工作重點(diǎn)取決于當(dāng)前的項(xiàng)目狀態(tài),全棧工程師可以一部分時(shí)間用在前棧開發(fā)部分,然后過一段時(shí)間可以去做后端的開發(fā),用來平衡前后端開發(fā)的工作量和工作進(jìn)度。
有一點(diǎn)可以肯定的, 全棧工程師幾乎可以跟開發(fā)工作中的任何環(huán)節(jié)中的開發(fā)工程師進(jìn)行合作。
從薪水的分布狀態(tài)來看,一般來說,由于工作內(nèi)容的復(fù)雜性和多樣性,前端工程師的工資相對(duì)來說要高于后端工程師的工資,但是這個(gè)差距并不大。這個(gè)跟具體的公司的具體的工作項(xiàng)目是有關(guān)系的, 有的公司后端工程師掙的比前端工程師還要多呢。
全棧工程師因?yàn)槭裁炊伎梢宰觯岳碚摵同F(xiàn)實(shí)上來講,薪水比前端工程師和后端工程師都要掙得多一點(diǎn)。
但是值得一提的是,很少有人能夠做全棧開發(fā)。這主要是因?yàn)樽鳛槿祟悾覀儗?duì)工作內(nèi)容的喜好都有一定的傾向性,換句話說,你不太可能對(duì)所有的事情都感興趣,前端的工作注重的是可視化處理,后端的工作注重的是科學(xué)計(jì)算,深度數(shù)據(jù)挖掘,大部分人是只對(duì)某一種感興趣的。
作為一名全棧開發(fā)工程師,并不是薪水多一點(diǎn)點(diǎn)那么簡單,他的工作內(nèi)容,要超出很多, 要學(xué)的東西,也要超出很多,這個(gè)學(xué)習(xí)過程,對(duì)于大部分工程師來說都會(huì)崩潰掉的。
-
工程師
+關(guān)注
關(guān)注
59文章
1565瀏覽量
68408
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論