【編者按】根據Stack Overflow 2016 Developer 調查,全棧(Full-Stack)Web開發是當前受歡迎的開發職業。難怪有很多在線和現場培訓項目幫助培訓對象成為新的全棧開發人員,甚至協助這些新手獲得高薪編程工作。以下為譯文:
在這篇文章里,我不準備討論哪一個網站或者代碼訓練營有好的開發培訓項目,但是我會提供明確的指南,說明哪些是我相信成為全棧web開發者所需要的重要技能,并且幫助那些從來沒做過編程工作的人找到工作。我會以下面這三件事 為依據。
1. 2017年培訓學生多的內容組合。
2. 我個人的經驗來自于過去在多家公司對開發者崗位求職者的面試,以及現在我公司全棧開發者崗位求職者的面試。
3. 來自于那些在Coderbyte上接受編碼訓練營培訓,并且找到編程工作的人的故事和反饋。
全棧web開發者是能夠同時承擔前端開發和后臺開發工作的人。前端一般是指應用中用戶可見或者是進行交互的部分,后臺是指應用里處理邏輯,數據庫交互,用戶鑒別,服務器配置等等。做為一個全棧開發者并不意味著你已經掌握了從事前端開發和后臺開發所需的所有技能,只是表明你能夠在這兩部分工作并且知道開發一個應用該做哪些事。
如果你在2017年成為一個全棧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依然是非常受歡迎的語言(見上面的圖)
HTTP是一種無狀態的互聯網應用層協議-它允許客戶端與不同的服務器進行通信(例如你的JavaScript代碼能夠通過HTTP協議,向運行在服務器上的后臺代碼提交AJAX請求)。
當你覺得已經掌握了HTML/CSS,JavaScript后臺開發,數據庫和HTTP/REST,就到了這個稍難的部分。在這里如果你想創建稍微復雜的web應用,你需要知道如何組織你的代碼,如何劃分你的文件,哪里存放你的大媒體文件,如何組織數據庫中的數據,哪里去執行確定的計算任務(客戶端 對 服務器端),等等。
網上可以找到很多佳實踐,但是真正學習到應用架構的好方法是你本人參與一個大型應用,這個應用包含多個有效的部分-甚至更好,在一個團隊里工作并且一起開發過有一定規模和復雜度的應用。
這就是為什么有些人有7年多的經驗,對于CSS或者JavaScript的理解還不如那些只有兩年經驗的人,但是,在這些年里假定他們參與了所有類型不同應用和網站的開發,并且已經學習了如何架構和設計讓應用有效率(還學習了其他重要的事),在開發中也可以看到重點。下面你可以讀到一些內容,有助于你學習如何有效率的架構你的web應用。
Git是一個版本控制系統,能夠協助開發者團隊合作,跟蹤開發過程中的所有更改,并將這些更改記錄在代碼庫中。了解與Git相關的重點很重要,這樣有助于你如何獲得丟失的新代碼,代碼的更新部分,進行修改,修改別人的代碼而不會破壞別人的工作。你確實應該學習Git背后的概念并且自己能玩轉它。
這個主題在開發世界里有點極端,因為在web開發中,有些開發者認為不應該將注意力放在諸如樹遍歷、排序、算法分析、矩陣操作等計算機科學主題上。然而,很多如谷歌那樣的公司,喜歡在面試中問這些類型的問題。一些人談論的的谷歌前臺工程面試。
也就是說,如Ryan McGrath提到那樣:我們的前端(FE)工程師,應該像我們所有工程師那樣,具有堅實的計算機科學背景。
盡管有一些公司在現實中要求求職者具有計算機科學學位或者同等學力,如果求職者不具備這些技術資格,卻能證明他們知道如何開發應用,并且展示其對于整個領域的理解,仍會大量的公司會雇用他們。但是,成為一個合格開發者的一部分,不寫低效率的代碼或者不使用錯誤的工具,都是對于基本算法和數據結構的理解,能夠分析均衡。所以這有一些你應該學習的內容:
學習這些所有的內容是項辛苦的工作,但是終會收獲頗豐并且全棧開發本身也很有趣!請在下面留下你的評論,并且檢出coderbyte,來進行算法練習。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。