日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

這是一系列高贊文章,詳細介紹了前端、后端、DevOps 的路線圖,在 Github 上也是一個高星項目。

現(xiàn)在的 Web 開發(fā)與幾年前完全不同。有很多新東西讓剛進入 Web 領域的開發(fā)人員感到很困惑。這也是我決定逐步制作這個直觀的指南來展示 Web 概況的原因之一,可以讓任何人都清楚他在 Web 開發(fā)中所處的角色和必備的條件。

大約一周前,我發(fā)布了一篇文章:如何成為一名前端工程師,我在里面承諾會發(fā)布 Backend 和 DevOps 相關的路線圖,這篇文章將實現(xiàn)這個諾言,是關于現(xiàn)代后端開發(fā)人員的。

在這之前,后端路線圖只是對技術的全面介紹、推薦,沒有遵循明確的順序,類似于之前的前端路線圖,提供了分步指南,讓你對此有一個更好的了解。

我們還在寫 DevOps 相關的路線圖,希望下周能夠發(fā)布,同時會發(fā)布相關文章,這里是我們存放這些項目的倉庫。

如何成為一名后端開發(fā)工程師(附路線圖)

 

事不宜遲,讓我們開始吧。你可以在下圖中找到詳細的路線圖,但我也會在下文中解釋說明相關步驟。

如何成為一名后端開發(fā)工程師(附路線圖)

 

我們將對其進行分解,并對每個步驟做詳細說明。

在此之前,盡管上圖中沒有列出 html/css 相關的知識,還是建議你至少了解一些相關知識并懂得如何編寫一些基本的 HTML/CSS。

Step 1:學習一門語言

語言有很多種選擇,這里我將它們分為幾類,以方便你做選擇,對于剛開始進行后端開發(fā)的初學者,我建議你選擇任何一種腳本語言,因為有很多需求需要用到它們,而且腳本語言容易快速入門。如果你有一些前端知識,則可能發(fā)現(xiàn) Node.js 更加容易,且有巨大的就業(yè)市場。

如果你使用某種腳本語言做后端,則建議你不要選擇其他的腳本語言了,而是選擇其他函數(shù)式或多范式語言。例如,你已經在使用 php 或 Node.js,不要再使用 Python 或 Ruby,而應該嘗試使用 Erlang 或 Golang。這樣能夠幫你拓寬思路和視野。

Step 2:練習你所學的東西

沒有比練習更好的學習方法了,一旦你對所選的語言有一定的概念和基礎了解,就可以開始使用了,盡可能多地寫一些小型程序,這里有一些建議供你參考:

  • 實現(xiàn)一些自己用過的 Bash 命令,比如 ls 功能
  • 編寫一個命令,獲取 Reddit 上有關 r/programming 的帖子,并以 JSON 格式保存
  • 編寫一個命令,將目錄結構以 JSON 格式進行保存,比如: 執(zhí)行 jsonify dir-name 可以保存 dir-name 文件目錄結構
  • 編寫一個命令,讀取上面保存的 JSON 目錄結構,并新建一個類似的文件目錄
  • 考慮你每天要做的一些任務,并嘗試用代碼進行自動化

Step 3:學習使用軟件包管理

在了解該語言的基礎知識,編寫一些示例程序之后,接下來應該學習如何使用這門語言的包管理軟件。包管理可以讓你使用外部代碼庫,或者分發(fā)你的庫文件給其他人使用。

如果你選擇 PHP,則必須學習 Composer,Node.js 則需要學習 npm 或 yarn,Python 則是 pip,Ruby 則是 RubyGems,無論你選擇哪種語言,都需要學習相關的包管理軟件。

Step 4:相關標準和最佳實踐

每種語言都有自己的標準和最佳實踐,根據(jù)你選擇的語言學習這些標準和實踐。例如,PHP 的 PHP-FIG 和 PSR,Node.js 的社區(qū)指南,其他語言也是如此。

Step 5:安全

確保你閱讀了安全相關的最佳實踐,建議你閱讀 OWASP(Open Web Application Security Project) 指南,了解不同的安全問題,以及你選擇的語言如何解決這些問題。

Step 6:練習

在你了解了語言、標準、最佳實踐、包管理和安全相關的基礎知識之后,開始創(chuàng)建一個軟件包,并將其分發(fā)出去(確保你遵循了相關標準和最佳實踐)。例如,如果選擇了 PHP,則將其發(fā)布到 Packagist 上,如果選擇了 Node.js 則發(fā)布到 npm 倉庫中,以此類推。

在你完成這些步驟之后,可以在 Github 上搜索一些項目,嘗試發(fā)一個 PR(pull request):

  • 用你所學的最佳實踐重構一部分代碼
  • 看看項目中的 open issues,嘗試解決
  • 為項目添加一個拓展功能

Step 7:學習如何進行測試

有幾種不同的測試模式,了解這些模式的目的是什么。從現(xiàn)在開始就了解如何在應用程序中編寫單元測試和集成測試。另外,你需要了解一些測試術語,比如 mocks、stubs。

Step 8:實踐

為目前已完成的任務編寫單元測試,尤其是 Step 6 中的任務。

學習如何計算代碼的測試覆蓋率。

Step 9:學習關系型數(shù)據(jù)庫

了解如何將數(shù)據(jù)持久化到關系型數(shù)據(jù)庫中,在繼續(xù)學習之前,先了解相關數(shù)據(jù)庫術語,例如:鍵、索引、規(guī)范化、元組(tuples)等。

這里有幾種數(shù)據(jù)庫供選擇,不過你學會了一個,學習其他數(shù)據(jù)庫應該很容易。如果你想學的 MySQL、MariaDB(Mysql 一個分支)、PostgreSQL,可以先從 Mysql 入手。

Step 10:練習時間

是時候實際應用你所學的知識了。

用目前所學的內容創(chuàng)建一個簡單的應用程序。隨便挑一個 idea 進行實現(xiàn),比如創(chuàng)建一個簡單的博客,實現(xiàn)如下功能:

  • 用戶賬號:登陸和注冊
  • 注冊者可以發(fā)布一個帖子
  • 用戶可以查看他所發(fā)布的所有帖子
  • 他們可以刪除自己的帖子
  • 確保用戶只能看到自己發(fā)布的帖子,不能看到其他人的
  • 為這個應用編寫單元測試和集成測試
  • 為這些查詢服務做索引,分析這些查詢索引,確保已經使用了索引優(yōu)化

Step 11:學習一個框架

根據(jù)項目和所選的語言,你可能需要一個框架,不同語言有不同的選擇,請根據(jù)所選語言和適用范圍進行選擇。

如果你選擇 PHP,我建議你使用 Laravel 或者 Symfony,對于微框架,建議你使用 Luman 或者 Slim。如果你選擇 Node.js,則有不同的選擇,不過最主要的是 Express.js。

Step 12:練習時間

為了完成這個步驟,你必須確保完成了步驟 10 的內容,以及選擇了特定框架,實現(xiàn)相關測試。

Step 13:學習一個 NoSQL 數(shù)據(jù)庫

首先了解 NoSQL 數(shù)據(jù)庫是什么,和關系型數(shù)據(jù)庫有什么不同,以及為什么需要它們。有幾種不同的數(shù)據(jù)庫可供選擇,先稍微研究一下,對比它們之間功能和差異。常見的 NoSQLogic 數(shù)據(jù)庫有:MongoDB、Cassandra、RethinkDB 和 Couchbase。如果你想選一個,可以先從 MongoDB 入手。

Step 14:緩存

了解如何在程序中實現(xiàn)應用級的緩存。了解如何使用 redis 或 Memcached,以及如何在 Step 12 中構建的應用程序內實現(xiàn)緩存。

Step 15:創(chuàng)建 RESTful API

閱讀 Roy Fielding 的論文中有關 REST 的部分,了解 REST 概念,并學習如何開發(fā) RESTful API,如果別人說 REST 只適用于 HTTP API,你要能與之辯論。

Step 16:學會不同的授權方法(Auth Methods)

你應該了解身份驗證和授權方法,它們是什么,有何不同以及何時應該優(yōu)先選擇哪種?

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

Step 17:消息中間件

了解消息中間件,以及何時如何使用它們,這里有多個選擇,不過比較突出的就是 RabbitMQ 和 Kafka。如果你想選擇一個,可以從 RabbitMQ 入手。

Step 18:搜索引擎

隨著應用增長,關系型數(shù)據(jù)庫和 NoSQL 數(shù)據(jù)庫的簡單查詢功能以及不能滿足應用需求,你不得不使用搜索引擎,上圖有幾個選項,每個選項都有自己的差異。

Step 19:學習使用 Docker

無論是生產環(huán)境還是鏡像環(huán)境,保持一致的操作系統(tǒng)(類型、版本)可以加快編碼、測試或部署速度,Docker 可以幫你實現(xiàn)這部分工作,極大提高開發(fā)效率,在這個步驟中你需要學習如何使用 Docker。

Step 20:Web 服務器相關知識

如果你已經到了這一步,之前的步驟中你可能就需要 Web Server 相關的知識了。這個步驟主要是了解不同 Web 服務器直接的差異、限制和不同的可選配置選項,以及如何利用這些限制來優(yōu)化編碼。

Step 21:學會如何使用 Web Sockets

雖然這部分不是必須的,但在學會相關的知識是有益的。了解如何使用 Web Socket 實現(xiàn)實時 Web 服務,并實現(xiàn)一個簡單的程序。你可以在上面的博客應用程序中使用 Web Socket 來實時更新文章列表。

Step 22:學習 GraphQL

學習如何使用 GraphQL 開發(fā) API,了解它和 REST的差異,以及為什么 GraphQL 被稱為 REST 2.0

Step 23:學習圖數(shù)據(jù)庫(Graph Databases)

圖模型可以以一種非常靈活的方式來處理數(shù)據(jù)中的關系,圖數(shù)據(jù)庫提供了快速、有效的存儲、檢索、數(shù)據(jù)查詢的方式,了解如何使用 Neo4j 或 OrientDB。

Step 24:保持探索精神

在你學習和練習的過程中肯定會遇到本文路線圖中未涵蓋的內容,保持開放的心態(tài)學習新事物。

記住關鍵是盡可能多地練習,一開始可能比較困難,你覺得自己什么都沒有掌握,但這是正常現(xiàn)象,隨著時間流逝,你會覺得自己越來越好。

分享到:
標簽:后端 開發(fā)
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定