現代後端開發者必備技能-2018版

如來神掌發表於2018-05-09

  今天的Web開發與幾年前完全不同,有很多不同的東西可以很容易地阻止任何人進入Web開發。這是我們決定製作這些循序漸進的視覺指南的原因之一,這些指南展示了更大的圖景,並讓任何人清楚瞭解他們在網頁開發中扮演的角色。

這是我們決定製作這些循序漸進的視覺指南的原因之一,這些指南展示了更大的圖景,並讓任何人清楚瞭解他們在網頁開發中扮演的角色。

  毫不遲疑,讓我們開始吧。你可以在下面的圖片中找到詳細的路線圖,但是我也將在下面的描述中解釋每一步。

  下圖如果看著不清楚,可以看這裡 -> 原圖地址

  我們來分解它,並解釋下面部分中的每一步。

  在我們開始之前,雖然我們沒有在上面的路線圖中列出 HTML/CSS 的知識,但建議您至少了解一些基本的 HTML/CSS 並瞭解如何編寫基本的 HTML/CSS。

 第1步 - 學習一門語言

  談到選擇語言有很多選擇。我已經將它們分成幾類,以便你更容易做出決定。對於剛開始進入後端開發的初學者,我建議你選擇任何指令碼語言,因為它們有很多需求,它可以讓你快速起步。如果你有一些前端知識,你可能會發現Node.js更容易,再加上有一個很大的就業市場。

  如果你已經在做後端開發並且知道一些指令碼語言,我建議你不要選擇另一種指令碼語言,並從“功能”或“多引數”部分中選擇一些。

  例如,如果你已經在使用PHP或Node.js,請不要使用Python或Ruby,而應嘗試使用Erlang或Golang。它肯定會幫助你延伸思維,並開啟你的思想到新的視野。

 第2步 - 練習你學到的東西

  沒有比實踐更好的學習方式。一旦你選擇了你的語言,並且對這些概念有了基本的瞭解,就可以使用它們。盡你所能製作儘可能多的小應用程式。盡你所能製作儘可能多的小應用程式:

  • 在bash中實現一些你自己使用的命令嘗試實現 ls 的功能
  • 編寫一個命令,為你提供JSON格式的目錄結構,例如 jsonify dir-name 給你一個帶有 dir-name 內結構的JSON檔案
  • 編寫一個從上面的步驟讀取JSON的命令並建立目錄結構
  • 想想你每天都在做的一些任務,並嘗試將其自動化

 第3步 - 學習軟體包管理器

  瞭解了該語言的基礎知識並製作了一些示例應用程式後,請了解如何使用你選擇的語言的軟體包管理器。軟體包管理器可幫助你在應用程式中使用外部庫,並分發你的庫供其他人使用。

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

 第4步 - 標準和最佳實踐

  每種語言都有自己的標準和做事的最佳實踐。研究他們為你挑選的語言。例如 PHP 有 PHP-FIG 和 PSR 。使用 Node.js 有許多不同的社群驅動指南,其他語言也有相同的指導。

 第5步 - 安全

  請務必閱讀有關安全的最佳做法。閱讀 OWASP 指南並瞭解不同的安全問題以及如何以你選擇的語言避免它們。

 第6步 - 練習

  現在你已經掌握了語言,標準和最佳實踐的基礎知識,安全性以及如何使用軟體包管理器。現在開始建立一個包並分發給其他人使用,並確保遵循你迄今為止學到的標準和最佳實踐。例如,如果你選擇了PHP,那麼你將在Packagist上釋出它,如果你選擇了Node.js,那麼你將在Npm註冊源中釋出它,等等。

  一旦你完成了,在Github上搜尋一些專案,並在某些專案中開啟一些pull請求。對此的一些想法:

  • 重構並實施你學到的最佳實踐
  • 檢視未解決的問題並嘗試解決
  • 新增任何附加功能

 第7步 - 瞭解測試

  測試有幾種不同的測試型別。瞭解這些型別它們的目的是什麼。瞭解如何在應用程式中編寫單元測試和整合測試。另外,瞭解不同的測試術語,如 mocks, stubs 等。

 第8步 - 實踐

  對於練習,繼續編寫單元測試,以完成目前為止所做的實際任務,特別是你在步驟6中所做的練習。

  還要學習和計算你編寫的測試的覆蓋率。

 第9步 - 瞭解關聯式資料庫

  瞭解如何將資料儲存在關聯式資料庫中。在你選擇要學習的工具之前,請先了解不同的資料庫術語,例如鍵,索引,規範化等。

  這裡有幾個選項。但是,如果你學習一個,其他的應該相當容易。你想學習的是MySQL,MariaDB(大部分是相同的,是MySQL的分支)和PostgreSQL。選擇MySQL開始。

 第十步 - 實踐時間

  現在是時候把你所學到的一切都用到這裡去了。

  使用你迄今為止學到的所有內容建立一個簡單的應用程式。可以選擇任何想法​​,也許建立一個簡單的部落格應用程式,並實現其中的以下功能。

  • 使用者帳戶 - 註冊和登入
  • 註冊使用者可以建立部落格文章
  • 使用者應該能夠檢視他建立的所有部落格文章
  • 他們應該能夠刪除他們的部落格文章
  • 確保使用者只能看到他的個人部落格帖子,而不能看到他人
  • 編寫應用程式的單元/整合測試
  • 你應該為查詢應用索引。分析查詢以確保正在使用索引

 第11步 - 瞭解一個框架

  根據你選擇的專案和語言,你可能需要也可能不需要框架。每種語言都有幾個不同的選項,繼續看看你選擇的語言有哪些選項可供選擇,然後選擇相關的一個。

  如果你選擇了PHP,我會建議你使用 Laravel或Symfony,如果是為框架的話,使用Lumen或Slim。如果你選擇Node.js,有幾種不同的選擇,但突出的是Express.js。

 第12步 - 實踐時間

  為了實現此步驟,請將你在 步驟10 中建立的應用程式轉換為使用你選擇的框架。還要確保移植包括測試在內的所有內容。

 第13步 - 學習NoSQL資料庫

  首先了解它們是什麼,它們與關聯式資料庫有何不同以及為什麼它們是需要的。有幾種不同的選擇,研究一點看看,並比較它們的特點和差異。你可以選擇的一些常用選項是Rdeis,MongoDB,Cassandra,RethinkDB和Couchbase。如果你必須選擇一個,請使用Redis。

 第14步 - 快取

  瞭解如何在你的應用程式中實施應用程式級快取。瞭解如何使用Redis或Memcached並在你在 步驟12 中建立的應用程式中實施快取。

 第15步 - 建立RESTful API

  瞭解REST並學習如何製作RESTful API,並確保從 Roy Fielding 的原始文章中閱讀關於REST的部分。如果他們說REST僅適用於HTTP API,請確保你能夠與其他人對戰。

 第16步 - 瞭解不同的身份驗證方法

  瞭解不同的身份驗證和授權方法。你應該知道他們是什麼,他們有什麼不同以及什麼時候偏好某一個

  • OAuth - 開放認證
  • 基本認證
  • 令牌認證
  • JWT - JSON Web令牌
  • OpenID

 第17步 - 訊息代理

  瞭解訊息代理並瞭解何時以及為何使用它們。有多種選擇,但突出的是 RabbitMQKafka。現在學習如何使用RabbitMQ,如果你想選擇一個。

 第18步 - 搜尋引擎

  隨著應用程式的增長,對關聯式資料庫或NoSQL資料庫的簡單查詢不會將其切斷,你將不得不求助於搜尋引擎。有多種選擇,每種選擇都有自己的差異。比如 Solr, Sphinx, ElasticSearch,Xapian等。

 第19步 - 瞭解如何使用Docker

  無論你是在複製與生產環境相同的環境,還是保持作業系統清潔或加快你的編碼,測試或部署,Docker都可以在開發過程中大大方便你的工作。在這一步中,繼續學習如何使用Docker。

 第20步 - 關於Web伺服器的知識

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

 第21步 - 瞭解如何使用Web Sockets

  雖然不是必需的,但在工具帶中有這些知識是有益的。學習如何使用 Web sockets 編寫實時Web應用程式並使用它建立一些示例應用程式。你可以在上面製作的部落格應用程式中使用它來實現部落格文章列表中的實時更新。

 第22步 - 學習GraphQL

  學習如何使用GraphQL製作API。瞭解它與REST的不同之處,以及它為什麼被稱為 REST 2.0

 第23步 - 研究Graph資料庫

  Graph 模型代表了一種處理資料中關係的非常靈活的方式,圖資料庫為其提供了快速高效的儲存,檢索和查詢。學習如何使用 Neo4jOrientDB

 第24步 - 保持探索

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

  記住關鍵是要儘可能多地練習。它在開始時看起來更加可怕,你可能會覺得你並沒有抓住任何東西,但這是正常的,隨著時間的推移,你會覺得自己越來越好。

  好了,就這麼多。感謝閱讀。

相關文章