更新時(shí)間:2017-08-16 來(lái)源:黑馬程序員全棧開(kāi)發(fā)學(xué)院 瀏覽量:
原文:A Guide to Becoming a Full-Stack Developer in 2017
作者:Daniel Borowski
根據(jù)Stack Overflow 2016 Developer 調(diào)查,全棧(Full-Stack)Web開(kāi)發(fā)是當(dāng)前最受歡迎的開(kāi)發(fā)職業(yè)。難怪有很多在線和現(xiàn)場(chǎng)培訓(xùn)項(xiàng)目幫助培訓(xùn)對(duì)象成為新的全棧開(kāi)發(fā)人員,甚至協(xié)助這些新手獲得高薪編程工作。以下為譯文:
在這篇文章里,我不準(zhǔn)備討論哪一個(gè)網(wǎng)站或者代碼訓(xùn)練營(yíng)有最好的開(kāi)發(fā)培訓(xùn)項(xiàng)目,但是我會(huì)提供明確的指南,說(shuō)明哪些是我相信成為全棧web開(kāi)發(fā)者所需要的最重要技能,并且?guī)椭切膩?lái)沒(méi)做過(guò)編程工作的人找到工作。我會(huì)以下面這三件事 為依據(jù)。
1. 2017年培訓(xùn)學(xué)生最多的內(nèi)容組合。
2. 我個(gè)人的經(jīng)驗(yàn)來(lái)自于過(guò)去在多家公司對(duì)開(kāi)發(fā)者崗位求職者的面試,以及現(xiàn)在我公司全棧開(kāi)發(fā)者崗位求職者的面試。
3. 來(lái)自于那些在Coderbyte上接受編碼訓(xùn)練營(yíng)培訓(xùn),并且找到編程工作的人的故事和反饋。
明確的指南
全棧web開(kāi)發(fā)者是能夠同時(shí)承擔(dān)前端開(kāi)發(fā)和后臺(tái)開(kāi)發(fā)工作的人。前端一般是指應(yīng)用中用戶(hù)可見(jiàn)或者是進(jìn)行交互的部分,后臺(tái)是指應(yīng)用里處理邏輯,數(shù)據(jù)庫(kù)交互,用戶(hù)鑒別,服務(wù)器配置等等。做為一個(gè)全棧開(kāi)發(fā)者并不意味著你已經(jīng)掌握了從事前端開(kāi)發(fā)和后臺(tái)開(kāi)發(fā)所需的所有技能,只是表明你能夠在這兩部分工作并且知道開(kāi)發(fā)一個(gè)應(yīng)用該做哪些事。
如果你在2017年成為一個(gè)全棧Web開(kāi)發(fā)者并且謀求到你的第一份職業(yè),下面列出的就是你應(yīng)該學(xué)到的參考指南。
1. HTML/CSS
2.JavaScript
理解如何使用DOM,了解JSON是什么以及如何使用它。
重要的語(yǔ)言特點(diǎn),例如功能組成,原型繼承,閉包,事件委托,范圍,高階函數(shù)。
異步控制流,承諾(promises),和回調(diào)。
學(xué)習(xí)如何正確構(gòu)造你的代碼以及將其模塊化,可以借助webpack,browseify,或者類(lèi)似gulp的構(gòu)造工具來(lái)理解。
知道如何使用至少一種常用框架(很多培訓(xùn)重點(diǎn)培訓(xùn)一種庫(kù)或者如React或者AngularJS這樣的框架,但是在現(xiàn)實(shí)中,深刻理解JavaScript語(yǔ)言更重要,而不必將精力過(guò)多的放在特定框架的特點(diǎn)上。一旦你充分熟悉了JavaScript,掌握一種框架也不會(huì)有問(wèn)題。)
盡管有人會(huì)說(shuō)jQuery代碼用的少而且會(huì)逐漸淘汰,但是在大多數(shù)應(yīng)用中仍然在使用它,牢固地掌握它還是有幫助的。
一些測(cè)試框架的知識(shí)以及為什么這些知識(shí)重要(一些人甚至聲稱(chēng)這個(gè)主題不是必須的)
學(xué)習(xí)一些重要的新的ES6特點(diǎn)(可選的)
3.后臺(tái)語(yǔ)言
一旦你感覺(jué)已經(jīng)掌握了HTML/CSS和JavaScript,你會(huì)想繼續(xù)學(xué)習(xí)后臺(tái)語(yǔ)言,用于處理數(shù)據(jù)庫(kù)操作,用戶(hù)鑒別和應(yīng)用邏輯。所有的在線培訓(xùn)和代碼訓(xùn)練營(yíng)通常會(huì)專(zhuān)注于某個(gè)特定的后臺(tái)語(yǔ)言,實(shí)際上你學(xué)哪一種(后臺(tái)語(yǔ)言)并不重要,只要你明白其如何工作并且你了解所選擇語(yǔ)言的細(xì)小差別。如果你問(wèn)別人哪一種后臺(tái)語(yǔ)言最值得學(xué)習(xí),你會(huì)收到大量不同的答復(fù),所以在下面我已列出一些常用的組合。一個(gè)重要的提示:無(wú)論你準(zhǔn)備學(xué)哪一種,只需堅(jiān)持學(xué)下去,并且盡可能深入-下列所列的語(yǔ)言都有大量的工作機(jī)會(huì)。
Node.js:這是一個(gè)很棒的選擇,因?yàn)镹ode.js本身就是JavaScript環(huán)境,這意味著你不必學(xué)習(xí)新的語(yǔ)言。這也是為什么很多在線或者現(xiàn)場(chǎng)培訓(xùn)選擇教授Node.js的原因。最流行的也是你最可能學(xué)到輔助你進(jìn)行web開(kāi)發(fā)的框架是Express
Ruby:Ruby中的常用框架有Rails 和 Sinatra。許多培訓(xùn)
都是以Ruby作為第一個(gè)教學(xué)的后臺(tái)語(yǔ)言。
Python: 在Python中常用的開(kāi)發(fā)框架是 Django 和 Flask。
Java: 在全棧式web開(kāi)發(fā)培訓(xùn)中,以Java為學(xué)習(xí)內(nèi)容的并不多,但是一些公司確實(shí)是使用Java作為他們的后臺(tái)語(yǔ)言,Java依然是非常受歡迎的語(yǔ)言(見(jiàn)上面的圖)
PHP:雖然現(xiàn)在很少教授PHP 了,但是正如Javas ,PHP依然很受歡迎,并且PHP是web的基石。
4.數(shù)據(jù)庫(kù)與數(shù)據(jù)存儲(chǔ)
5.HTTP和REST
HTTP是一種無(wú)狀態(tài)的互聯(lián)網(wǎng)應(yīng)用層協(xié)議-它允許客戶(hù)端與不同的服務(wù)器進(jìn)行通信(例如你的JavaScript代碼能夠通過(guò)HTTP協(xié)議,向運(yùn)行在服務(wù)器上的后臺(tái)代碼提交AJAX請(qǐng)求)。
REST是什么,為什么它對(duì)于HTTP協(xié)議和web應(yīng)用很重要。設(shè)計(jì)REST風(fēng)格API的最佳實(shí)踐。POST/GET請(qǐng)求。學(xué)習(xí)如何使用Chrome DevTools會(huì)非常有用。SSL證書(shū)是什么。HTTP/2 & SPDY (optional).HTTP2和SPDY(可選的)。WebSockets, Web Workers, Service WorkersService Workers(都是可選的)6.Web應(yīng)用架構(gòu)
當(dāng)你覺(jué)得已經(jīng)掌握了HTML/CSS,JavaScript后臺(tái)開(kāi)發(fā),數(shù)據(jù)庫(kù)和HTTP/REST,就到了這個(gè)稍難的部分。在這里如果你想創(chuàng)建稍微復(fù)雜的web應(yīng)用,你需要知道如何組織你的代碼,如何劃分你的文件,哪里存放你的大媒體文件,如何組織數(shù)據(jù)庫(kù)中的數(shù)據(jù),哪里去執(zhí)行確定的計(jì)算任務(wù)(客戶(hù)端 對(duì) 服務(wù)器端),等等。
網(wǎng)上可以找到很多最佳實(shí)踐,但是真正學(xué)習(xí)到應(yīng)用架構(gòu)的最好方法是你本人參與一個(gè)大型應(yīng)用,這個(gè)應(yīng)用包含多個(gè)有效的部分-甚至更好,在一個(gè)團(tuán)隊(duì)里工作并且一起開(kāi)發(fā)過(guò)有一定規(guī)模和復(fù)雜度的應(yīng)用。
這就是為什么有些人有7年多的經(jīng)驗(yàn),對(duì)于CSS或者JavaScript的理解還不如那些只有兩年經(jīng)驗(yàn)的人,但是,在這些年里假定他們參與了所有類(lèi)型不同應(yīng)用和網(wǎng)站的開(kāi)發(fā),并且已經(jīng)學(xué)習(xí)了如何架構(gòu)和設(shè)計(jì)讓?xiě)?yīng)用最有效率(還學(xué)習(xí)了其他重要的事),在開(kāi)發(fā)中也可以看到重點(diǎn)。下面你可以讀到一些內(nèi)容,有助于你學(xué)習(xí)如何有效率的架構(gòu)你的web應(yīng)用。
7.Git
Git是一個(gè)版本控制系統(tǒng),能夠協(xié)助開(kāi)發(fā)者團(tuán)隊(duì)合作,跟蹤開(kāi)發(fā)過(guò)程中的所有更改,并將這些更改記錄在代碼庫(kù)中。了解與Git相關(guān)的重點(diǎn)很重要,這樣有助于你如何獲得丟失的最新代碼,代碼的更新部分,進(jìn)行修改,修改別人的代碼而不會(huì)破壞別人的工作。你確實(shí)應(yīng)該學(xué)習(xí)Git背后的概念并且自己能玩轉(zhuǎn)它。
這里有很可能用到的git命令的參考列表這里有適合初學(xué)者的使用Git 和 GitHub的教學(xué)課程。
8.基本算法和數(shù)據(jù)結(jié)構(gòu)
這個(gè)主題在開(kāi)發(fā)世界里有點(diǎn)極端,因?yàn)樵趙eb開(kāi)發(fā)中,有些開(kāi)發(fā)者認(rèn)為不應(yīng)該將注意力放在諸如樹(shù)遍歷、排序、算法分析、矩陣操作等計(jì)算機(jī)科學(xué)主題上。然而,很多如谷歌那樣的公司,喜歡在面試中問(wèn)這些類(lèi)型的問(wèn)題。一些人談?wù)摰牡墓雀枨芭_(tái)工程面試。
也就是說(shuō),如Ryan McGrath提到那樣:我們的前端(FE)工程師,應(yīng)該像我們所有工程師那樣,具有堅(jiān)實(shí)的計(jì)算機(jī)科學(xué)背景。
盡管有一些公司在現(xiàn)實(shí)中要求求職者具有計(jì)算機(jī)科學(xué)學(xué)位或者同等學(xué)力,如果求職者不具備這些技術(shù)資格,卻能證明他們知道如何開(kāi)發(fā)應(yīng)用,并且展示其對(duì)于整個(gè)領(lǐng)域的理解,仍會(huì)大量的公司會(huì)雇用他們。但是,成為一個(gè)合格開(kāi)發(fā)者的一部分,不寫(xiě)低效率的代碼或者不使用錯(cuò)誤的工具,都是對(duì)于基本算法和數(shù)據(jù)結(jié)構(gòu)的理解,能夠分析均衡。所以這有一些你應(yīng)該學(xué)習(xí)的內(nèi)容:
學(xué)習(xí)各種哈希表并嘗試深層次理解它們。這個(gè)數(shù)據(jù)結(jié)構(gòu)構(gòu)成JavaScript對(duì)象的基礎(chǔ)(在Python中是字典,Ruby中是哈希數(shù))理解樹(shù)和圖作為數(shù)據(jù)結(jié)構(gòu)帶來(lái)的益處。理解Big-O分析的基礎(chǔ),以便于你不會(huì)編寫(xiě)實(shí)際上并不需要的三層嵌套循環(huán)。知道何時(shí)使用對(duì)象還是數(shù)組,并且理解均衡。學(xué)習(xí)在處理大規(guī)模數(shù)據(jù)緩存的重要性。也要學(xué)習(xí)內(nèi)存數(shù)據(jù)庫(kù)與磁盤(pán)存儲(chǔ)的各自?xún)?yōu)缺點(diǎn)。學(xué)習(xí)隊(duì)列和堆棧之間的差異。學(xué)習(xí)這些所有的內(nèi)容是項(xiàng)辛苦的工作,但是最終會(huì)收獲頗豐并且全棧開(kāi)發(fā)本身也很有趣!
全棧開(kāi)發(fā)培訓(xùn)之js基本類(lèi)型與引用類(lèi)型的區(qū)別
2017-04-14全棧開(kāi)發(fā)培訓(xùn)之this,self,parent三個(gè)關(guān)鍵字用法
2017-04-14全棧開(kāi)發(fā)培訓(xùn)之值得深思的面試問(wèn)題
2017-04-14全棧開(kāi)發(fā)培訓(xùn)之有關(guān)常量的所有知識(shí)!
2017-04-14全棧開(kāi)發(fā)培訓(xùn)之分頁(yè)原理+分頁(yè)代碼+分頁(yè)類(lèi)制作
2017-04-14全棧開(kāi)發(fā)培訓(xùn)之常見(jiàn)錯(cuò)誤提示
2017-04-14