2018最新後端開發人員的路線圖

簡評:以前,後端開發路線圖僅僅是一個技術推薦,且沒有明確的方向指明應該遵循的順序,這份從新制做的指南將會給你一個更好的方向。

如今的 Web 開發與幾年前徹底不一樣了,有不少不一樣的東西能夠輕易地把人拒之門外,這也是咱們決定製做這個按部就班指南的緣由之一,並讓任何人能夠清楚地瞭解他們在 web 開發中扮演的角色。前端

能夠在下面的圖片中找到詳細的路線圖,而我也將在下面的描述中解釋每個步驟。java

在開始以前,雖然咱們沒有在下面的路線圖中列出 HTML / CSS 的知識,但建議讀者至少要了解一些基本的 HTML / CSS 知識。web

image

Step 1 —— 學習一門語言(Learn a Language)

語言有不少選擇,我已經將它們分紅幾類,以便更容易作出決定。對於剛開始進入後端開發的初學者,我建議你選擇任何腳本語言,由於它們有不少功能,可讓你快速起步。若是你有一些前端知識,你可能會發現 Node.js 更容易(還有一個很大的就業市場)。數據庫

若是你已是後端開發並瞭解一些腳本語言,我建議不要選擇其餘腳本語言,而是從「函數式(Functional)」或「多範式(Multiparadigm)」中選擇。例如,若是你已經在使用 PHP 或Node.js,請不要使用 Python 或 Ruby,而應該嘗試使用 Erlang 或 Golang。它必定會幫助你延伸思惟,並將你的思想帶到新的視野。json

Step 2 —— 練習你學到的東西(Practice what you have Learnt)

沒有比實踐更好的學習方式了。一旦你選擇了語言,而且對這些概念有了基本的瞭解,就可使用它們,盡你所能製做儘量多的小應用。下面是一些讓你開始的 Idea:後端

  • 在 bash 中實現一些你本身使用的命令,好比嘗試實現 ls;
  • 編寫一個獲取和保存 reddit 上 /r/programming 文章的命令,並保存爲 JSON;
  • 編寫一個以 JSON 格式列出目錄結構的命令,例如 jsonify dir-name 返回一個帶有 dir-name 內部結構的 JSON 文件;
  • 編寫一個讀取從上面的步驟獲得的 JSON 的命令,並建立目錄結構;
  • 考慮將天天作的一些任務,並嘗試將其自動化。

Step 3 —— 學習軟件包管理器(Learn Package Manager)

瞭解該語言的基礎知識並製做了一些示例應用以後,須要瞭解如何使用該語言的軟件包管理器,包管理器可幫助在應用程序中使用外部庫,並分發你本身的庫供其餘人使用。緩存

若是你選擇了 PHP,你將學習的是 Composer,Node.js 有 NPM 或 Yarn,Python 有 Pip,Ruby 有 RubyGems。不管選擇什麼,請繼續學習如何使用其包管理器。安全

Step 4 —— 標準和最佳實踐 ( Standards and Best Practices)

每種語言都有本身的標準和開發的最佳實踐,例如 PHP 有 PHP-FIG 和 PSR,使用 Node.js 有許多不一樣的社區驅動指南,其餘語言也有相同的指導。bash

Step 5 —— 安全(Security)

請務必閱讀有關安全的最佳實踐,閱讀 OWASP 指南並瞭解不一樣的安全問題以及如何以選擇的語言避免它們。服務器

Step 6 —— 實踐(Practice)

你已經掌握了語言、標準和最佳實踐的基礎知識,安全性以及如何使用軟件包管理器。如今開始建立一個包並分發給其餘人使用,並確保遵循迄今爲止學到的標準和最佳實踐。例如,若是您選擇了 PHP,那麼能夠在 Packagist 上發佈,若是選擇了Node.js,那麼能夠在 Npm 上發佈,等等。

若是完成了,在 Github 上搜索一些項目,並在某些項目中提一些 PR。下面是一些 Idea:

  • 重構並實現學到的最佳實踐
  • 查看未解決的 issue 並嘗試解決
  • 添加任何附加功能

Step 7 —— 瞭解測試(Learn about Testing)

瞭解如何在應用程序中編寫單元測試和集成測試,另外,瞭解不一樣的測試術語,如mocks, stubs

Step 8 —— 練習(Practical)

爲目前爲止所作的實際任務編寫單元測試,尤爲是步驟 6 中所作的練習。還要學習和計算編寫的測試的覆蓋率。

Step 9 —— 瞭解關係數據庫(Learn about the Relational Databases)

瞭解如何將數據保存在關係數據庫中。在選擇要學習的工具以前,請先了解不一樣的數據庫術語,例如鍵,索引,規範化,元組等。

這裏有幾個選項,但若是你學習一個,其的應該也是至關容易去學。你想學習的應該是 MySQL,MariaDB 和 PostgreSQL。能夠選擇 MySQL。

Step 10 —— Practical Time

如今是時候把學到的東西拿來用了,使用迄今爲止學到的全部內容建立一個簡單的應用程序。選擇任何一個 idea,能夠是建立一個簡單的博客,並實現其中的如下功能:

  • 用戶賬戶 —— 註冊和登陸
  • 註冊用戶能夠建立博客文章
  • 用戶應該可以查看他建立的全部博客文章
  • 用戶應該可以刪除他們的博客文章
  • 確保用戶只能看到他的我的博客文章(而不能看其餘人的)
  • 編寫單元/集成測試
  • 應該爲查詢應用索引,分析查詢以確保索引有做用。

Step 11 —— 學習框架( Learn a Framework)

根據選擇的項目和語言,可能須要也可能不須要框架。每種語言都有幾個不一樣的選項,繼續看看選擇的語言有哪些選項可供選擇,而後選擇一個。

若是選擇了 PHP,我會建議使用 Laravel 或 Symfony 以及微架構(Lumen 或 Slim),若是你選擇 Node.js,有幾種不一樣的選擇,但突出的是 Express.js。

Step 12 ——  Practical Time

將 step10 中建立的應用程序轉換爲使用選擇的框架,還要確保移植包括測試在內的全部內容。

Step 13 —— 學習 NoSQL 數據庫(Learn a NoSQL Database)

首先了解它們是什麼,它們與關係數據庫有什麼不一樣以及爲何須要它們。 有幾種不一樣的選擇,稍微研究下看看,並比較它們的特色和差別。 能夠選擇的一些經常使用選項有 MongoDB,Cassandra,RethinkDB 和 Couchbase,若是必須選擇一個,請使用 MongoDB。

Step 14 —— 緩存(Caching)

瞭解如何在應用程序中實現應用程序級緩存,瞭解如何使用 Redis 或 Memcached,並在 step 12 中建立的應用程序中使用緩存。

Step 15 —— 建立 RESTful API(Creating RESTful APIs)

瞭解 REST 並學習如何製做 RESTful API,在 Roy Fielding 的文章中閱讀關於 REST 的部分,若是他們說 REST 只適用於 HTTP API,那麼確保你可以與他人爭論。

Step 16  —— 瞭解不一樣的認證方法(Learn about Different Auth Methods)

瞭解不一樣的認證和認證方法,你應該知道他們是什麼,有什麼不一樣以及何時使用偏好。

  • OAuth — Open Authentication
  • Basic Authentication
  • Token Authentication
  • JWT — JSON Web Tokens
  • OpenID

Step 17  ——  消息代理(Message Brokers)

瞭解消息代理並瞭解什麼時候以及爲什麼使用它們。一樣有多種選擇,但突出的是 RabbitMQ 和Kafka,若是你想選擇一個的話,能夠先從 RabbitMQ 開始。

Step 18 —— 搜索引擎(Search Engines)

隨着應用程序的增加,關係數據庫或 NoSQL 數據庫的簡單查詢不可以知足要求,而不得不求助於搜索引擎。

Step 19 —— 瞭解如何使用Docker( Learn how to use Docker)

不管是在複製與生產環境相同的環境,保持操做系統清潔或加快編碼、測試或部署,Docker 能夠在開發過程當中大大方便工做,學習如何使用 Docker。

Step 20 —— Web 服務器知識(Knowledge of Web Servers)

若是你已經走到這麼遠了,你可能已經在前面的步驟中使用了服務器,這一步主要是找出不一樣Web 服務器之間的差別,瞭解限制和不一樣的可用配置選項,以及如何最好地利用這些限制編寫應用程序。

Step 21 —— 瞭解如何使用Web Scoket(Learn how to use Web Sockets)

雖然不是必需的,但在工具帶中有這些知識是有益的,學習如何使用 web-sockets 編寫實時Web 應用程序並使用它建立一些示例應用程序。能夠在上面製做的博客應用程序中使用它來實現博客文章列表中的實時更新。

Step 22 —— 學習 GraphQL(Learn GraphQL)

學習如何使用 GraphQL 製做 API,瞭解它與 REST 的不一樣之處,以及它爲何被稱爲 REST 2.0。

Step 23 —— 看看圖數據庫(Look into Graph Databases)

圖模型表明了一種很是靈活的處理數據關係的方式,圖數據庫爲其提供了快速高效的存儲、檢索和查詢方式,學習如何使用 Neo4j 或 OrientDB。

Step 24 —— 繼續探索(Keep Exploring)

一旦你開始學習和練習,你必定會遇到咱們在這個路線圖中沒有涉及的東西,只要保持開放的心態和對新事物的渴望就好。

關鍵是要儘量多地練習,起初你可能會以爲你並無抓住任何東西,但這是正常的,隨着時間的推移,你會以爲愈來愈好。

原文: https://medium.com/tech-tajaw...
譯文: https://zhuanlan.zhihu.com/p/...

推薦:Spring Boot & Cloud 最強技術教程

關注Java技術棧微信公衆號,回覆關鍵字 "java" 獲取大量Java技術實戰教程。

image

相關文章
相關標籤/搜索