當前位置:
首頁 > 科技 > 人工智慧浪潮下的 Web 開發,程序員該如何上手?

人工智慧浪潮下的 Web 開發,程序員該如何上手?

經歷了網路互聯的 Web 1.0 時代、社交的 Web 2.0 時代、基於移動的 Web 3.0 時代,如今的我們正逐步邁向知識分配的 Web 4.0 時代。與此同時,隨著人工智慧的興起,聊天機器人和會話式 UI 也開始滲透 Web 領域,所以說,現在的 Web 開發已經和幾年前完全不一樣了。

當面對日新月異的技術、錯綜複雜的網站時,新入行的開發者很容迷失方向。以下這篇指南,展示了後端開發的全景、運維的趨勢,希望給從事 Web 開發的程序員們一個清晰的概念,去其糟粕取其精華。

以前,後端的路線圖只是一些平鋪的技術介紹,而無法給出任何有關趨勢的方向。而在這篇文章中,有詳細的後端學習路線圖,可助前行路上的開發者一臂之力。廢話不多說,現在就開始吧。

接下來,我們將一步步來解釋一下這張圖。

開始之前要說明一點,雖然我們在圖中沒有列出 HTML/CSS 的知識,但建議你至少懂得一點,並會寫一些基本的 HTML/CSS。

學一門語言

選擇語言時總是會遇到無數種選擇。我把語言按照類別分開,以便你作出決定。對於剛剛進入後端開發的初學者,我建議選任何一種腳本語言,它們的市場需求都很大,因此你可以迅速進步。如果你有前端知識,Node.js 會很容易,而且工作機會也很多。

如果你已經在從事後端開發,並且會某種腳本語言,我建議你不要再選另一種腳本語言,而是從「函數式」(Functional)或「多重編程」(Multiparadigm)中選擇一種。例如,如果你會 PHP 或 Node.js,那就別再學 Python 或 Ruby,而是嘗試下 Erlang 或 Golang。這樣能開闊你的思維和視野。

練習學到的知識

學習知識的最佳途徑就是練習。選好語言並了解一些基本概念之後,就應該學以致用,用它多做一些小應用。下面是一些建議:

實現一些常用的 bash 命令,例如實現 ls 的功能;

寫個命令從 reddit 的 /r/programming 上以 JSON 格式獲取並保存文章;

寫個命令以 JSON 格式返回目錄結構,例如 jsonify dir-name,返回一個 JSON 文件,內容是 dir-name 下的目錄結構;

寫個命令讀取上一條的 JSON 文件並創建目錄結構;

想一想每天要做的任務,並嘗試自動化。

學習包管理器

理解語言的基礎知識並做了一些簡單的應用後,可以學一下那門語言的包管理器如何使用。包管理器可以幫你在應用中使用第三方庫,還可以把你的庫發布給其他人使用。

如果你選了 PHP,可以學一學 Composer;

選了 Node.js 可以學習 NPM 或 Yarn;

選了 Python 可以學一學 Pip;

選了 Ruby 可以學一學 RubyGems。

不論你選和種語言,都應該去學學相應的包管理器。

標準做法和最佳實踐

每種語言都有標準做法和最佳實踐。學一學你選擇的語言的這些知識。例如, PHP 有 PHP-FIG 和 PSR。Node.js 和其他語言都有許多社區主導的規範。

安全性

務必要讀一讀有關安全性的最佳實踐。閱讀OWASP(https://www.owasp.org/index.php/Main_Page)的規範,理解各種安全問題,以及如何在所選語言中避免這些問題。

練習

現在你已經了解了語言的基本知識、標準做法和最佳實踐、安全信息,以及如何使用包管理器。現在可以去創建一個包,並把它發布給其他人使用了。在這個過程中要時刻遵循你學到的標準和最佳實踐。例如,如果你選了 PHP,你就應當在 Packagist 上發布。選擇了 Node.js,就應該在 Npm 上發布等。

完成這一步之後,可以在 Github 上找一些項目,然後試著建一些 pull request。一些建議:

重構代碼,實現你學到的最佳實踐;

尋找 Bug 並試圖解決;

增加新功能。

學習測試

測試有好幾種類型。要理解這幾種類型的測試,以及每種測試的目的。不過,可以從給你的應用編寫單元測試和集成測試開始。同時,還要理解各種測試的術語,如 mock、stub 等。

實踐

作為練習,可以為你之前的項目寫一些單元測試,特別是給第 6 步做好的那些項目。

還要學習並計算你寫的測試用例的覆蓋率。

學習關係型資料庫

學習如何在關係型資料庫中永久保存數據。在選擇要學習的資料庫之前,要先理解各種資料庫術語,如鍵、索引、正規化、元組等。

學習資料庫有好幾種選擇。不過,學完其中一個資料庫後,再學其他的就會很容易。可以學習 MySQL、MariaDB(是 MySQL 的一個分支,與 MySQL 幾乎完全相同)或 PostgreSQL。建議先從 MySQL 開始。

練習時間

現在可以把所有學到的知識放到一起了。

用學到的所有知識做一個簡單的應用。選一個點子,比如建立一個簡單的博客應用,並實現以下的功能:

用戶賬號 - 註冊和登錄

註冊用戶可以創建博文

用戶可以查看他創建的所有博文

用戶可以刪除博文

用戶只能看到他自己的博文,看不到其他人的

給應用寫單元測試和集成測試

資料庫查詢要使用索引。分析查詢,確保索引被用到了。

學習一個框架

根據項目和語言不同,你可能需要框架,也可能不需要。每種語言都有多個框架供選擇,應當去看看你選擇的語言都有哪些框架,然後選一個關聯最大的。

如果你選的是 PHP,我建議學習 Laravel 或 Symfony,如果需要微型框架的話,可以選擇 Lumen 或 Slim。如果選擇 Node.js,也有多種框架可以選擇,但最流行的就是 Express.js。

練習時間

這一步的練習,可以將你之前在第 10 步創建的應用改成用框架實現。同時要保證移植一切功能,包括測試用例。

學習一種NoSQL資料庫

首先要理解 NoSQL 是什麼,它們與關係型資料庫有何區別,以及為什麼需要 NoSQL。NoSQL 資料庫也有許多種,做一點研究,比較它們的功能和區別。常見的選擇有 MongoDB、Cassandra、RethinkDB 和 Couchbase。如果必須選擇其一,可以用 MongoDB。

緩存

學習如何在應用級別實現緩存。理解如何使用 Redis 或 Memcached,並在第 12 步創建的應用中應用緩存。

創建 RESTful API

理解 REST 並學習 RESTful API。一定要讀一讀 Roy Fielding 的論文中有關 REST 的那部分。確保有人說 REST 只能用於 HTTP API 時你能夠反駁。

學習不同的認證方式

學習各種認證和授權方式。你應該知道它們的含義,它們之間的區別,以及何時該用哪個。

OAuth - 開放認證

Basic認證

Token認證

JWT - JSON Web Tokens

OpenID

消息傳遞

學習消息傳遞機制,理解為何、何時要使用消息傳遞。也有多種選擇,但主流就是RabbitMQ和Kafka。如果只能選擇其一,可以先學習RabbitMQ。

搜索引擎

隨著應用程序變得越來越大,在關係型資料庫或 NoSQL 上的簡單查詢將無法滿足需求,這就必須使用搜索引擎。搜索引擎也有多種選擇,每種都有自己的優缺點。

學習使用 Docker

Docker 可以大幅度降低開發的難度,它能複製與生產環境完全相同的環境,能保證操作系統乾淨,還能讓編碼、測試和部署更快捷。讀者可以自己搜索「Docker 有哪些好處」的答案。在這一步,只需要去學習如何使用 Docker。

Web 伺服器的知識

如果你已學到這裡,那麼在前面的步驟中你一定已經接觸過了伺服器。這一步主要是要找出不同 Web 伺服器之間的區別,了解其限制和不同的配置選項,並理解怎樣編寫應用才能更好地利用這些限制。

學習如何使用 WebSocket

儘管這一步不是必須,但掌握 WebSocket 總會有好處。學習如何利用 WebSocket 編寫實時 Web 應用程序,並用它寫個示例應用。可以在前面完成的博客應用中使用 WebSocket 實現實時更新博文列表。

學習 GraphQL

學習如何用 GraphQL 編寫 API。理解它與 REST 的區別,理解為何它被稱為 REST 2.0。

看看圖資料庫

圖模型能靈活地表示並處理數據之間的關係,而圖資料庫提供了快速、有效的方式來存儲、讀取並查詢圖。學學如何使用 Neo4j 或 OrientDB。

繼續探索

一旦開始學習並練習後,你一定會遇到很多我們沒有覆蓋到的東西。保持開放的心態和健康好學的態度,去學習新東西吧。

記住,關鍵就是要多練習。剛開始可能有些不使用,但很快就會習以為常,時間長了還會覺得越來越好。

在此也推薦作者之前寫的一篇前端開發技術全景文章:https://medium.com/tech-tajawal/modern-frontend-developer-in-2018-4c2072fa2b9c

原文:https://medium.com/tech-tajawal/modern-backend-developer-in-2018-6b3f7b5f8b9

作者:Adnan Ahmed,tajawal 的首席工程師,喜歡 Web 開發、新技術,崇尚簡單,開源的忠實粉絲。

譯者:彎月,責編:屠敏


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

專訪天數智芯核心硬體團隊:從晶元到應用打造完整生態
如何從技術上成功預測比特幣價格?

TAG:CSDN |