30k的大佬告訴你怎麼入門程式設計行業?

語言: CN / TW / HK

作者:Trey Huffine 譯者:冬雨策劃 | 本文最初發佈於 Level Up Coding,經原作者授權由 InfoQ 中文站翻譯並分享。

目前Web 開發人員的需求達到了歷史最高水平,而且目前還在不斷增長。網際網路上有一些免費教程和收費的高階教程,本文將學習路線圖分解開,詳細介紹了有效學習各部分所需的技能以及相應的教程,大家可以根據自己的需要,選擇最適合自己的方式,學到自己所需的知識和技能。

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

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

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

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

  1. 必經之路,即任何路徑都需要學習的內容:每個開發人員都需要知道的程式設計概念。

  2. 程式設計入門:如果你完全是一個新手,要從這裡開始學起。

  3. 前端開發:學習如何構建使用者介面 (UI)。

  4. 後端開發:學習如何構建 API 和編寫伺服器端程式碼。

  5. DevOps 工程:學習如何管理基礎設施、部署和系統。

  6. JavaScript 和深入編碼:由入門到精通全面學習 JS。

  7. 軟體工程書籍:在這一部分我將推薦一些書籍,我認為這些書籍對提高我對程式設計的整體理解很有幫助,並能對工作產生積極的影響。

  8. 檢視完整書目:https://amzn.to/2SdZtxI

  9. 求職建議:最後奉上一些作為一名開發人員如何找工作和如何不斷髮展的小技巧。

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

我們將從每個開發人員都需要學習的技能開始,這些是所有路徑的必經之路,無論是前端、後端還是 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 本書將使你成為更好的程式設計師,或者,在你的職業生涯的某些時刻(比如面試)提供必要的幫助。如果有更多的需要,可以看看完整的程式設計書籍推薦列表:

https://www.amazon.com/ideas/amzn1.account.AHSFMOVW4P7NMOJ5UWMOKZ7BSOEA/2S0LJ6D2LK797/ref=as_li_ss_tl?ie=UTF8&linkCode=sl2&tag=treyhuffine-20&linkId=d73e8fd0b44c7ba47fdac76dbda9f84c&language=en_US

  • 《程式碼整潔之道》,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》系列。這將確保你對這門語言有更全面更深入的瞭解。

  • 實際動手構建專案——專案是學習的最佳方法,是展示你理解如何構建現實世界專案的最佳方式。

補充

如何學習java ,分享兩個萬能學習的資料庫:

1、書籍:

codeGoogler/ProgramBooks

2:影片教程:

程式設計師必讀Java書籍SpringBoot、Spring、Mybatis、Redis、RabbitMQ、SpringCloud、高併發(持續更新)

刷完 200 道題盡到頭條後,我飄了!

覺得不錯的小夥伴記得轉發關注哦,後續會持續更新精選技術文章!

最後,照舊安利一波我們的公眾號:「終端研發部」,目前每天都會推薦一篇優質的技術相關的文章,主要分享java相關的技術與面試技巧,我們的目標是:知道是什麼,為什麼,打好基礎,做好每一點!這個主創技術公眾號超級值得大家關注。

分享到: