摘要:簡評之前,后端開發(fā)路線圖僅僅是一個技術(shù)推薦,且沒有明確的方向指明應(yīng)該遵循的順序,這份重新制作的指南將會給你一個更好的方向?,F(xiàn)在開始創(chuàng)建一個包并分發(fā)給其他人使用,并確保遵循迄今為止學(xué)到的標準和最佳實踐。
簡評:之前,后端開發(fā)路線圖僅僅是一個技術(shù)推薦,且沒有明確的方向指明應(yīng)該遵循的順序,這份重新制作的指南將會給你一個更好的方向。
現(xiàn)在的 Web 開發(fā)與幾年前完全不同了,有很多不同的東西可以輕易地把人拒之門外,這也是我們決定制作這個循序漸進指南的原因之一,并讓任何人可以清楚地了解他們在 web 開發(fā)中扮演的角色。
可以在下面的圖片中找到詳細的路線圖,而我也將在下面的描述中解釋每一個步驟。
在開始之前,雖然我們沒有在下面的路線圖中列出 HTML / CSS 的知識,但建議讀者至少要了解一些基本的 HTML / CSS 知識。
Step 1 —— 學(xué)習(xí)一門語言(Learn a Language)語言有很多選擇,我已經(jīng)將它們分成幾類,以便更容易做出決定。對于剛開始進入后端開發(fā)的初學(xué)者,我建議你選擇任何腳本語言,因為它們有很多功能,可以讓你快速起步。如果你有一些前端知識,你可能會發(fā)現(xiàn) Node.js 更容易(還有一個很大的就業(yè)市場)。
如果你已經(jīng)是后端開發(fā)并了解一些腳本語言,我建議不要選擇其他腳本語言,而是從「函數(shù)式(Functional)」或「多范式(Multiparadigm)」中選擇。例如,如果你已經(jīng)在使用 PHP 或Node.js,請不要使用 Python 或 Ruby,而應(yīng)該嘗試使用 Erlang 或 Golang。它一定會幫助你延伸思維,并將你的思想帶到新的視野。
Step 2 —— 練習(xí)你學(xué)到的東西(Practice what you have Learnt)沒有比實踐更好的學(xué)習(xí)方式了。一旦你選擇了語言,并且對這些概念有了基本的了解,就可以使用它們,盡你所能制作盡可能多的小應(yīng)用。下面是一些讓你開始的 Idea:
在 bash 中實現(xiàn)一些你自己使用的命令,比如嘗試實現(xiàn) ls;
編寫一個獲取和保存 reddit 上 /r/programming 文章的命令,并保存為 JSON;
編寫一個以 JSON 格式列出目錄結(jié)構(gòu)的命令,例如 jsonify dir-name 返回一個帶有 dir-name 內(nèi)部結(jié)構(gòu)的 JSON 文件;
編寫一個讀取從上面的步驟得到的 JSON 的命令,并創(chuàng)建目錄結(jié)構(gòu);
考慮將每天做的一些任務(wù),并嘗試將其自動化。
Step 3 —— 學(xué)習(xí)軟件包管理器(Learn Package Manager)了解該語言的基礎(chǔ)知識并制作了一些示例應(yīng)用之后,需要了解如何使用該語言的軟件包管理器,包管理器可幫助在應(yīng)用程序中使用外部庫,并分發(fā)你自己的庫供其他人使用。
如果你選擇了 PHP,你將學(xué)習(xí)的是 Composer,Node.js 有 NPM 或 Yarn,Python 有 Pip,Ruby 有 RubyGems。無論選擇什么,請繼續(xù)學(xué)習(xí)如何使用其包管理器。
Step 4 —— 標準和最佳實踐 (?Standards and Best Practices)每種語言都有自己的標準和開發(fā)的最佳實踐,例如 PHP 有 PHP-FIG 和 PSR,使用 Node.js 有許多不同的社區(qū)驅(qū)動指南,其他語言也有相同的指導(dǎo)。
Step 5 —— 安全(Security)請務(wù)必閱讀有關(guān)安全的最佳實踐,閱讀 OWASP 指南并了解不同的安全問題以及如何以選擇的語言避免它們。
Step 6 —— 實踐(Practice)你已經(jīng)掌握了語言、標準和最佳實踐的基礎(chǔ)知識,安全性以及如何使用軟件包管理器?,F(xiàn)在開始創(chuàng)建一個包并分發(fā)給其他人使用,并確保遵循迄今為止學(xué)到的標準和最佳實踐。例如,如果您選擇了 PHP,那么可以在 Packagist 上發(fā)布,如果選擇了Node.js,那么可以在 Npm 上發(fā)布,等等。
如果完成了,在 Github 上搜索一些項目,并在某些項目中提一些 PR。下面是一些 Idea:
重構(gòu)并實現(xiàn)學(xué)到的最佳實踐
查看未解決的 issue 并嘗試解決
添加任何附加功能
Step 7 —— 了解測試(Learn about Testing)了解如何在應(yīng)用程序中編寫單元測試和集成測試,另外,了解不同的測試術(shù)語,如mocks, stubs 等
Step 8 —— 練習(xí)(Practical)為目前為止所做的實際任務(wù)編寫單元測試,尤其是步驟 6 中所做的練習(xí)。還要學(xué)習(xí)和計算編寫的測試的覆蓋率。
Step 9 —— 了解關(guān)系數(shù)據(jù)庫(Learn about the Relational Databases)了解如何將數(shù)據(jù)保存在關(guān)系數(shù)據(jù)庫中。在選擇要學(xué)習(xí)的工具之前,請先了解不同的數(shù)據(jù)庫術(shù)語,例如鍵,索引,規(guī)范化,元組等。
這里有幾個選項,但如果你學(xué)習(xí)一個,其的應(yīng)該也是相當(dāng)容易去學(xué)。你想學(xué)習(xí)的應(yīng)該是 MySQL,MariaDB 和 PostgreSQL??梢赃x擇 MySQL。
Step 10 —— Practical Time現(xiàn)在是時候把學(xué)到的東西拿來用了,使用迄今為止學(xué)到的所有內(nèi)容創(chuàng)建一個簡單的應(yīng)用程序。選擇任何一個 idea,可以是創(chuàng)建一個簡單的博客,并實現(xiàn)其中的以下功能:
用戶帳戶 —— 注冊和登錄
注冊用戶可以創(chuàng)建博客文章
用戶應(yīng)該能夠查看他創(chuàng)建的所有博客文章
用戶應(yīng)該能夠刪除他們的博客文章
確保用戶只能看到他的個人博客文章(而不能看其他人的)
編寫單元/集成測試
應(yīng)該為查詢應(yīng)用索引,分析查詢以確保索引有作用。
Step 11 —— 學(xué)習(xí)框架(?Learn a Framework)根據(jù)選擇的項目和語言,可能需要也可能不需要框架。每種語言都有幾個不同的選項,繼續(xù)看看選擇的語言有哪些選項可供選擇,然后選擇一個。
如果選擇了 PHP,我會建議使用 Laravel 或 Symfony 以及微架構(gòu)(Lumen 或 Slim),如果你選擇 Node.js,有幾種不同的選擇,但突出的是 Express.js。
Step 12 —— ?Practical Time將 step10 中創(chuàng)建的應(yīng)用程序轉(zhuǎn)換為使用選擇的框架,還要確保移植包括測試在內(nèi)的所有內(nèi)容。
Step 13 —— 學(xué)習(xí) NoSQL 數(shù)據(jù)庫(Learn a NoSQL Database)首先了解它們是什么,它們與關(guān)系數(shù)據(jù)庫有什么不同以及為什么需要它們。 有幾種不同的選擇,稍微研究下看看,并比較它們的特點和差異。 可以選擇的一些常用選項有 MongoDB,Cassandra,RethinkDB 和 Couchbase,如果必須選擇一個,請使用 MongoDB。
Step 14 —— 緩存(Caching)了解如何在應(yīng)用程序中實現(xiàn)應(yīng)用程序級緩存,了解如何使用 Redis 或 Memcached,并在 step 12 中創(chuàng)建的應(yīng)用程序中使用緩存。
Step 15 —— 創(chuàng)建 RESTful API(Creating RESTful APIs)了解 REST 并學(xué)習(xí)如何制作 RESTful API,在 Roy Fielding 的文章中閱讀關(guān)于 REST 的部分,如果他們說 REST 只適用于 HTTP API,那么確保你能夠與他人爭論。
Step 16? —— 了解不同的認證方法(Learn about Different Auth Methods)了解不同的認證和認證方法,你應(yīng)該知道他們是什么,有什么不同以及什么時候使用偏好。
OAuth?—?Open Authentication
Basic Authentication
Token Authentication
JWT?—?JSON Web Tokens
OpenID
Step 17? ——? 消息代理(Message Brokers)了解消息代理并了解何時以及為何使用它們。同樣有多種選擇,但突出的是 RabbitMQ 和Kafka,如果你想選擇一個的話,可以先從 RabbitMQ 開始。
Step 18 —— 搜索引擎(Search Engines)隨著應(yīng)用程序的增長,關(guān)系數(shù)據(jù)庫或 NoSQL 數(shù)據(jù)庫的簡單查詢不能夠滿足要求,而不得不求助于搜索引擎。
Step 19?—— 了解如何使用Docker(?Learn how to use Docker)無論是在復(fù)制與生產(chǎn)環(huán)境相同的環(huán)境,保持操作系統(tǒng)清潔或加快編碼、測試或部署,Docker 可以在開發(fā)過程中大大方便工作,學(xué)習(xí)如何使用 Docker。
Step 20?—— Web 服務(wù)器知識(Knowledge of Web Servers)如果你已經(jīng)走到這么遠了,你可能已經(jīng)在前面的步驟中使用了服務(wù)器,這一步主要是找出不同Web 服務(wù)器之間的差異,了解限制和不同的可用配置選項,以及如何最好地利用這些限制編寫應(yīng)用程序。
Step 21?—— 了解如何使用Web Scoket(Learn how to use Web Sockets)雖然不是必需的,但在工具帶中有這些知識是有益的,學(xué)習(xí)如何使用 web-sockets 編寫實時Web 應(yīng)用程序并使用它創(chuàng)建一些示例應(yīng)用程序??梢栽谏厦嬷谱鞯牟┛蛻?yīng)用程序中使用它來實現(xiàn)博客文章列表中的實時更新。
Step 22?—— 學(xué)習(xí) GraphQL(Learn GraphQL)學(xué)習(xí)如何使用 GraphQL 制作 API,了解它與 REST 的不同之處,以及它為什么被稱為 REST 2.0。
Step 23?—— 看看圖數(shù)據(jù)庫(Look into Graph Databases)圖模型代表了一種非常靈活的處理數(shù)據(jù)關(guān)系的方式,圖數(shù)據(jù)庫為其提供了快速高效的存儲、檢索和查詢方式,學(xué)習(xí)如何使用 Neo4j 或 OrientDB。
Step 24?—— 繼續(xù)探索(Keep Exploring)一旦你開始學(xué)習(xí)和練習(xí),你一定會遇到我們在這個路線圖中沒有涉及的東西,只要保持開放的心態(tài)和對新事物的渴望就好。
關(guān)鍵是要盡可能多地練習(xí),起初你可能會覺得你并沒有抓住任何東西,但這是正常的,隨著時間的推移,你會覺得越來越好。
原文:https://medium.com/tech-tajaw...
譯文:https://zhuanlan.zhihu.com/p/...
推薦:Spring Boot & Cloud 最強技術(shù)教程
關(guān)注Java技術(shù)棧微信公眾號,回復(fù)關(guān)鍵字 "java" 獲取大量Java技術(shù)實戰(zhàn)教程。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71299.html
摘要:前言從號開始在寫下第一篇文章說是筆記還差不多,驚奇地收到有人收藏我的文章的消息,覺得有點開心。突然腦子抽到想爬下里標簽下的文章有多少,哪篇被收藏最多,哪篇被點贊最多。。?,F(xiàn)在和大家分享下,收藏量前的文章,被那么多人收藏應(yīng)該是篇值得看的文章。 前言 從18號開始在sf寫下第一篇文章(說是筆記還差不多),驚奇地收到有人收藏我的文章的消息,覺得有點開心。突然腦子抽到想爬下sf里JAVA標簽下...
摘要:確定新的包命名規(guī)則為了盡可能避免包的誤植域名現(xiàn)象,將不會再允許使用相似的包命名不過會進一步鼓勵開發(fā)者使用自己的命名空間來發(fā)布包。本文是對其幾十年來技術(shù)之路的回顧與展望,也是一代技術(shù)人的青春回憶。 showImg(https://segmentfault.com/img/remote/1460000012846628); 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了...
摘要:中國論壇提案征集月日截止論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對面進行交流合作。贊助方案出爐多元化獎學(xué)金現(xiàn)正接受申請即將首次合體落地中國 PingCAP將其TiDB數(shù)據(jù)庫平臺押注在云原生上 showImg(https://segmentfault.com/img/bVbogKp?w=508&h=477); 公司:PingCAP地點:中國北京和加利福尼亞州圣馬特奧行業(yè):軟件 挑戰(zhàn) 流行的...
摘要:中國論壇提案征集月日截止論壇讓用戶開發(fā)人員從業(yè)人員匯聚一堂,面對面進行交流合作。贊助方案出爐多元化獎學(xué)金現(xiàn)正接受申請即將首次合體落地中國 PingCAP將其TiDB數(shù)據(jù)庫平臺押注在云原生上 showImg(https://segmentfault.com/img/bVbogKp?w=508&h=477); 公司:PingCAP地點:中國北京和加利福尼亞州圣馬特奧行業(yè):軟件 挑戰(zhàn) 流行的...
摘要:現(xiàn)在開始創(chuàng)建一個包并分發(fā)給其他人使用,并確保遵循你迄今為止學(xué)到的標準和最佳實踐。第步實踐對于練習(xí),繼續(xù)編寫單元測試,以完成目前為止所做的實際任務(wù),特別是你在步驟中所做的練習(xí)。 今天的Web開發(fā)與幾年前完全不同,有很多不同的東西可以很容易地阻止任何人進入Web開發(fā)。這是我們決定制作這些循序漸進的視覺指南的原因之一,這些指南展示了更大的圖景,并讓任何人清楚了解他們在網(wǎng)頁開發(fā)中扮演的角色。 ...
閱讀 656·2021-10-27 14:15
閱讀 1185·2021-10-15 09:42
閱讀 2747·2019-08-30 15:53
閱讀 1289·2019-08-23 17:02
閱讀 2966·2019-08-23 16:23
閱讀 3182·2019-08-23 15:57
閱讀 3465·2019-08-23 14:39
閱讀 518·2019-08-23 14:35