2017 全棧開發(fā)人員修煉指南

編譯自:A Guide to Becoming a Full-Stack Developer in 2017

譯者:開源中國(guó) - 邊城, 還是君影文華, 亞林瓜子, 我是菜鳥我驕傲, 無(wú)若, rever4433, 君影文華, 圣潔之子

據(jù) Stack Overflow 2016 Developer Survey 調(diào)研影所,全棧網(wǎng)絡(luò)開發(fā)是目前最受歡迎的開發(fā)職業(yè)蹦肴。難怪現(xiàn)在有幾十個(gè)在線的或者個(gè)人版程序來(lái)幫助人們成長(zhǎng)為全棧開發(fā)員,甚至可以協(xié)助新加入的開發(fā)人員找到更高薪的編程工作猴娩。

一些流行的在線程序可以從這些網(wǎng)站找到: Lynda阴幌、Udacity、Coursera卷中、Thinkful矛双、General Assembly, 還有更多可從這里獲取。除這些在線程序以外蟆豫,另有個(gè)人版的代碼訓(xùn)練基地可以教人們成為網(wǎng)絡(luò)開發(fā)員所必需的技能议忽。

本篇文章中,我不會(huì)談?wù)撃姆N網(wǎng)站或者編程訓(xùn)練營(yíng)有最好的網(wǎng)絡(luò)開發(fā)程序十减。而是給從未學(xué)習(xí)過編程的你栈幸,提供一個(gè)明確的指引,包括如何成為全棧網(wǎng)絡(luò)開發(fā)人員最必不可少的技能以及如何找到工作帮辟。我將從以下三點(diǎn)講起:

1速址、2017年被大量用來(lái)教學(xué)給學(xué)生的程序

2、來(lái)自過去幾年我在公司中面試的開發(fā)職位以及面試潛在的全棧網(wǎng)絡(luò)開發(fā)職位的候選人員所積累下來(lái)的經(jīng)驗(yàn)织阅。

3、來(lái)自Coderbyte中已經(jīng)開始接受編程訓(xùn)練和之后得到編程工作的人的故事和反饋震捣。

終極指南

全棧 Web 開發(fā)人員是能夠工作在應(yīng)用程序的前端和后端的開發(fā)人員荔棉。前端通常是指應(yīng)用程序中用戶將看到或交互的部分,后端是應(yīng)用程序中處理邏輯蒿赢、數(shù)據(jù)庫(kù)交互润樱、用戶認(rèn)證、服務(wù)器配置的部分羡棵。全棧開發(fā)并不意味著你已經(jīng)掌握了前端和后端工作所需的一切壹若,而是意味著你可以在雙端工作并理解構(gòu)建應(yīng)用程序時(shí)發(fā)生的情況。

如果你想在 2017 年成為一個(gè)全棧 Web 開發(fā)人員,并找到你的第一份工作店展,下面是一個(gè)參考指南养篓,列出了你需要學(xué)習(xí)的東西。

1. HTML/CSS

幾乎所有程序赂蕴,無(wú)論是在線的還是離線的柳弄,都在說(shuō)明要成為 Web 開發(fā)者需要從 HTML 和 CSS 開始,因?yàn)樗鼈兪?Web 的基石概说。簡(jiǎn)單地說(shuō)碧注,HTML 讓你給網(wǎng)站添加內(nèi)容,而 CSS 則為這些內(nèi)容添加樣式糖赔。下面的主題都是關(guān)于 HTML/CSS 的萍丐,在面試和工作中都經(jīng)常遇到:

1、語(yǔ)義化的?HTML放典。

2逝变、解釋CSS 盒模型

3刻撒、CSS 預(yù)處理器的優(yōu)點(diǎn)(你不需要深入理解骨田,但應(yīng)該知道這是什么以及它們對(duì)開發(fā)起到的輔助作用)。

4声怔、使用CSS 媒體查詢針對(duì)不同的設(shè)備編寫響應(yīng)式的 CSS态贤。

5、Bootstrap(一個(gè)輔助頁(yè)面設(shè)計(jì)和布局的框架醋火,大量在線程序或?qū)W校都關(guān)注 Bootstrap 教學(xué)悠汽。實(shí)際上,深入理解基本的 CSS 比理解特定的 Bootstrap 特性和方法更為重要)芥驳。

2. JavaScript

JavaScript 語(yǔ)言一年比一年流行柿冲,新的庫(kù)、框架和工具層出不窮兆旬。Stack Overflow 2016 年的開發(fā)者調(diào)查指出假抄,JavaScript 在全棧、前端和后端開發(fā)中都是最流行的語(yǔ)言丽猬。它是瀏覽器唯一支持的原生語(yǔ)言宿饱,同時(shí)也能作為服務(wù)器端語(yǔ)言(下面會(huì)看到 Node.js)。下面是一些作為全棧開發(fā)者所需要了解的主題:

1脚祟、理解如何使用?DOM谬以。了解JSON并知道如何操作它。

2由桌、重要的語(yǔ)言特性为黎,比如函數(shù)式成分邮丰、原型繼承、閉包铭乾、事件委托剪廉、作用域、高階函數(shù)等片橡。

3妈经、異步控制流Promise回調(diào)捧书。

4吹泡、了解如何正確地通過模塊化組織你的代碼,像webpack经瓷、browserify或者gulp這樣的構(gòu)建工具對(duì)此大有裨益爆哑。

5、至少會(huì)使用一個(gè)流行框架(很多程序?qū)⒅匾旁诮棠闶褂孟?a target="_blank" rel="nofollow">React和AngularJS這樣的庫(kù)或框架舆吮,但實(shí)際上更重要的事情是深入理解 JavaScript 語(yǔ)言而不是特定的框架特性揭朝。只要你精通 JavaScript,選用一個(gè)框架將不費(fèi)吹灰之力)色冀。

6潭袱、雖然有些人可能認(rèn)為你應(yīng)該減少使用jQuery,因?yàn)樗呌谒劳龇嫣瘛5?jQuery 代碼仍然存在于大量應(yīng)用中屯换,徹底理解它會(huì)對(duì)你很有幫助。

7与学、了解一些關(guān)于測(cè)試框架的知識(shí)彤悔,以及明白它們的重要性(有人甚至?xí)J(rèn)為這個(gè)話題可有可無(wú))。

8索守、學(xué)習(xí)重要的ES6 新特性(可選)晕窑。

3. 后端語(yǔ)言

一旦你認(rèn)為已掌握好 HTML/CSS 和 JavaScript 技能,你會(huì)向一門后端編程語(yǔ)言進(jìn)軍卵佛,以便處理類似數(shù)據(jù)庫(kù)操作杨赤、用戶認(rèn)證以及應(yīng)用邏輯的任務(wù)。所有在線練習(xí)平臺(tái)和代碼訓(xùn)練營(yíng)通常集中于一門特定的后端語(yǔ)言截汪,而實(shí)際上你選擇哪一門也并不重要,只要你理解你正在做的事情并學(xué)到了你所選語(yǔ)言的本質(zhì)挫鸽。如果你問學(xué)哪一門后端語(yǔ)言最好鸥跟,你會(huì)得到各種各樣的無(wú)數(shù)的回復(fù)盔沫,所以下圖我給大家列出了一些受歡迎的組合。

一個(gè)重要的提示:不管你決定學(xué)習(xí)哪一門枫匾,請(qǐng)堅(jiān)持下去,并盡可能深入學(xué)習(xí)-所有下圖列出的語(yǔ)言都有相應(yīng)的工作機(jī)會(huì)谴忧。

1、Node.js:這是一個(gè)很好的選擇角虫,因?yàn)?Node.js 本身就是 JavaScript 環(huán)境沾谓,這意味著你不需要學(xué)習(xí)新的語(yǔ)言戳鹅。這也是很多在線平臺(tái)和訓(xùn)練營(yíng)為什么選擇教學(xué) Node.js 的原因枫虏。這里你最有可能學(xué)習(xí)的也是最受歡迎的能幫助你開發(fā)網(wǎng)絡(luò)應(yīng)用的框架就是Express

2腾它、Ruby:用 Ruby 開發(fā)比較受歡迎的開發(fā)框架有 Rails 和 Sinatra 死讹。很多教學(xué)平臺(tái)把 Ruby 作為首選后端語(yǔ)言。

3逛腿、Python:Python 受歡迎的開發(fā)框架有 Django 和 Flask 仅颇。

4、Java:現(xiàn)在 Java 語(yǔ)言很少被選中作為全棧網(wǎng)絡(luò)開發(fā)的教學(xué)語(yǔ)言搁廓,但是一些公司現(xiàn)在還是使用 Java 作為后端語(yǔ)言耕皮,所以現(xiàn)在也還是一門有相當(dāng)需求量的語(yǔ)言(見上圖)叠国。

5豹芯、PHP:PHP 現(xiàn)在也很少被這些平臺(tái)教學(xué)選中台诗,但就像 Java 一樣拉队,它也還是有一定的需求量,而且也是當(dāng)今網(wǎng)絡(luò)發(fā)展的基石秩彤。

4. 數(shù)據(jù)庫(kù) & Web 存儲(chǔ)

編寫 Web 應(yīng)用的過程中漫雷,有時(shí)候需要保存數(shù)據(jù)鳍咱,以便稍后再進(jìn)行訪問流炕。那么最好掌握下面這些有關(guān)數(shù)據(jù)庫(kù)和存儲(chǔ)的主題。

1剑辫、理解關(guān)系型數(shù)據(jù)渠欺,比如SQL挠将,帶來(lái)的好處。

2乳丰、學(xué)習(xí)NoSQL數(shù)據(jù)庫(kù)内贮,比如MongoDB

3什燕、知道在某些情況下屎即,哪一種更合適事富。

4埃撵、知道如何使用你的后端語(yǔ)言連接數(shù)據(jù)庫(kù)(比如 Node.js + MongoDB)。

5饺谬、知道像Redismemcached這類內(nèi)存數(shù)據(jù)存儲(chǔ)的優(yōu)勢(shì)募寨。

6、Web 存儲(chǔ)可在瀏覽順中存儲(chǔ)會(huì)話仪缸、Cookie 以及緩存數(shù)據(jù)恰画。

7瓷马、伸縮型數(shù)據(jù)庫(kù)、ACIDORM(都是可選的)片林。

5. HTTP & REST

HTTP 是應(yīng)用于互聯(lián)網(wǎng)的一項(xiàng)無(wú)狀態(tài)應(yīng)用協(xié)議 —— 它規(guī)范了客戶端連接到服務(wù)器的行為(比如 JavaScript 代碼通過 AJAX 請(qǐng)求后端服務(wù)器中運(yùn)行的代碼就是采用的 HTTP)费封。下面列出了你應(yīng)該了解的重要主題:

1弓摘、什么是REST以及它為什么對(duì) HTTP 協(xié)議和 Web 應(yīng)用來(lái)說(shuō)很重要痕届。

2、設(shè)計(jì)RESTful API 的最佳實(shí)踐势决。POST/GET請(qǐng)求果复。

3渤昌、學(xué)會(huì)使用Chrome DevTools是極其有用的走搁。

4私植、SSL 證書是什么车酣。

5湖员、HTTP/2 & SPDY(可選)。

6窄坦、WebSockets凳寺、Web Workers肠缨,以及Service Workers(均可選)。

6. Web 應(yīng)用架構(gòu)

當(dāng)你認(rèn)為已經(jīng)掌握了 HTML/CSS父泳、JavaScript惠窄、后端編程漾橙、數(shù)據(jù)庫(kù) 和 HTTP/REST 霜运,你就到了難對(duì)付的部分了。這時(shí)藕各,如果你想創(chuàng)建一個(gè)稍微復(fù)雜的 web 應(yīng)用焦除,你需要了解如何組織代碼,如何分割文件竭讳,往哪里保存大量媒體文件浙踢,如何結(jié)構(gòu)化數(shù)據(jù)庫(kù)里的數(shù)據(jù),何處執(zhí)行特定的計(jì)算任務(wù)(客戶端還是服務(wù)器端)胰舆,以及更多其他問題。

網(wǎng)上你可以讀到一些最佳范例荸百,但是最好的學(xué)習(xí)應(yīng)用架構(gòu)的方法是自己實(shí)踐一個(gè)包含多個(gè)分散部件的大型應(yīng)用 —— 甚至更好的方法是:和團(tuán)隊(duì)合作開發(fā)一個(gè)相對(duì)大型/復(fù)雜的應(yīng)用够话。

這也是為什么,比如有個(gè)七年以上工作經(jīng)驗(yàn)的人畜份,也許他未必比工作兩年的另一個(gè)人更懂 CSS 或 JavaScript 爆雹,但或許是多年各種不同應(yīng)用和網(wǎng)站的工作經(jīng)驗(yàn)愕鼓,使他學(xué)習(xí)到如何最有效的架構(gòu)和設(shè)計(jì)應(yīng)用(包括學(xué)習(xí)其他重要事項(xiàng))菇晃,并且在開發(fā)過程中能看清“全局”。以下書籍或文章可以幫助你學(xué)習(xí)如何有效架構(gòu)你得網(wǎng)絡(luò)應(yīng)用:

1驻子、學(xué)習(xí)通用的平臺(tái)即服務(wù)估灿,比如HerokuAWS馅袁。Heroku 允許你做很少的配置或服務(wù)器維護(hù),即可輕松上傳代碼芒粹,并執(zhí)行應(yīng)用化漆。AWS 提供許多產(chǎn)品和服務(wù)幫助解決存儲(chǔ)、視頻處理疙赠、負(fù)載均衡以及其他更多其他的問題朦拖。

2璧帝、應(yīng)用和流行瀏覽器的性能優(yōu)化

3锣夹、關(guān)于網(wǎng)絡(luò)應(yīng)用架構(gòu)應(yīng)該考慮哪些要素的一些觀點(diǎn)银萍。

4恤左、微軟文檔:設(shè)計(jì)網(wǎng)絡(luò)應(yīng)用飞袋。

5、模型-視圖-控制器編程模式(MVC)物咳。

6蹄皱、當(dāng)然巷折,最重要的還是應(yīng)該嘗試與別人合作項(xiàng)目,閱讀 Github 上受歡迎的代碼油吭,以及盡可能向資深開發(fā)員學(xué)習(xí)婉宰。

7. Git

Git是一套版本控制系統(tǒng)心包,它允許開發(fā)團(tuán)隊(duì)的開發(fā)人員跟蹤代碼庫(kù)的所有更改。了解與 Git 相關(guān)的一些事項(xiàng)非常重要痕惋,它能讓你了解如何正確獲取錯(cuò)過的最新代碼值戳,更新部分代碼炉爆,修復(fù)并修改其他人的代碼叶洞,而不會(huì)發(fā)生任何意外禀崖。 你一定要學(xué)習(xí) Git 背后的概念波附,并多做嘗試。

1封寞、這里是一個(gè)參考列表仅财,它列出了你將會(huì)使用到的 git 命令盏求。

2碎罚、這里是一本手冊(cè)對(duì) Git 和 GitHub 的初學(xué)者很有用。

8. 基本算法和數(shù)據(jù)結(jié)構(gòu)

這個(gè)話題在開發(fā)世界中有點(diǎn)兩極分化拯勉,因?yàn)橛行╅_發(fā)人員認(rèn)為在 Web 開發(fā)中不應(yīng)該如此重視計(jì)算機(jī)科學(xué)的主題諸如樹的遍歷宫峦、排序、算法分析山卦、矩陣操縱等账蓉。然而逾一,像谷歌這樣的公司在面試中問這些類型的問題是出了名的遵堵。有人說(shuō)谷歌的前端工程師面試:

也就是說(shuō),正如Ryan McGrath所提到的锡足,我們的前端(FE)工程師要有一個(gè)堅(jiān)實(shí)的計(jì)算機(jī)科學(xué)(CS)背景舶得,就像我們所有的工程師一樣爽蝴。

雖然有些公司確實(shí)要求申請(qǐng)人擁有計(jì)算機(jī)科學(xué)學(xué)位或同等學(xué)歷蝎亚,也有很多公司愿意雇傭沒有這個(gè)技術(shù)資格的人,如果他們能夠證明他們懂得如何開發(fā)應(yīng)用程序和展示出對(duì)整個(gè)域的理解躺彬。但是宪拥,作為一個(gè)合格的開發(fā)人員个唧,而不是編寫低效的代碼或使用錯(cuò)誤的工具徙歼,部分要求是理解一些基本算法和數(shù)據(jù)結(jié)構(gòu),能夠分析權(quán)衡桨螺。所以你一定要學(xué)會(huì)一些東西:

1灭翔、研究哈希表并試著在更深的層次上理解它們。這個(gè)數(shù)據(jù)結(jié)構(gòu)構(gòu)成了 JavaScript 中的對(duì)象(Python 中的字典哄褒,Ruby 中的哈希)的基礎(chǔ)呐赡。

2骏融、理解樹和圖作為數(shù)據(jù)結(jié)構(gòu)有何益處档玻。

3误趴、理解算法復(fù)雜度分析的基礎(chǔ)知識(shí),所以你不會(huì)做事碧囊,像創(chuàng)建實(shí)際上沒必要?jiǎng)?chuàng)建的3層嵌套的循環(huán)!

4泊窘、懂得何時(shí)使用對(duì)象或是數(shù)組像寒,并懂得取舍诺祸。

5筷笨、了解為何在處理大量數(shù)據(jù)時(shí)緩存是如此重要龟劲。也要了解內(nèi)存存儲(chǔ)和磁盤存儲(chǔ)各自的利與弊昌跌。

6蚕愤、了解隊(duì)列和棧的區(qū)別饺蚊。

學(xué)習(xí)所有這些是會(huì)很辛苦污呼,但最終還是值得的曙求,并且全棧開發(fā)充滿樂趣!請(qǐng)?jiān)谙旅媪粝履愕囊庖娋苍。⑶以L問Coderbyte進(jìn)行算法練習(xí)苹享。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末得问,一起剝皮案震驚了整個(gè)濱河市宫纬,隨后出現(xiàn)的幾起案子膏萧,更是在濱河造成了極大的恐慌榛泛,老刑警劉巖曹锨,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沛简,死亡現(xiàn)場(chǎng)離奇詭異硅急,居然都是意外死亡营袜,警方通過查閱死者的電腦和手機(jī)荚板,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門跪另,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)煤搜,“玉大人擦盾,你說(shuō)我怎么就攤上這事迹卢。” “怎么了誊垢?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谋作。 經(jīng)常有香客問我瓷们,道長(zhǎng)业栅,這世上最難降的妖魔是什么秒咐? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任谬晕,我火速辦了婚禮,結(jié)果婚禮上携取,老公的妹妹穿的比我還像新娘攒钳。我一直安慰自己,他們只是感情好雷滋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布不撑。 她就那樣靜靜地躺著,像睡著了一般焕檬。 火紅的嫁衣襯著肌膚如雪姆坚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天实愚,我揣著相機(jī)與錄音兼呵,去河邊找鬼。 笑死腊敲,一個(gè)胖子當(dāng)著我的面吹牛击喂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碰辅,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼懂昂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了没宾?” 一聲冷哼從身側(cè)響起凌彬,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎循衰,沒想到半個(gè)月后饿序,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡羹蚣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年原探,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顽素。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咽弦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胁出,到底是詐尸還是另有隱情型型,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布全蝶,位于F島的核電站闹蒜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏抑淫。R本人自食惡果不足惜绷落,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望始苇。 院中可真熱鬧砌烁,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至管呵,卻和暖如春梳毙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捐下。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工顿天, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蔑担。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓牌废,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親啤握。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸟缕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,867評(píng)論 25 707
  • 前言 這里筑夢(mèng)師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同...
    筑夢(mèng)師Winston閱讀 25,964評(píng)論 80 514
  • 最怕習(xí)慣,更怕習(xí)慣之后的不習(xí)慣排抬。 前段時(shí)間一直在準(zhǔn)備著各種考試懂从,仿佛生活已經(jīng)被考試包圍。說(shuō)到考試蹲蒲,又總會(huì)有那么一點(diǎn)...
    周詩(shī)汶閱讀 249評(píng)論 0 0
  • 我是彥彥届搁,這是我的每天一篇原創(chuàng)文章之第253篇缘薛。 親愛的你們: 見字如面!愿你已經(jīng)感受到那道書店夢(mèng)想之光~ 很開心...
    彥值圈閱讀 315評(píng)論 2 6
  • 時(shí)光荏苒,一轉(zhuǎn)眼就過完了畢業(yè)后的第一個(gè)七年表锻,同時(shí)也開始了入行的第七年恕齐。 從16年來(lái)京,就一直考慮要不要寫一本跟自己...
    始熊君閱讀 278評(píng)論 0 2