2020Web開發學習路線圖:從前端,到全棧

本文最初發佈於 Level Up Coding,經原作者授權由 InfoQ 中文站翻譯並分享。

現在是學習編程或轉行從事軟件工程的最佳時機。業界對 Web 開發人員的需求達到了歷史最高水平,而且目前還在不斷增長。互聯網上有一些免費的教程和收費的高級教程,教授你作爲開發人員得到一份工作所需的技能,不需要計算機科學學位哦🤓。

本文詳細介紹了有效學習所需的技能以及相應的教程。這份配圖指南由 Kamran Ahmed 提供,可以在 roadmaps.sh 或 GitHub repo 上找到,Kamran 做得很棒,請大家一定要多多支持,在 repo 上點個星,並訂閱他的時事通訊。大家千萬別被這份路線圖嚇倒,它乍一看可能含有很多內容,讓我將它分解開來,使你可以一步一步地學習每一部分。

本文將在各部分給出一些學習資源的鏈接,其中有免費的,也有收費的,大家可以根據自己的需要,選擇最適合自己的方式,學到自己所需的知識和技能。

本文將分爲以下幾個部分:

  1. 必經之路,即任何路徑都需要學習的內容:每個開發人員都需要知道的編程概念。
  2. 編程入門:如果你完全是一個新手,要從這裏開始學起。
  3. 前端開發:學習如何構建用戶界面 (UI)。
  4. 後端開發:學習如何構建 API 和編寫服務器端代碼。
  5. DevOps 工程:學習如何管理基礎設施、部署和系統。
  6. JavaScript 和深入編碼:由入門到精通全面學習 JS。
  7. 軟件工程書籍:在這一部分我將推薦一些書籍,我認爲這些書籍對提高我對編程的整體理解很有幫助,並能對工作產生積極的影響。
  8. 求職建議:最後奉上一些作爲一名開發人員如何找工作和如何不斷髮展的小技巧。

每位開發者都需要學習的內容

我們將從每個開發人員都需要學習的技能開始,這些是所有路徑的必經之路,無論是前端、後端還是 DevOps。

要成爲一名高效的開發人員,你就必須要精通命令行,知道如何使用 Git 對代碼進行版本控制,並瞭解 Web 的基本原理。

命令行

命令行是一種運行代碼的方式。你必須能會瀏覽和執行所需的命令。你對命令行掌握得越好,作爲開發人員的效率就越高。

以下學習資源可供選擇:

選擇一款文本編輯器

VS Code 是 Web 開發人員的首選,這使它成爲一個很好上手的工具,我個人用的就是它。它是免費開源的,有大量可以幫你提升效率的插件。除此之外,還有許多其他不錯的選擇,如 Atom、WebStorm 或 Vim(對於硬核用戶來說)。

文本編輯器是編寫代碼的地方,終端是執行代碼的地方。作爲一名開發人員,這些地方就是你主要開展工作的地方了。所以,值得花些時間選擇合適的編輯器,設置插件,學習熱鍵。擁有正確的工作流程可以極大地提高你的工作效率。

Git 和版本控制

Git 是用於保存代碼和創建不同版本的工具,使你能夠與其他開發人員協作。GitHub 是存儲代碼和在開源軟件上進行協作的首選。

以下學習資源可供選擇:

網絡基礎知識

以下學習資源可供選擇:

編程入門

在深入探索任何一條路徑之前,你都應該具有堅實的編程基礎。對於新開發人員來說,我強烈建議學習 JavaScript 作爲你的第一語言。JS 可以用於前端和後端開發人員,這意味着你可以成爲一個全棧開發人員,同時能夠專注於掌握一種語言。JavaScript 的好處有:

  1. JavaScript 是一種相對容易學習的語言;
  2. 構建 Web 應用程序需要用到 JavaScript,因爲它是一款在瀏覽器中運行的編程語言;
  3. JavaScript 既可用於前端,也可用於後端,它使你能夠使用單獨的一門語言編寫全棧應用程序;
  4. 有大量的工作需要 JavaScript 開發人員來做。

如果很清楚自己要麼只想處理數據,要麼只處理後端,那麼學習 Python 是另一個適合初學者的選擇。

有許多又免費質量又高的網站可以幫你入門編程,freeCodeCamp 和 Codecademy 是很好的選擇,可以幫你打下基礎。

freecodecamp.org,通過免費在線課程學習代碼、編程項目,以及面試準備……

codecademy.com,學習編程開發所需的基礎技術技能。

一旦你掌握了基礎知識,下一步可以考慮免費的 JavaScript30 課程或 BeginnerJavaScript 高級課程。Web Bos 通過構建真實的項目來教授 JavaScript 的核心概念。你應該儘可能快地動手去做真正的項目。項目是學習工作技能的最佳途徑,也能讓你在開始準備面試時爲自己建立一個作品集。

如果你想迅速邁入 JavaScript 的大門,以下很實惠的優質課程可作爲 JS 初學者入門和快速進階的選擇:

如果你正在找一門從初學者到專業人士的課程,那麼 Pluralsight 是一個不錯的選擇。如需訂閱,你必須首先註冊一個賬號 (免費試用),它們幾乎涵蓋了所有的優質內容。

學習前端開發

我們是通過前端開發爲網站構建用戶界面的。若要學習前端開發,你必須有堅實的 JavaScript 基礎,並理解 HTML/CSS 是如何工作的。

流行的客戶端庫(React、Angular 和 Vue)都是用 JavaScript 編寫的。認真瞭解 Vanilla JavaScript 對於提升水平掌握構建複雜應用程序所需的技能是至關重要的。一旦你有了堅實的 JavaScript 基礎,就應該學習 HTML 和 CSS 了。儘管 UI 是用 JS 編寫的,但它在本質上仍然是生成 HTML 並由 CSS 定義樣式。

以下學習資源可供選擇:

2020 年 Web 開發訓練營中有完備的網絡開發課程,從 HTML 和 CSS 開始入門,學習 JavaScript 以及它如何與 DOM 交互,最終構建一個全棧 web 應用程序。

https://bit.ly/2D8kams

Web 開發人員訓練營中有你需要學習 Web 開發的 HTML、CSS、JS、Node 等課程。

https://bit.ly/2QZdHxG

如果需要了解 JavaScript 方面的更多內容,請參閱“編程入門”部分給出的資源。

HTML 和 CSS

大家通常會把 HTML 和 CSS 放在一起學習。HTML 是給出結構化頁面骨架的語言,而 CSS 則是用來定義樣式的語言。

以下學習資源可供選擇:

爲初學者準備的 HTML 和 CSS 課程,這是爲初學者準備的循序漸進的課程,如果想要學習如何創建網頁,但又害怕學不會 HTML 和 CSS,不知道從哪裏開始,可以考慮學習一下這個課程。

https://bit.ly/2CnsSv8

使用 HTML5 和 CSS3 構建快速響應的真實網站,這是一門非常實用、易學的課程。

https://bit.ly/2SYFgJu

CSS:完全指南(CSS 進階),如果是第一次學習 CSS,或者想要複習一下 CSS 然後深入學習,可以考慮這個課程。

https://bit.ly/2FBcQRA

UI 類庫(React、Vue、Angular)

現代 UI 開發越來越趨向於變爲一個組件模型,具有 3 個由專業前端工程師使用的主要類庫——React、Vue 和 Angular。你最好能有所側重,能夠深入瞭解這些類庫中的其中一個即可,而不是試圖把這 3 個都學全。在之後的工作中,如果公司使用了你沒有學過的框架,你能夠藉機再去學一些不同的東西。React 目前是最流行的,但是 Vue 和 Angular 都在被迅速地採用。

React

以下學習資源可供選擇:

React 官方介紹,在裏面有一個 React 的入門教程,本教程假設你不具備任何 React 知識,通過構建一個小遊戲來幫你入門。

https://reactjs.org/tutorial/tutorial.html

React 完全指南,這是一門完備的 React 16 的課程 (包括鉤子、React 路由、Redux),你可以從零開發深入學習 React ,包括 Reactjs、鉤子、Redux、React 路由、動畫、Next.js 等等。

https://bit.ly/2W66AY3

另外還有 Modern React with Redux、React for Beginners、Advanced React + GraphQL 等課程可供選擇。

Vue

以下學習資源可供選擇:

Vue 官方介紹

https://vuejs.org/v2/guide/

Vue JS 2 - 完備指南 (包括 Vue 路由器和 Vuex)

https://bit.ly/2R2bOQX

Vue JS 2 終極開發課程,通過使用 Vue 構建 3 個專業的、真實的 web 應用程序來學習和掌握 VueJS

https://bit.ly/2DmWkU1

Vue JS 基礎與 Vuex 和 Vue 路由,11 個小時掌握 Vue、Vuex 和 Vue 路由

https://bit.ly/2Ho3mfj

Angular

以下學習資源可供選擇:

Angular 8 完備指南,掌握 Angular (Angular 2+,包括 Angular 8),並使用 Angular.js 來構建出色的、快速響應的 Web 應用程序。

https://bit.ly/2Hn9mF6

完備的 Angular 課程:初學者進階,全面的 Angular 4 (Angular 2+) 課程。用 Angular、Firebase 和 Bootstrap 構建一個真正的電子商務應用。

https://bit.ly/2RFP0M2

學習後端開發

後端,是你與數據庫通信、處理業務邏輯並將必要的數據發送到前端的地方。

你的後端 / 服務器端可以用任何語言編寫。我的建議是從 Node/JavaScript 開始,因爲它相對容易學習,同時也非常強大。此外,這樣你也可以更容易地在前後端之間進行轉換,因爲你的前後端使用的是相同的語言。我還將詳細介紹其他可以用於後端開發的語言的學習——Python、Go、Ruby on Rails。

使用數據庫是後端工程師的核心工作,我還將概述學習 SQL、NoSQL 和 GraphQL 的教程。雖然 NoSQL 已經變得越來越流行,但到目前爲止,SQL 仍然是應用最多的數據庫類型,是學習的基礎。

Node.js

Node 是我們在瀏覽器外執行 JavaScript 的方式,可以用來在後端 / 服務器端構建 API。

以下學習資源可供選擇:

Node.js 開發教程大全 (第三版)

https://bit.ly/2RSOAkL

NodeJS 完全指南 (包括 MVC, REST API, GraphQL),精通 Node JS,學會用 Node.js、GraphQL API 構建 REST API,添加認證,使用 MongoDB、SQL,以及更多內容。

https://bit.ly/2U46COi

學習 Node,學習使用 Node.js、Express、MongoDB 構建應用程序的高級培訓課程。

https://learnnode.com/friend/GITCONNECTED

數據庫

數據庫用於永久保存應用程序的數據。通常,後端會在 API 調用期間對數據庫進行查詢。SQL 和 NoSQL 是兩種常見的數據庫類型。

PostgreSQL / MySQL

這是兩種最常用的 SQL 實現,你可能會看到在大多數公司中都使用了它們。

以下學習資源可供選擇:

GraphQL

GraphQL 本身不是數據庫,而是數據庫之上的查詢語言。許多人認爲它將徹底改變應用程序的開發,徹底改變我們構建 API 的方式。它正在迅速被科技巨頭和頂尖初創公司採用和大力利用。

以下學習資源可供選擇:

你可以試試 Hasura。它讓你能夠使用 Web 界面生成 GraphQL,並自動爲你構建 Postgres 數據庫。

MongoDB

Mongo 是與 Node 一起使用的最流行的 NoSQL 數據庫。它將數據存儲在一些很容易映射爲 JSON 和 JavaScript 對象鍵 / 值對的文檔中。

以下學習資源可供選擇:

Python

Python 對於初學者來說很容易掌握,而技術巨頭和初創公司也廣泛地將它用於後端、數據科學和腳本。

以下學習資源可供選擇:

Python 完全訓練營:Python 3 從菜鳥到大蝦,像專業人士一樣學習 Python ! 從基礎開始,最終創建自己的應用程序和遊戲!

https://bit.ly/2AWhgPW

Python 和 Django 全棧 Web 開發人員訓練營,歡迎來到 Python 和 Django 全棧 Web 開發人員訓練營!在這門課程中,把你需要知道的一切都涵蓋進來了。

https://bit.ly/2U0NNeQ

Go (Golang)

Go 相對較新,但迅速得到了廣泛地採用。它是一種靜態類型的語言,但對開發人員也非常友好。這使得它成爲構建服務的理想選擇。

以下學習資源可供選擇:

Ruby on Rails

Ruby on Rails 曾是多年來首選的創業語言。它的易用性和約定驅動的語言使得快速構建產品變得很容易。

以下學習資源可供選擇:

學習 DevOps 工程

DevOps 管理公司的基礎設施。它們設立了部署 Web 應用程序和管理站點流量的流程。DevOps 工程師的重點是讓其他團隊儘可能快地將代碼發佈到生產環境,並確保服務器始終處於正常運行狀態,同時儘可能快地獲得最終用戶的認可。

DevOps 的領域非常廣泛,它們所做的選擇影響着每個工程團隊。作爲 DevOps 工程師需要學習的一些基本主題包括:

  • Linux:現在 67% 以上的服務器上都在使用 Linux ,很可能 DevOps 工程師會要用到的系統。深入理解它非常重要。
  • 安全性: 確保你的整個雲是安全的和加密的。還要設置 API,使所有內容都通過 HTTPS 提供,並不受常見攻擊的影響。
  • 命令行 / 終端:我們在第一部分中介紹了命令行,而它對於 DevOps 工程師來說則更爲重要。你必須徹底理解它是如何工作的,以及主要的 Linux 命令,並能夠 SSH 到遠程服務器上進行工作。你還將爲整個公司編寫腳本和自動化程序。
  • 自動化測試:建立一個自動化測試系統,從而使所有發佈生產的代碼都經過徹底的檢查,從而減少引入 bug 或迴歸的可能性。
  • 持續集成和持續交付 (CI/CD):設置一條用於部署的流水線,以便代碼自動合入到生產環境中,同時減少個體開發人員的手動接觸點。自動化測試在 CI/CD 中扮演着重要的角色。
  • 容器: 容器是基礎設施的核心部分,大多數初創公司和科技巨頭都以某種形式使用 Docker 和或 Kubernetes。容器確保你的代碼總是在一個乾淨的、可複製的環境中執行。
  • 雲提供商:瞭解如何使用 AWS、GCP 或 Azure 等流行提供商管理雲中的服務器。
  • 日誌管理:必須有適當的日誌記錄。它使你可以診斷 bug,查找應用程序中任一問題的根本原因。

JavaScript 及深入編碼

一方面,我建議你儘快開始動手做真正的項目。而另一方面,你在某種程度上會希望深入研究 JavaScript 並瞭解它是如何工作的。此外,瞭解數據結構、算法和其他常規的計算機科學知識也很重要。

以下學習資源可供選擇:

你不知道的 JavaScript (YDKJS) ,這本 JavaScript 書非常非常棒。如果你完全掌握了書中的內容,你就會了解 JS 整個核心語言。你可以 在 GitHub 上免費閱讀,也可以在 亞馬遜上購買實體書或 Kindle 電子書。

https://amzn.to/2FwY6TO

TypeScript——這對初學者來說不是必需的 (除非你使用 Angular),但是 TypeScript 的應用正在快速增長,並且已經在佔領 JS 的市場。許多人認爲它是 JavaScript 的未來。

https://bit.ly/2UnQ0RZ

JavaScript 中的數據結構——從頭開始在 JavaScript 中構建最常見的數據結構。該系列視頻是一個很好的擴展,你可以藉此梳理構建你已經學到的知識體系,來建立你已經獲得的知識,同時它也是一個很不錯的面試資源。

https://bit.ly/2FNMZa9

Eloquent JavaScript——另一本很受 JavaScript 工程師歡迎的書。它涵蓋的主題比 YDKJS 更加廣泛,包括瀏覽器和 Node。可以 在線免費閱讀,也可以 在亞馬遜上購買實體書或 Kindle電子書。

https://amzn.to/2FsFJj7

算法介紹——雖然這本書對於初學者不那麼友好,但它很深入。到了你真的覺得是時候要深入理解算法了,就該讀讀它了。

https://amzn.to/2M8yfTx

算法——這門課是用 Java 教的,但並不影響理解學習。你將全面瞭解計算機科學中最重要的算法。該課程由普林斯頓大學在 Coursera 平臺上教授。

https://bit.ly/2R1fbr5

軟件工程書籍

以下 5 本書將使你成爲更好的程序員,或者,在你的職業生涯的某些時刻(比如面試)提供必要的幫助。如果有更多的需要,可以看看完整的編程書籍推薦列表

  • 《代碼整潔之道》,Robert C Martin 著
  • 《程序員修煉之道》,Andrew Hunt 和 David Thomas 合著
  • 《高效的工程師》,Edmund Lau 著
  • 《程序員面試金典》,Gayle Laakmann McDowell 著
  • 《計算機編程藝術》,Donald Knuth 著

如果你正在學習網絡開發,你也很有可能對創業感興趣。以下是一些創業和成功哲學相關的頂級書籍。

  • 《精益創業》,Eric Ries
  • 《從 0 到 1》,Peter Thiel 著
  • 《Hooked: How to Build Habit-Forming Products》,Nir Eyal 著
  • 《牽引:創業如何快速吸引客戶》,Gabriel Weinberg 和 Justin Mares 合著
  • 《創業維艱》,Ben Horowitz 著

求職建議和總結

通過學習這些教程,你將逐漸成爲一名專業的 web 開發人員。一定要儘快開始構建實際的項目,並開始去求職找工作。若要向公司展示你入職後能夠爲公司做出什麼貢獻,你做過的項目和已部署的 Web 應用程序是最好的證明。

找第一份工作通常是一個數字遊戲,你發出去的簡歷越多,得到一份邀約的機會就越大。不過這可能需要幾個月的時間,所以要做好走漫漫長征路的準備。但是,相信你最終會得到一份工作的,而且在得到第一份工作後,找到下一份工作會變得更容易。

求職小技巧:

  • 貪多嚼不爛,把主要精力放在有限幾個技能上:如 JavaScript、React、Node。不要試圖學習所有的東西——React、Vue、Angular、jQuery、Backbone 等等。儘量去學習對於你來說要求最低的語言或類庫。要深入,不要太過寬泛。
  • 構建一個作品集網站,並使用 API 來做數據支撐。展示出你具備構建應用程序的能力,這一點對招聘經理來說是至關重要的。
  • 儘量發出更多的求職信,只要你的技能符合崗位要求。別放棄!如果你不斷努力,最終一定會找到你的崗位。這是一條漫長而艱辛的道路,但如果你對這個領域充滿熱情,那麼是值得爲之付出努力的。
  • 爲面試做準備。使用《程序員面試金典》和一些面試網站做做練習,以輕鬆地回答面試題。
  • 讀讀《你不懂的 JavaScript》系列。這將確保你對這門語言有更全面更深入的瞭解。
  • 實際動手構建項目——項目是學習的最佳方法,是展示你理解如何構建現實世界項目的最佳方式。

作者介紹

Trey Huffine,從事 JavaScript 教育,gitconnected.com 的創始人,熱衷於幫助開發者發展他們的職業生涯。

英文原文

The 2020 Web Developer Roadmap

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章