據(jù) Stack Overflow 2016 Developer Survey 調(diào)研,全棧網(wǎng)絡(luò)開發(fā)是目前最受歡迎的開發(fā)職業(yè)。難怪現(xiàn)在有幾十個在線的或者個人版程序來幫助人們成長為全棧開發(fā)員,甚至可以協(xié)助新加入的開發(fā)人員找到更高薪的編程工作。
一些流行的在線程序可以從這些網(wǎng)站找到: Lynda、Udacity、Coursera、Thinkful、General Assembly, 還有更多可從這里獲取。除這些在線程序以外,另有個人版的代碼訓(xùn)練基地可以教人們成為網(wǎng)絡(luò)開發(fā)員所必需的技能。
本文不會談?wù)撃姆N網(wǎng)站或者編程訓(xùn)練營有最好的網(wǎng)絡(luò)開發(fā)程序。而是給從未學(xué)習(xí)過編程的你,提供一個明確的指引,包括如何成為全棧網(wǎng)絡(luò)開發(fā)人員最必不可少的技能以及如何找到工作。我將從以下三點(diǎn)講起:
2017年被大量用來教學(xué)給學(xué)生的程序。
來自過去幾年我在公司中面試的開發(fā)職位以及面試潛在的全棧網(wǎng)絡(luò)開發(fā)職位的候選人員所積累下來的經(jīng)驗(yàn)。
來自 Coderbyte 中已經(jīng)開始接受編程訓(xùn)練和之后得到編程工作的人的故事和反饋。
終極指南
全棧 Web 開發(fā)人員是能夠工作在應(yīng)用程序的前端和后端的開發(fā)人員。前端通常是指應(yīng)用程序中用戶將看到或交互的部分,后端是應(yīng)用程序中處理邏輯、數(shù)據(jù)庫交互、用戶認(rèn)證、服務(wù)器配置的部分。全棧開發(fā)并不意味著你已經(jīng)掌握了前端和后端工作所需的一切,而是意味著你可以在雙端工作并理解構(gòu)建應(yīng)用程序時發(fā)生的情況。
如果你想在 2017 年成為一個全棧 Web 開發(fā)人員,并找到你的第一份工作,下面是一個參考指南,列出了你需要學(xué)習(xí)的東西。
1. HTML/CSS
幾乎所有程序,無論是在線的還是離線的,都在說明要成為 Web 開發(fā)者需要從 HTML 和 CSS 開始,因?yàn)樗鼈兪?Web 的基石。簡單地說,HTML 讓你給網(wǎng)站添加內(nèi)容,而 CSS 則為這些內(nèi)容添加樣式。下面的主題都是關(guān)于 HTML/CSS 的,在面試和工作中都經(jīng)常遇到:
語義化的 HTML。
解釋 CSS 盒模型。
CSS 預(yù)處理器的優(yōu)點(diǎn)(你不需要深入理解,但應(yīng)該知道這是什么以及它們對開發(fā)起到的輔助作用)。
使用 CSS 媒體查詢針對不同的設(shè)備編寫響應(yīng)式的 CSS。
Bootstrap (一個輔助頁面設(shè)計和布局的框架,大量在線程序或?qū)W校都關(guān)注 Bootstrap 教學(xué)。實(shí)際上,深入理解基本的 CSS 比理解特定的 Bootstrap 特性和方法更為重要)。
2. JavaScript
JavaScript 語言一年比一年流行,新的庫、框架和工具層出不窮。Stack Overflow 2016 年的開發(fā)者調(diào)查指出,JavaScript 在全棧、前端和后端開發(fā)中都是最流行的語言。它是瀏覽器唯一支持的原生語言,同時也能作為服務(wù)器端語言(下面會看到 Node.js)。下面是一些作為全棧開發(fā)者所需要了解的主題:
理解如何使用 DOM。了解 JSON 并知道如何操作它。
重要的語言特性,比如函數(shù)式成分、原型繼承、閉包、事件委托、作用域、高階函數(shù)等。
異步控制流、Promise 和 回調(diào)。
了解如何正確地通過模塊化組織你的代碼,像 webpack、browserify 或者 gulp 這樣的構(gòu)建工具對此大有裨益。
至少會使用一個流行框架(很多程序?qū)⒅匾旁诮棠闶褂孟?React 和 AngularJS 這樣的庫或框架,但實(shí)際上更重要的事情是深入理解 JavaScript 語言而不是特定的框架特性。只要你精通 JavaScript,選用一個框架將不費(fèi)吹灰之力)。
雖然有些人可能認(rèn)為你應(yīng)該減少使用 jQuery,因?yàn)樗呌谒劳?。?jQuery 代碼仍然存在于大量應(yīng)用中,徹底理解它會對你很有幫助。
了解一些關(guān)于測試框架的知識,以及明白它們的重要性(有人甚至?xí)J(rèn)為這個話題可有可無)。
學(xué)習(xí)重要的 ES6 新特性(可選)。
3. 后端語言
一旦你認(rèn)為已掌握好 HTML/CSS 和 JavaScript 技能,你會向一門后端編程語言進(jìn)軍,以便處理類似數(shù)據(jù)庫操作、用戶認(rèn)證以及應(yīng)用邏輯的任務(wù)。所有在線練習(xí)平臺和代碼訓(xùn)練營通常集中于一門特定的后端語言,而實(shí)際上你選擇哪一門也并不重要,只要你理解你正在做的事情并學(xué)到了你所選語言的本質(zhì)。如果你問學(xué)哪一門后端語言最好,你會得到各種各樣的無數(shù)的回復(fù),所以下圖我給大家列出了一些受歡迎的組合。
一個重要的提示:不管你決定學(xué)習(xí)哪一門,請堅持下去,并盡可能深入學(xué)習(xí)-所有下圖列出的語言都有相應(yīng)的工作機(jī)會。
Node.js:這是一個很好的選擇,因?yàn)?Node.js 本身就是 JavaScript 環(huán)境,這意味著你不需要學(xué)習(xí)新的語言。這也是很多在線平臺和訓(xùn)練營為什么選擇教學(xué) Node.js 的原因。這里你最有可能學(xué)習(xí)的也是最受歡迎的能幫助你開發(fā)網(wǎng)絡(luò)應(yīng)用的框架就是 Express 。
Ruby:用 Ruby 開發(fā)比較受歡迎的開發(fā)框架有 Rails 和 Sinatra 。很多教學(xué)平臺把 Ruby 作為首選后端語言。
Python:Python 受歡迎的開發(fā)框架有 Django 和 Flask 。
Java:現(xiàn)在 Java 語言很少被選中作為全棧網(wǎng)絡(luò)開發(fā)的教學(xué)語言,但是一些公司現(xiàn)在還是使用 Java 作為后端語言,所以現(xiàn)在也還是一門有相當(dāng)需求量的語言(見上圖)。
PHP:PHP 現(xiàn)在也很少被這些平臺教學(xué)選中,但就像 Java 一樣,它也還是有一定的需求量,而且也是當(dāng)今網(wǎng)絡(luò)發(fā)展的基石。
4. 數(shù)據(jù)庫 & Web 存儲
編寫 Web 應(yīng)用的過程中,有時候需要保存數(shù)據(jù),以便稍后再進(jìn)行訪問。那么最好掌握下面這些有關(guān)數(shù)據(jù)庫和存儲的主題。
理解關(guān)系型數(shù)據(jù),比如 SQL,帶來的好處。
學(xué)習(xí) NoSQL 數(shù)據(jù)庫,比如 MongoDB。
知道在某些情況下,哪一種更合適。
知道如何使用你的后端語言連接數(shù)據(jù)庫(比如 Node.js + MongoDB)。
知道像 Redis 或 memcached 這類內(nèi)存數(shù)據(jù)存儲的優(yōu)勢。
Web 存儲可在瀏覽順中存儲會話、Cookie 以及緩存數(shù)據(jù)。
伸縮型數(shù)據(jù)庫、ACID 和 ORM (都是可選的)。
5. HTTP & REST
HTTP 是應(yīng)用于互聯(lián)網(wǎng)的一項無狀態(tài)應(yīng)用協(xié)議 —— 它規(guī)范了客戶端連接到服務(wù)器的行為(比如 JavaScript 代碼通過 AJAX 請求后端服務(wù)器中運(yùn)行的代碼就是采用的 HTTP)。下面列出了你應(yīng)該了解的重要主題:
什么是 REST 以及它為什么對 HTTP 協(xié)議和 Web 應(yīng)用來說很重要。
設(shè)計 RESTful API 的最佳實(shí)踐。POST/GET 請求。
學(xué)會使用 Chrome DevTools 是極其有用的。
SSL 證書是什么。
HTTP/2 & SPDY (可選)。
WebSockets、Web Workers,以及 Service Workers (均可選)。
6. Web 應(yīng)用架構(gòu)
7. Git
Git是一套版本控制系統(tǒng),它允許開發(fā)團(tuán)隊的開發(fā)人員跟蹤代碼庫的所有更改。了解與 Git 相關(guān)的一些事項非常重要,它能讓你了解如何正確獲取錯過的最新代碼,更新部分代碼,修復(fù)并修改其他人的代碼,而不會發(fā)生任何意外。 你一定要學(xué)習(xí) Git 背后的概念,并多做嘗試。
這里是一個參考列表,它列出了你將會使用到的 git 命令。
這里是一本手冊 對 Git 和 GitHub 的初學(xué)者很有用。
8. 基本算法和數(shù)據(jù)結(jié)構(gòu)
來源:開源中國
聯(lián)系客服