歡迎光臨
每天分享高質量文章

24步成為後端開發工程師(2018版)

來源:Python程式員

ID:pythonbuluo

今天的網站開發已經大不同以往,有很多的東西會對進入此領域的人造成困惑,這就是我們寫這系列文章的原因——給大家指導如何在開發過程中勝任特定的角色。

大約1周以前,我們釋出了一篇名為“現代前端開發–2018”,同時我們承諾了會釋出一篇“後端以及開發運維路線圖”。兌現這一承諾,這篇文章就是關於現代後端開發者的。如果你還沒有檢視過前端開發路線圖,可以去瞧瞧先。

在此之前,後端路線圖就是簡單粗暴的給出了你需要掌握的技術,而沒有清晰的方向以及學習的合理順序。我們像前端一樣以循序漸進的方式重繪了後端路線圖,希望給你更好的指導。

言歸正傳,我們開始吧。詳細的路線圖在下麵的圖片中,同時我會逐步的詳細講解。

下麵的章節,我們將之分解開來逐步講解。

開始之前,雖然我們沒有將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跟Google Python程式碼規範。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(not only SQL)資料庫

首先瞭解什麼是NoSQL,以及它們與關係型資料庫的差別,同時為什麼需要它們。NoSQL資料庫也有多種選擇,瞭解並比較它們之間的特性以及不同之處。常用的有MongoDB,Cassandra,RethinkDB,Couchbase。建議選擇MongoDB開始。

14. 快取

學習如何在你的程式中實現應用級的快取。瞭解如何利用Redis或Memcached實現快取,同時在你的部落格應用中實現快取功能。

15. 建立RESTful APIs

瞭解REST,學習如何編寫RESTful APIs,閱讀關於REST的白皮書。(By Roy Fielding)。理解REST不僅僅是HTTP APIs。

16. 學習不同的認證方法

學習不同的認證以及認證方式。你需要明白它們是什麼,它們的不同點,以及它們適用的場景。

    *  OAuth–Open Authentication

    *  Basic Authentication

    *  Token Authentication

    *  JWT–JSON Web Tokens

    *  OpenID

17. 訊息代理

學習訊息程式碼,瞭解什麼時候以及為什麼使用它們。有很多可供選擇,最知名的是RabbitMQ & Kafka。建議從RabbitMQ開始學習。

18. 搜尋引擎

隨著應用程式規模的增長,簡單的查詢已經無法滿足要求。這個時候,你需要用到搜尋引擎。同樣有多種選擇,每一種有自己的特點。

19. 學習使用Docker(容器)

Docker可以為你的開發提供巨大的便利。它可以讓你的開發環境與生產環境保持一致,可以讓你的系統保持乾凈,可以加速你的編碼,可以測試部署。Docker的好處,請自行google。從現在開始,學習Docker。

20. Web伺服器的知識

到了這個時候,你可能已經處理過伺服器相關的問題。這一步驟主要是瞭解不同的伺服器之間的差異,侷限,以及不同的調優方法。

21. 學習Web Sockets

雖然不是必須,但是具備Web Sockets的技能是有好處的。學習編寫實時的web應用。可以在部落格應用中,實現即時更新blog串列。

22. 學習GraphQL

學習GraphQl的APIs。瞭解它與REST的不同,然後為什麼它被稱之為REST 2.0。

23. 研究Graph資料庫

Graph模型具備非常好的靈活性——在處理資料間的關係的時候。Graph資料庫提供高速&高效的存取以及查詢。學習瞭解Neo4j或者OrientDB。

24. 不停探索

在你的學習以及實踐過程中,肯定會碰到路線圖裡沒有提及的東西。你只需要保持開放以及饑渴去學習新的東西。

時刻謹記,學習的關鍵是實踐。多動手!剛開始的時候,你可能會感覺不大好,隨著你的堅持以及時間的推移,你會變得越來越好。

英文原文:https://ogmcsrgk5.qnssl.com/vcdn/1/%E6%8E%A8%E9%80%81%E6%96%87%E7%AB%A0%E9%95%BF%E5%9B%BE/201804/modern-backend-developer-in-2018-6b3f7b5f8b9.png
譯者:rApeNB

《Python人工智慧和全棧開發》2018年07月23日即將在北京開課,120天衝擊Python年薪30萬,改變速約~~~~

*宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。

– END –


更多Python好文請點選【閱讀原文】哦

↓↓↓

贊(0)

分享創造快樂