file
如今的網站開發與幾年前的完全不一樣了; 現在有很多讓網站開發人員感到困惑的東西。 這是我們決定做路線圖指南 step by step visual guides demonstrating the bigger picture 的原因之一,並讓每個人清楚的知道應該在網站開發中處於何種角色。
一周以前, 我們發表了一篇文章 Modern Frontend Developer in 2018 ,我們承諾了為後端和DevOps發布最新的路線圖。現在履行承諾, 這篇文章是關於現代後端開發人員的。 如果你還沒有查看前端開發人員路線圖的話,去看一下吧。
之前的後端路線圖只是一個純粹的技術推薦,沒有明確的方向和應該遵循的順序。所以我們像前端路線圖那樣重新繪製了它,讓它可以一步一步的引導以給你一個更好的建議。
我們現在在為 DevOps 努力繪製路線圖,並有希望在下周發布。屆時,我們也將會發布一篇與之相關的文章, 在這裡 link to the repository 你可以查看最新的更新情況。
言歸正傳,讓我們開始吧。你可以在中看到詳細的路線圖,同時我也將在後面的描述中解釋每一步。
file
中文圖片來自 developer-roadmap-chinese
讓我們把它分解一下並在下面的部分對每一步進行解釋。
在我們開始之前, 儘管我們沒有把 HTML/CSS 的相關知識列在路線圖上面,但是建議你至少瞭解一點並且知道怎麼編寫一些基本的 HTML/CSS。
第 1 步:學習一門語言
當我們談到語言時,你會有無數種選擇。為了方便你做決定,我把它們分成幾類。對於剛開始進入後端開發的初學者,我建議你隨便選一門指令碼語言去學,它們都有大量的需求,也能讓你很快地成長。如果你已經有了前端開發的一些知識,你可能會發現 Node.js 會比較容易,再加上它有很大的就業市場。
如果你已經開始做後端開發的工作並且已經掌握了一門指令碼語言,我建議你不要去再學習一門新的語言了,而是挑選「功能(Functional)」和「多範例(Multiparadigm)」的一些內容去學。舉個例子,如果你已經在用 PHP 或者 Node.js 開發了,不需要再學 Python 或者 Ruby,而是去嘗試 Erlang 或者 Golang。這一定會協助你擴充思維、開闊眼界。
第 2 步:練習你所學
沒有比練習更好的學習方式了。當你學習了你的語言並且對它的概念有了最基本的理解時,請把它們應用到實踐。要做儘可能多的小應用。下面只是一些能讓你開始的想法:
- 實現你在 bash 中啟動並執行一些命令。例如,嘗試去實現
ls
的功能。
- 寫一個命令,從
/r/programming
擷取 reddit posts 並用 JSON 檔案的格式儲存。
- 寫一個命令,用 JSON 格式表示一個目錄的結構。例如,
jsonify dir-name
能夠給你一個帶有 dir-name
內部結構的 JSON 檔案。
- 寫一個命令,能夠讀取上面步驟的 JSON 檔案,並且建立這樣的目錄結構。
- 考慮一些你每天做的事情,並且嘗試讓它們自動完成。
第 3 步:學習包管理器
一旦你已經有了語言基礎,並且做過了一些樣本程式,那麼你就該為選擇的語言學習使用包管理器。包管理器可以協助你在你的應用中使用外部的庫或者發布你自己的庫以供他人使用。
如果你選擇了 PHP,你就必須學習 Composer。Node.js 則有 NPM,Python 有 Pip,以及 Ruby 有 RubyGems。無論你選擇了哪一種語言,都應該進一步學習如何使用它的包管理器。
第 4 步:標準和最佳實務
每一門語言都有自己的標準和最佳實務。為你選擇的語言學習它們。比如 PHP 有 PHP-FIG 和 PSR 規範, Node.js 則有很多不同的社區驅動指南,其他語言也是如此。
第 5 步:安全
務必閱讀安全方面的最佳做法。閱讀 OWASP 指南,瞭解不同的安全問題並在您選擇的語言中規避它們。
第 6 步:練習
現在你已經知道了語言基礎、標準和最佳實務、安全以及怎麼使用包管理器。現在開始建立一個包並發布給他人使用,然後確認遵循了你目前學習到的標準和最佳實務。例如,如果選擇了 PHP,你可以把它發布到 Packagist 上;如果選擇了 Node.js,你可以把它發布到 NPM Registry 上,等等。
如果你已經做完了這些,請在 Github 上搜尋一些項目並發起 Pull 請求。對此的一些想法,有:
- 重構並實現你學到的最佳實務
- 研究公開的 Issues 並嘗試解決
- 添加其他的附加功能
第 7 步:學習測試
有幾種用來測試的不同測試類型。瞭解這些類型各自的意圖。但現在先學習如何編寫單元測試和整合測試。此外,瞭解不同的測試術語,比如 Mocks,Stubs 等等。
第 8 步:實踐
至於實踐, 請繼續編寫你已經完成任務的單元測試,尤其是在第 6 步中所做的練習。
還要學習和計算你所寫測試的覆蓋率。
第 9 步:學習關係型資料庫
學習如何將你的資料持久化到資料庫。在你選擇要學習的工具之前,先理解一些資料庫的術語,比如說鍵,索引,範式,元組等等。
資料庫在這裡有一些選擇。如果你學會了一個資料庫,其他的資料庫也學起來比較容易。你想學習的資料庫有 MySQL,MariaDB (大部分相同並且是 MySQL 資料庫的一個分支),PostgreSQL 。你可以選擇 MySQL 開始學習。
第 10 步:實戰的時間
是時候把你目前所學的一切,去實際中應用了。
建立一個簡單的應用程式,把你目前所學的知識都用到這個應用裡面去。可以選擇任何想法去實現,也可能就是建立一個 blog 去實現下面提到的功能點
- 使用者帳號管理--- 註冊和登陸
- 已經註冊的使用者可以發表部落格
- 使用者可以瀏覽自己發布的所有部落格
- 使用者可以刪除自己的部落格
- 確保使用者只能夠看到自己個人的部落格而且不能看到其他人的
- 編寫應用程式的單元/整合測試
- 你應該為一些查詢資料添加索引。分析查詢語句確保有用到索引。
第 11 步:學習一款架構
根據你選擇的項目和語言,你可能需要一款架構。每一門語言對此都有幾個不同的選擇,繼續來看你所選擇的語言有哪些可選的架構,然後從中挑選一個。
如果你選擇了 PHP,那麼我建議你使用 Laravel 或者 Symfony 以及微架構 Lumen 或 Slim。如果你選擇了 Node.js,將會有幾個不同的選擇,但比較好的是 Express.js。
第 12 步:練習時間
為了實現這一步,請用你選擇的架構對你在第 10 步完成的應用進行重構。並確認移植了一切內容,包括測試。
第 13 步:學習一款 NoSQL 型資料庫
首先要理解它們是什麼,它們與關係型資料庫有什麼不同,以及為什麼需要它們。這裡有幾個不同的選擇,研究看看它們的特點和差異。一些常見的選擇是 MongoDB,Cassandra,RethinkDB 和 Couchbase。如果你必須選擇一個,請從 MongoDB 開始。
第 14 步:緩衝
學習在你的應用程式中實現應用級緩衝。瞭解怎樣使用 Redis 或 Memcached 並對你在第 12 步中構建的應用實現緩衝。
第 15 步:建立 RESTful API
瞭解 REST 和學習如何建立 RESTful API,請務必從 Roy Fielding 的原始文章中閱讀 REST 相關部分。然後可以確認,如果有人說 REST 只是 HTTP API,你將能夠與他們爭論。
第 16 步 : 學習不同的認證方法
學習不同的認證和授權方法,你應該知道他們的不同和優劣,什麼時候更適合用什麼方式去實現。
- OAuth --- 開發認證
- HTTP Basic 認證
- Token 認證
- JWT --- JSON Web Tokens 認證
- OpenID
第 17 步:訊息訂閱發布系統
理解各種訊息訂閱發布系統,知道什麼時候什麼情境適合用什麼技術,現在有很多種技術可以選擇,最突出的是 RabbitMQ 和 Kafka,你可以先開始學習 RabbitMQ 或者 Kafka。
第 18 步 : 搜尋引擎
隨著應用程式的增長,對關聯式資料庫或者 NoSQL 資料庫簡單的查詢已經無法滿足你的需求,所以你不得不求助於搜尋引擎。對於搜尋引擎我們有很多種不同的選擇,並且每一種都有它自己的特性。
第 19 步 :學習如何使用 Docker
Docker可以極大的促進你的開發,無論是複製與生產環境相同的環境,保持作業系統的整潔還是加快編碼、測試或部署的速度。我將把 “ 它將如何協助我 ” 的答案留給你們去搜尋。在這一步中,繼續學習和如何使用 Docker。
第 20 步:Web 服務器知識
如果你已經學到了這裡,你可能已經在前面的步驟中使用過伺服器了 。這一步的主要任務是找出不同 Web 服務器之間的差異,瞭解伺服器的一些限制以及不同的伺服器的可用配置,最後最大限度的利用這些限制去編程。
第 21 步:學習如何使用 Web Sockets
Web Socket 不是必須要掌握的,在你的知識庫中有這些知識,對你來說是很有好處的。學習如何使用 Web-sockets 編寫即時 Web 應用程式並使用它建立一些應用程式範例。你可以用在 blog 的應用程式中,實現 blog文章列表的即時更新。
第 22 步:學習 GraphQL
學習如何利用 GraphQL 建立 API 。理解 REST 和 GraphQL 的不同,以及為什麼 GraphQL 被稱作 REST 2.0 。
第 23 步:研究 圖形資料庫
圖模型代表了一個非常靈活的處理資料關係的方式, 並且圖形資料庫為它提供了快速高效的儲存,恢複和查詢 。 去學習一下怎麼使用 Neo4j 或者 OrientDB 吧。
第 24 步: 持續探索
一旦你開始了學習和練習,你必然的會遇到一些不在路線圖裡面的事物。不過只要對學習新事物保持一個開放的心態和積極的興趣就好。
記住,關鍵是盡你所能的去練習。剛開始會看起來很嚇人,你可能會覺得對所有東西都不理解,但是這是正常的,隨著時間的推移,你會感覺好一點的。
就這樣, 這篇文章到這就結束了。 你可以在 twitter 和我做朋友,或者通過郵件 email和我聯絡。當然也別忘了去 watch the repository 查看未來的一些更新。 請繼續關注!
轉自 PHP / Laravel 開發人員社區 https://laravel-china.org/topics/13394