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