Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
職業(yè)規(guī)劃的過程中經(jīng)常會被問到這樣的問題:
我是該深入鉆研專精一門,走技術(shù)大牛路線,還是所有都要精通,做一個全棧工程師?
類似這樣的問題還有其他變種問題,是不是到了30歲最遲35歲就要轉(zhuǎn)管理了,是不是技術(shù)年齡大了就沒有優(yōu)勢,精力跟不上了?
這些都是從業(yè)者普遍存在的問題,反應(yīng)了技術(shù)發(fā)展的兩個方向,一種是縱向一種是橫向的,橫向的是瑞士軍刀,縱向的是削鐵如泥的干將莫邪。 到底選哪個呢?
很多人對前端、后端、全棧都是按能力排名的,排名方式如下:
前端>后端>全棧,然后人們都喜歡最牛掰的,就像沒人知道第二個登上月球的人一樣,然后全棧就火了。小編先把這三個工種該做什么不該做什么,大家就清楚怎么做了。
前端:
所有你能看到的東西都是前端做的,比如界面、交互,當(dāng)然還有數(shù)據(jù)從后臺讀取展示和向后臺發(fā)送數(shù)據(jù)。
(具體對比如圖,一圖抵萬言。)
后端:
所有跟業(yè)務(wù)邏輯權(quán)限控制數(shù)據(jù)處理有關(guān)的都是后臺做的,比如權(quán)限控制、訂單管理、數(shù)據(jù)庫交互。
全棧:
前端后端都有一定的了解和能力,能夠前后端獨立工作。
通過以上三者的綜述,大家可以清晰的分出前端和后端的工作內(nèi)容和所需技術(shù),但是對全棧還不是很了解,至少他不是簡單的前端+后端技術(shù)的疊加。那么全棧到底工作內(nèi)容是什么呢?他的價值又在哪呢?我們是否需要成為這樣的人呢?
首先全棧必須是掌握多種技能,并能利用多種技能獨立完成產(chǎn)品的人 。
他們掌握著獨立完成產(chǎn)品常用的20%技能,另外的80%需要的時候有能力獲得。而另外兩個工種是掌握著專業(yè)領(lǐng)域80%的技能,甚至是90%,另外的10%通過其他渠道獲得。
全棧工程師的工作內(nèi)容和價值是融在一起的。
全棧工程師就算是各方面都是80%(確實有這樣的人存在),但是精力有限,他一個人不能長期干3-5個人的活兒。所以他們工作的大部分內(nèi)容在全局性把握和溝通,特別優(yōu)秀的全棧能做到關(guān)鍵性技術(shù)指導(dǎo)。
全局性把握
項目的開發(fā),很少是只用到一兩種技術(shù)的,特別是在移動互聯(lián)網(wǎng)大潮下。隨便一個互聯(lián)網(wǎng)項目中用到的技術(shù),就會需要用到后端開發(fā)、前端開發(fā)、界面設(shè)計、產(chǎn)品設(shè)計、數(shù)據(jù)庫、各種移動客戶端、三屏兼容、restFulAPI設(shè)計和OAuth等等,一些比較前衛(wèi)的項目,可能會用到SinglePage Application、Web Socket、HTML5/CSS3這些技術(shù),還有像第三方開發(fā)像微信公眾號微博應(yīng)用等等。
Web前端也遠(yuǎn)遠(yuǎn)不是從前的切個圖用個jQuery上個AJAX兼容各種瀏覽器那么簡單了。現(xiàn)代的Web前端,你需要用到模塊化開發(fā)、多屏兼容、MVC,各種復(fù)雜的交互與優(yōu)化,甚至你需要用到Node.js來協(xié)助前端的開發(fā)。
所以說一個現(xiàn)代化的項目,是一個非常復(fù)雜的構(gòu)成,我們需要一個人來掌控全局,他不需要是各種技術(shù)的資深專家,但他需要熟悉到各種技術(shù)。對于一個團(tuán)隊特別是互聯(lián)網(wǎng)企業(yè)來說,有一個全局性思維的人非常非常重要。
在恰當(dāng)?shù)臅r機用恰當(dāng)?shù)募夹g(shù)開發(fā)實現(xiàn)恰當(dāng)?shù)漠a(chǎn)品常常要遠(yuǎn)比具體某個功能實現(xiàn)要復(fù)雜和重要的多,而這是全棧工程師需要考慮的。
溝通成本
項目越大,溝通成本越高,做過項目管理的人都知道,項目中的人力是1+1<2的,人越多效率越低。因為溝通是需要成本的,不同技術(shù)的人各說各話,前端和后端是一定會掐架的。每個人都會為自己的利益而戰(zhàn),毫不為已的人是不存在的。
而全棧工程師的成本幾乎為零,因為各種技術(shù)都懂,胸有成竹,一不小心自己就全做了。即使是在團(tuán)隊協(xié)作中,與不同技術(shù)人員的溝通也會容易得多,你讓一個后端和一個前端去溝通,那完全是雞同鴨講,更不用說設(shè)計師與后端了。但如果有一個人懂產(chǎn)品懂設(shè)計懂前端懂后端,那溝通的結(jié)果顯然不一樣,因為他們講的,彼此都能聽得懂。
全棧工程師的機會
創(chuàng)業(yè)型公司和中小型公司的發(fā)展,尤其是在萬眾創(chuàng)業(yè)的風(fēng)潮,會促進(jìn)全棧工程師的發(fā)展,也會更加凸顯他們的價值,因為雖然單個全棧工程師的工資很高,但是遠(yuǎn)比專業(yè)性分工團(tuán)隊的成本要低得多,而且全棧工程師更能應(yīng)對多變的創(chuàng)業(yè)公司需求,降低團(tuán)隊溝通成本。
但是,很多人為了成為全棧工程師或者已經(jīng)是全棧工程師面對著巨大的困境。
1.一個工作兩年的切圖都比一個全棧工程師切圖好,一個8k的Java都比3W的全棧寫的代碼快,他們經(jīng)歷著博而不精的煎熬。
2.成為全棧很多人需要花費大量的學(xué)習(xí)時間,到最后依然是無功而返。
最后造成了一個現(xiàn)象是,你確實什么都會,問題是我要的是一個8k的切圖,而不是一個3萬什么都會一點的全棧。
造成這兩個現(xiàn)象的原因有內(nèi)因和外因兩個方面。
內(nèi)因看個人定位不清晰,在該專精的時候選擇了全棧。
不管是前端還是后臺,全棧的意思是你能夠獨立工作,不是你前端會切個圖,后端你會寫個sql就行的,而一個領(lǐng)域沒有三年是達(dá)不到上述情況的,而很多人工作三年切圖或者js就想著全棧了。
全棧不是一不小心成為的,是你的工作經(jīng)驗堆出來的,不是學(xué)出來的,全棧是經(jīng)驗不是課本,而是一種思維。
天我來談?wù)勎覍鹘y(tǒng)HTML與VUE的區(qū)別理解(不談太深的區(qū)別,查了一下網(wǎng)上那些說的都一樣,我只談很多人最關(guān)心的不一樣的,說不對請理解,對不太了解或想了解VUE的人)。
1、 什么是vue
官網(wǎng)介紹:vue是一套構(gòu)建用戶界面的漸進(jìn)式框架。它與其他重量級框架不同的是,vue采用自下而上增量開發(fā)的設(shè)計。Vue的核心庫只關(guān)注視圖層,非常容易學(xué)習(xí),非常容易與其他庫或已有項目整合。
Vue的目標(biāo)是通過盡可能簡單的API實現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖層組件。
2、什么是HTML(HTML5)
HTML5是Web中核心語言HTML的規(guī)范,用戶使用任何手段進(jìn)行網(wǎng)頁瀏覽時看到的內(nèi)容原本都是HTML格式的,在瀏覽器中通過一些技術(shù)處理將其轉(zhuǎn)換成為了可識別的信息。
總結(jié):它們相同的地方就一句話:用途和結(jié)果都是一樣的,不管是VUE還是HTML,最終都是將數(shù)據(jù)使用各種UI及方式展現(xiàn)給用戶,也就是都是視圖層頁面的。
有人會說使用HTML和VUE開發(fā)有什么區(qū)別呢?許多人覺得結(jié)果都是視圖層表達(dá),而且VUE打包發(fā)布后不還是HTML+一堆JS文件,而且還要引入導(dǎo)入編譯感覺特麻煩,感覺VUE好難,為什么要學(xué)VUE?
1、開發(fā)和部署
VUE 開發(fā)過程確實挺麻煩的,要安裝依賴,要npm一堆包(還經(jīng)常失敗)。而HTML就簡單多了,直接就拿來主意,下載下來,改改就用。
部署的話都差不多,都是在任何服務(wù)上都可以直接使用,而且都沒有什么依賴。
但是我覺得VUE的開發(fā)類似于開發(fā)一個APP,所以他的打包結(jié)果是比純HTML+JS更安全的,相當(dāng)于做過混淆,因而他發(fā)布后的體積更小。
2、數(shù)據(jù)通訊
HTML+JS 數(shù)據(jù)POST,GET 等基本訪問方式,但是如果直接在HTML中使用數(shù)據(jù)判斷,或數(shù)據(jù)循環(huán)輸出必須借助js,jquery等通過前端處理然后對id進(jìn)行賦值操作,所以一般只能借助動態(tài)語言如php,java,.net等語言環(huán)境進(jìn)行轉(zhuǎn)化,但這樣使得web對動態(tài)語言環(huán)境依賴性過強,造成后端遷移時太過于復(fù)雜,而且這樣的Web一般要求前端和后端部署在一起。
VUE則不依賴于動態(tài)語言輸出環(huán)境,只要是雙方約定了數(shù)據(jù)傳輸接口,服務(wù)器放在哪里,不管使用什么后臺語言都沒關(guān)系,因而他的靈活性更強。
3、安全性
有些產(chǎn)品有些公司對語言是有選擇的,主要是不想讓代碼暴露太多,而HTML+JS的方式往往是達(dá)不到要求的,因而現(xiàn)在許多企業(yè)還是在使用桌面軟件的形式,又或者是要你使用對方的云服務(wù),而私有云部署則要貴的很多,而且比較貴的軟件還要安裝秘鑰軟件,加密狗等方式,無非就是防止你將軟件轉(zhuǎn)移或無限使用或獲取他的核心算法(雖然js也是有混淆方法的,但很少有人會這么做,我也沒試過但是很影響效率)。
以前我在一個公司就是加班寫了一個WEB程序里邊有一個算法是分析公司產(chǎn)品結(jié)構(gòu)的(那時VUE還不盛行),正好呢又遇到一個懂點的老板(居然會用F12),結(jié)果看到核心代碼了,當(dāng)時就否定了,改用了WinForm 重寫,那個辛苦你懂的。
VUE的打包的話,其實就是根據(jù)在頁面中所使用到的組件然后根據(jù)你的邏輯關(guān)系等進(jìn)行混淆打包,然后在用戶加載時按需進(jìn)行加載解析,從某種意義上來說做WEB是一種保護(hù)。我覺得這與桌面程序及APP打包效果是一樣的(軟件和APP也是可以反編譯嘛,反編譯后的結(jié)果就是混淆),當(dāng)然不說加密混淆了。
現(xiàn)在國內(nèi)出現(xiàn)了像DCloud、APICloud(雖然這二家經(jīng)常打架,畢竟相似度很高,我不做評論,但不可否認(rèn)對一個只會寫HTML+JS的人轉(zhuǎn)寫APP是一個不錯的選擇)這些由HTML5開始的跨平臺軟件也開始支持VUE了。
最后附上VUE打包后的調(diào)試預(yù)覽圖,純HTML的就不多說了,自己F12吧。
諸多的企業(yè)尤其是創(chuàng)業(yè)型公司中,HR 在招聘時往往希望可以招到一名技術(shù)全能型人才,而這種人才又被稱之為全棧開發(fā)者。
簡單地說,全棧開發(fā)者就是可以構(gòu)建完整應(yīng)用程序的人。他們了解前端和后端技術(shù)、工具和服務(wù),并結(jié)合所有這些技能開發(fā)出可以在生產(chǎn)環(huán)境中運行的東西。
那么對于全棧開發(fā)者而言,都需要具備哪些技能?
1.JS交互設(shè)計
JS即JavaScript,就是適應(yīng)動態(tài)網(wǎng)頁制作的需要而誕生的一種新的編程語言,如今越來越廣泛地使用于Internet網(wǎng)頁制作上。JS 能夠使原先純展示的頁面增加動態(tài)效果,全棧工程師需要掌握J(rèn)avaScript基礎(chǔ)語法、進(jìn)階以及高級編程。
2.HTML5+CSS3
HTML5是開放的Web網(wǎng)絡(luò)平臺的奠基石,CSS3原理同CSS,是在網(wǎng)頁中自定義樣式表的選擇符,然后在網(wǎng)頁中大量引用這些選擇符。對一名全棧工程師來說,HTML5+CSS3的掌握是工作的基礎(chǔ),最主要需要掌握的就是HTML5相關(guān)基礎(chǔ)知識、HTML5 語法及使用技巧、HTML5 常用標(biāo)簽等相關(guān)內(nèi)容以及 CSS 語法及使用技巧等。
3.小程序與APP開發(fā)
小程序是一種依托于微信的應(yīng)用,而APP是一種技術(shù),依托于瀏覽器存在。小程序背靠微信,流量大,受眾多,一度刷爆互聯(lián)網(wǎng),而APP是隨著智能手機的發(fā)展應(yīng)運而生的,為廣大用戶帶來了很多便捷,這兩種技術(shù)目前來說相對火熱,同時也是一名合格的全棧工程師必須掌握的。
4.Node開發(fā)
Node 是一個讓 Java 運行在服務(wù)端的開發(fā)平臺,用于方便地搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。一名全棧工程師需要能夠使用 Node.js 進(jìn)行 Web 服務(wù)端開發(fā)以及使用 Node.js 操作 MongoDB 數(shù)據(jù)庫,Node是新興的一個前端框架,有很多吸引人的地方,全棧工程師還可以使用它來開發(fā)一些快速移動Web框架。
5.前端框架
前端框架主要是提高前端開發(fā)效率,降低開發(fā)難度。它其實是一套解決方案,就是按固定的規(guī)則來安排代碼結(jié)構(gòu),有了框架,前端開發(fā)能夠事半功倍,所以說全棧工程師是要會使用這些前端框架的,比如最基本的Vue框架、React框架、Angular框架等。
6. Git
Git 也稱為版本控制系統(tǒng),開發(fā)人員可以跟蹤其他人對 codebase 的更改。
了解有關(guān) Git 的信息將有助于你正確理解并獲取新代碼。除此之外,你還必須了解如何更新代碼的各個部分,如何進(jìn)行修復(fù),如何在不造成任何中斷的情況下修改代碼。當(dāng)然,如果你想在全棧開發(fā)人員中脫穎而出,你需要對 Git 有更全面的了解。
7. Web 應(yīng)用程序架構(gòu)
掌握了語言、編程和其他一些基礎(chǔ)知識后,接下來就是棘手的部分。這一部分與創(chuàng)建復(fù)雜 web 應(yīng)用程序有關(guān)。你需要知道如何正確地構(gòu)造代碼、分離文件、托管大型媒體文件、在數(shù)據(jù)庫中構(gòu)造數(shù)據(jù)以及執(zhí)行特定的計算任務(wù)等等。
獲得關(guān)于這些應(yīng)用程序體系結(jié)構(gòu)知識的最佳方法就是實際項目操作。這將幫助你識別和解決在開發(fā)復(fù)雜 web 應(yīng)用程序時可能發(fā)生的各種問題。
8. 數(shù)據(jù)結(jié)構(gòu)及基本算法
這個部分在開發(fā)領(lǐng)域中存在爭議,有些開發(fā)人員不太重視它們。但是,全棧工程師應(yīng)該了解幾乎所有開發(fā)過程和實踐的專業(yè)知識,如果你不懂?dāng)?shù)據(jù)結(jié)構(gòu)和基本算法的話,可能會讓你陷入大麻煩。所以,如果你想進(jìn)入大公司并獲得成功,你必須掌握這方面的詳細(xì)知識。
9.Web 存儲和數(shù)據(jù)庫
在開發(fā)應(yīng)用程序時,需要將數(shù)據(jù)存儲在某處,以便稍后可以訪問。因此,你需要了解 Web 存儲和數(shù)據(jù)庫,如理解相關(guān)數(shù)據(jù)的用途,學(xué)習(xí) NoSQL 數(shù)據(jù)庫,尋找優(yōu)解,連接數(shù)據(jù)庫與所選的后端語言,了解內(nèi)存數(shù)據(jù)存儲的重要性,Web 存儲,cookies,session 和緩存數(shù)據(jù)。
10. 后臺支持語言
后端確保能夠很好地處理用戶身份驗證、數(shù)據(jù)庫操作和應(yīng)用程序邏輯。沒有需要學(xué)習(xí)的特定后端語言。SQL、Java、JavaScript、Python、c#、PHP、IOS 和c++ 都是您必須了解的語言。
全棧工程師雖然學(xué)術(shù)淵博,但不意味著他們能抄捷徑,要成為一名全棧工程師,至少要使用過多種編程語言在各種領(lǐng)域的不同平臺工作多年。
如果你未來的職業(yè)規(guī)劃是一名出色的全棧工程師,一定要記住深刻挖掘自己潛力,務(wù)必打好基礎(chǔ)體系架構(gòu),把一門學(xué)科做到深入甚至精通,自然融會貫通。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。