【編者按】根據Stack Overflow 2016 Developer 調查,全棧(Full-Stack)Web開發是當前最受歡迎的開發職業。難怪有不少在線和現場培訓項目幫助培訓對象成爲新的全棧開發人員,甚至協助這些新手得到高薪編程工做。如下爲譯文:前端
在這篇文章裏,我不許備討論哪個網站或者代碼訓練營有最好的開發培訓項目,可是我會提供明確的指南,說明哪些是我相信成爲全棧web開發者所須要的最重要技能,而且幫助那些歷來沒作過編程工做的人找到工做。我會如下面這三件事 爲依據。java
2017年培訓學生最多的內容組合。
我我的的經驗來自於過去在多家公司對開發者崗位求職者的面試,以及如今我公司全棧開發者崗位求職者的面試。
來自於那些在Coderbyte上接受編碼訓練營培訓,而且找到編程工做的人的故事和反饋。
明確的指南webpack
全棧web開發者是可以同時承擔前端開發和後臺開發工做的人。前端通常是指應用中用戶可見或者是進行交互的部分,後臺是指應用裏處理邏輯,數據庫交互,用戶鑑別,服務器配置等等。作爲一個全棧開發者並不意味着你已經掌握了從事前端開發和後臺開發所需的全部技能,只是代表你可以在這兩部分工做而且知道開發一個應用該作哪些事。git
若是你在2017年成爲一個全棧Web開發者而且謀求到你的第一份職業,下面列出的就是你應該學到的參考指南。程序員
語義HTML
可以解釋CSS盒模型
CSS預處理器的用處(你沒必要明白如何深度使用它,你只須要了解它們的用途以及如何幫助開發)
面向不一樣裝置的CSS媒體查詢以及寫響應CSS
Boot
trap(是一個框架,用於設計和頁面上內容的佈局,不少在線培訓或者學校把重心放在教授Bootstrap上,實際上深刻理解CSS的基礎知識比特定的Bootstrap特徵及方法更重要)github
Stack Overflow 2016 Developer 調查(insights.stackoverflow.com/survey/2016…web
理解如何使用DOM,瞭解JSON是什麼以及如何使用它。
重要的語言特色,例如功能組成,原型繼承,閉包,事件委託,範圍,高階函數。
異步控制流,承諾(promises),和回調。
學習如何正確構造你的代碼以及將其模塊化,能夠藉助webpack,browseify,或者相似gulp的構造工具來理解。
知道如何使用至少一種經常使用框架(不少培訓重點培訓一種庫或者如React或者AngularJS這樣的框架,可是在現實中,深入理解JavaScript語言更重要,而沒必要將精力過多的放在特定框架的特色上。一旦你充分熟悉了JavaScript,掌握一種框架也不會有問題。)
儘管有人會說jQuery代碼用的少並且會逐漸淘汰,可是在大多數應用中仍然在使用它,牢固地掌握它仍是有幫助的。
一些測試框架的知識以及爲何這些知識重要(一些人甚至聲稱這個主題不是必須的)
學習一些重要的新的ES6特色(可選的)面試
一旦你感受已經掌握了HTML/CSS和JavaScript,你會想繼續學習後臺語言,用於處理數據庫操做,用戶鑑別和應用邏輯。全部的在線培訓和代碼訓練營一般會專一於某個特定的後臺語言,實際上你學哪種(後臺語言)並不重要,只要你明白其如何工做而且你瞭解所選擇語言的細小差異。若是你問別人哪種後臺語言最值得學習,你會收到大量不一樣的答覆,因此在下面我已列出一些經常使用的組合。一個重要的提示:不管你準備學哪種,只需堅持學下去,而且儘量深刻-下列所列的語言都有大量的工做機會。算法
Node.js:這是一個很棒的選擇,由於Node.js自己就是JavaScript環境,這意味着你沒必要學習新的語言。這也是爲何不少在線或者現場培訓選擇教授Node.js的緣由。最流行的也是你最可能學到輔助你進行web開發的框架是Express
Ruby:Ruby中的經常使用框架有Rails 和 Sinatra。許多培訓
都是以Ruby做爲第一個教學的後臺語言。
Python:在Python中經常使用的開發框架是 Django 和 Flask。
Java:在全棧式web開發培訓中,以Java爲學習內容的並很少,可是一些公司確實是使用Java做爲他們的後臺語言,Java依然是很是受歡迎的語言(見上面的圖)
PHP:雖然如今不多教授PHP了,可是正如Javas,PHP依然很受歡迎,而且PHP是web的基石。數據庫
理解關係型數據的用處,如SQL。
學習NoSQL數據庫,如MongoDB。
理解在特定場合哪種更合適。
瞭解如何使用你選擇的後臺語言(如Node.js + MongoDB)鏈接一個數據庫。
理解諸如Redis和memcached等內存數據存儲的長處。
web存儲保存sessions, cookies和瀏覽器中緩存的數據。
可伸縮數據庫,ACID和ORM(都是可選的)。
5.HTTP和REST
HTTP是一種無狀態的互聯網應用層協議-它容許客戶端與不一樣的服務器進行通訊(例如你的JavaScript代碼可以經過HTTP協議,向運行在服務器上的後臺代碼提交AJAX請求)。
REST是什麼,爲何它對於HTTP協議和web應用很重要。
設計REST風格API的最佳實踐。POST/GET請求。
學習如何使用Chrome DevTools會很是有用。
SSL證書是什麼。
HTTP/2 & SPDY (optional).HTTP2和SPDY(可選的)。
WebSockets, Web Workers, Service WorkersService Workers(都是可選的)
當你以爲已經掌握了HTML/CSS,JavaScript後臺開發,數據庫和HTTP/REST,就到了這個稍難的部分。在這裏若是你想建立稍微複雜的web應用,你須要知道如何組織你的代碼,如何劃分你的文件,哪裏存放你的大媒體文件,如何組織數據庫中的數據,哪裏去執行肯定的計算任務(客戶端對服務器端),等等。
網上能夠找到不少最佳實踐,可是做者丨Daniel Borowski真正學習到應用架構的最好方法是你本人蔘與一個大型應用,這個應用包含多個有效的部分-甚至更好,在一個團隊裏工做而且一塊兒開發過有必定規模和複雜度的應用。
這就是爲何有些人有7年多的經驗,對於CSS或者JavaScript的理解還不如那些只有兩年經驗的人,可是,在這些年裏假定他們參與了全部類型不一樣應用和網站的開發,而且已經學習瞭如何架構和設計讓應用最有效率(還學習了其餘重要的事),在開發中也能夠看到重點。下面你能夠讀到一些內容,有助於你學習如何有效率的架構你的web應用。
學習普通的平臺即服務,如Heroku和 AWS。Heroku能使你輕鬆上傳你的代碼,以很是少的配置或者服務器維護就可讓應用啓動運行,AWS提供大量的產品和服務有助於存儲、視頻處理、負載均衡等等。
爲應用和現代瀏覽器進行性能優化。
一些觀點關於一個web應用架構應該包括哪些
微軟設計的web應用。
MVC。
最爲重要的是,你努力應該與他人在項目中分工協做,多學習GitHub上流行項目的代碼庫,而且儘量多向高水平開發者請教。
Git是一個版本控制系統,可以協助開發者團隊合做,跟蹤開發過程當中的全部更改,並將這些更改記錄在代碼庫中。瞭解與Git相關的重點很重要,這樣有助於你如何得到丟失的最新代碼,代碼的更新部分,進行修改,修改別人的代碼而不會破壞別人的工做。你確實應該學習Git背後的概念而且本身能玩轉它。
這裏有極可能用到的git命令的參考列表(git-scm.com/docs)。
這裏有適合初學者的使用Git 和 GitHub的教學課程 (product.hubspot.com/blog/git-an…
這個主題在開發世界裏有點極端,由於在web開發中,有些開發者認爲不該該將注意力放在諸如樹遍歷、排序、算法分析、矩陣操做等計算機科學主題上。然而,不少如谷歌那樣的公司,喜歡在面試中問這些類型的問題。一些人談論的的谷歌前臺工程面試。
也就是說,如Ryan McGrath提到那樣:咱們的前端(FE)工程師,應該像咱們全部工程師那樣,具備堅實的計算機科學背景。
儘管有一些公司在現實中要求求職者具備計算機科學學位或者同等學力,若是求職者不具有這些技術資格,卻能證實他們知道如何開發應用,而且展現其對於整個領域的理解,仍會大量的公司會僱用他們。可是,成爲一個合格開發者的一部分,不寫低效率的代碼或者不使用錯誤的工具,都是對於基本算法和數據結構的理解,可以分析均衡。因此這有一些你應該學習的內容:
學習各類哈希表並嘗試深層次理解它們。這個數據結構構成JavaScript對象的基礎(在Python中是字典,Ruby中是哈希數)
理解樹和圖做爲數據結構帶來的益處。
理解Big-O分析的基礎,以便於你不會編寫實際上並不須要的三層嵌套循環。
知道什麼時候使用對象仍是數組,而且理解均衡。
學習在處理大規模數據緩存的重要性。也要學習內存數據庫與磁盤存儲的各自優缺點。
學習隊列和堆棧之間的差別。
想要朝這方面發展或者真心有興趣的。能夠找我要一些基礎的學習視頻,Q號碼:3300863615,這個是免費的,但願同窗找我要的時候不要有理所應當的態度,畢竟都是個人心血,但願你是真的有一顆想要學好java的心,我也會盡所能的去幫助你成爲一名優秀的程序員。
加我Q有如下幾個要求,不達標的勿擾:一、大學學習的是Java相關專業,畢業後面試受挫,找不到對口工做能夠二、在公司待久了,如今過得很安逸,但跳槽時面試碰壁。須要在短期內進修、跳槽拿高薪的三、參加過線下培訓後,知識點掌握不夠深入,就業困難,想繼續深造四、已經在Java相關部門上班的在職人員,對自身職業規劃不清晰,混日子的五、有必定的C語言基礎,接觸過java開發,想轉行的小號勿擾做者丨Daniel Borowski