開端以前,儘管我們沒有將HTML/CSS列舉在道路圖中,但是我們還是主張用戶具備根底的HTML/CSS技能,至少可以寫一些根本的HTML/CSS。
1.學習一門言語
言語的挑選有許多種,爲了方便您的挑選,我將它們進行了分類。關於剛接觸後端開發的新手,我強烈主張大家挑選一門腳本言語,因爲它們的需求許多且上手較快。最好的挑選固然是Python,它的需求正在急速增長,有許多的職位可供挑選。
2.學以至用
最後的學習辦法就是着手實踐。一旦你挑選了言語,而後對其有了根本的瞭解,開端使用它。運用它進行儘量多的操練,寫一些小程序練手,瞭解它。下面是一些小比方,可以協助你開端。
*完成一些bash中你經常使用的命令,比方ls的功用
*寫一個從reddit的/r/programming頻道抓取數據並將之保存爲JSON格式的小程序
*寫一個程序將目錄結構保存爲JSON文件。
*根據上面生成的JSON文件,生成目錄結構。
*想一想平常工做中的使命,測驗將之自動化。
3.學習包辦理器
一旦你瞭解了言語的根底,一塊兒用它寫過些示例程序,接着學習該言語的包辦理器。包辦理器可以協助你使用第三方庫,一塊兒你也可以通過它發佈本身的庫以供他人使用。
假設你挑選的是Python,你應該現已學習了Pip。Node.js有NPM或Yarn、PHP有Composer,Ruby有RubyGems。不管你挑選了什麼,進一步去學習它的包辦理。
4.標準以及最佳實踐
每一種言語有其標準以及最佳實踐。你需求把握這個東西。比方Python有PEP8跟GooglePython代碼標準。Node.js各社區有不一樣的標準。其餘言語的情況也迥然不一樣。
5.安全
務必要把握安全最佳實踐。讀讀OWASP攻略,瞭解不一樣的安全問題,一塊兒要知道假如避免這類問題。(你挑選的言語)
6.實踐
如今你現已把握了言語根底,最佳實踐,安全相關以及包辦理,你可以去開發本身的庫供他人使用了。假如你用Python,你需求發佈在Pypi,假如是Node.js,你需求發佈在Npm。
到此,你可以在Github上找一些項目,參與進去。
*重構,完成你學到的最佳實踐
*修復已知的問題
*添加新的功用
7.測驗
測驗分許多種,要了解每一種測驗的類型以及其意圖。但是如今,首要學習單元測驗以及綜合測驗,使用在你的程序中。此外,還要了解不一樣的測驗術語,比方mocks,stubs等等。
8.實踐-測驗
爲你所寫的一切程序編寫單元測驗,特別是在Github上參與的項目。
一塊兒,學習覆蓋率的概念,計算測驗代碼的覆蓋率。
9.聯繫型數據庫
學習使用聯繫型數據庫保存你的數據。在學習以前,首要把握數據庫相關的術語。比方:keys,indexes,normalization,tuples等。
可供挑選的數據庫許多,你只需求把握一個,其餘的也會變得很簡略。流行的有MySQL,MariaDB(MySQL分支,與之很是類似),PostgreSQL。引薦挑選MySQL開端。
10.着手時間-實踐
到了將所學交融的時分了。
創立一個簡略的使用,運用你所學的一切。完成一個主意,多是創立一個簡略的博客站點,完成一下的特性:
*帳戶體系——註冊&登錄
*註冊用戶可以創立blog
*用戶可以查看本身創立的一切的blog
*用戶可以刪去本身發佈的blog
*保證用戶只能看到本身發佈的blog,不能看其餘人的
*爲使用編寫單元/綜合測驗
*爲查詢創立索引。分析查詢,確保索引收效
11.學習一個結構
根據你的項目類型以及你的言語的不一樣,你可能會需求一個結構輔助開發。(也可能不需求)。每種言語都有不一樣的挑選,挑選一個合適的便可。
假如你挑選了Python,主張你挑選Django,關於微結構,主張Flask。
關於Node.js,最知名的結構是Express.js。
12.實踐-結構
使用挑選的結構重構你的博客使用。不要忘記了集成測驗代碼進來。
13.學習NoSQL(notonlySQL)數據庫
首要了解什麼是NoSQL,以及它們與聯繫型數據庫的差異,一塊兒爲何需求它們。NoSQL數據庫也有多種挑選,瞭解並比較它們之間的特性以及不一樣之處。經常使用的有MongoDB,Cassandra,RethinkDB,Couchbase。主張挑選MongoDB開端。
14.緩存
學習怎麼在你的程序中完成使用級的緩存。瞭解怎麼使用Redis或Memcached完成緩存,一塊兒在你的博客使用中完成緩存功用。
15.創立RESTfulAPIs
瞭解REST,學習怎麼編寫RESTfulAPIs,閱覽關於REST的白皮書。(ByRoyFielding)。理解REST不只僅是HTTPAPIs。
16.學習不一樣的認證辦法
學習不一樣的認證以及認證方法。你需求明白它們是什麼,它們的不一樣點,以及它們適用的場景。
*OAuth--OpenAuthentication
*BasicAuthentication
*TokenAuthentication
*JWT--JSONWebTokens
*OpenID
17.消息代理
學習消息代碼,瞭解什麼時分以及爲何使用它們。有許多可供挑選,最知名的是RabbitMQ&Kafka。主張從RabbitMQ開端學習。
18.搜索引擎
跟着使用程序規模的增長,簡略的查詢現已沒法知足要求。這個時分,你需求用到搜索引擎。一樣有多種挑選,每一種有本身的特色。
19.學習使用Docker(容器)
Docker可以爲你的開發供給巨大的便利。它可以讓你的開發環境與出產環境保持一致,可以讓你的體系保持乾淨,可以加快你的編碼,可以測驗佈置。Docker的好處,請自行google。從如今開端,學習Docker。
20.Web服務器的知識
到了這個時分,你可能現已處理過服務器相關的問題。這一過程主要是瞭解不一樣的服務器之間的差別,限制,以及不一樣的調優辦法。
21.學習WebSockets
儘管不是必須,但是具備WebSockets的技能是有好處的。學習編寫實時的web使用。可以在博客使用中,完成即時更新blog列表。
22.學習GraphQL
學習GraphQl的APIs。瞭解它與REST的不一樣,而後爲何它被稱之爲REST2.0。
23.研究Graph數據庫
Graph模型具備很是好的靈活性——在處理數據間的聯繫的時分。Graph數據庫供給高速&高效的存取以及查詢。學習瞭解Neo4j或許OrientDB。
24.不停探索
在你的學習以及實踐過程當中,確定會碰到道路圖裏沒有說起的東西。你只需求保持敞開以及飢渴去學習新的東西。
時刻謹記,學習的關鍵是實踐。多着手!剛開端的時分,你可能會感受不大好,跟着你的堅持以及時間的推移,你會變得愈來愈好。
**web