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