共計 2200 個字符,預計需要花費 6 分鐘才能閱讀完成。
本文翻譯自國外論壇 medium,原文地址:https://medium.com/@pradeesh-kumar/how-to-become-a-good-backend-engineer-9da75202a104
誰是后端工程師?
本質上,軟件開發有兩個要素:前端和后端。當訪問者登陸網站時,他們會看到 UI 與之交互,即前端。前端與用戶交互,收集輸入,然后將其傳遞給后端進行進一步處理。后端處理從前端收到的請求,并將結果返回給前端,顯示在 UI 中。
前端工程師需要 HTML、CSS、Js、設計、圖形等 UI/UX 開發知識,而后端開發人員需要 Java、Python 和 Javascript 等編程語言以及框架、工具和數據庫的知識。
如何成為一名優秀的后端工程師?
后端開發人員的角色是專注于構建架構等組件,以及編寫與網站、數據庫、消息代理、安全等其他系統交互的代碼。
1. 編程語言
選擇一種編程語言并掌握它。學習編程語言的所有基本庫和框架。Java、Python 和 JS 等編程語言現在很流行。深入了解最基本的編程功能,如基本結構、oops、基本數據容器(如列表、隊列、堆棧、映射 / 字典和線程編程等)。
博主作為一名 Java 開發工程師,當然是推薦大家從 Java 入門啦。學習完了 Java 語言后,在學習 Python、Php、JavaScript 等都是非常 easy 的?。
2. 數據結構與算法
大多數人在最初階段忽略了這一點,后來遭受了損失。永遠不要犯這個錯誤!了解數據結構和算法可以使您的基礎更牢固,并幫助您了解其他大型系統的內部工作方式。學習基本的數據結構和算法,例如堆棧、隊列、鏈表、樹、圖、散列、排序和搜索算法。
數據結構和算法非常重要!數據結構和算法非常重要!數據結構和算法非常重要!(重要的事情說三篇!)
3. 數據庫
后端系統最基本的功能是保存和檢索用戶數據。有幾種類型的數據庫可用于根據需求和領域來持久化數據。學習關系數據庫,如 Postgresql、Mysql 或 Oracle。此外,學習數據庫概念,如規范化、索引、連接、查詢優化、ACID、事務、對象關系映射、縮放等。
如今,由于 NoSQL 的簡單性和擴展能力,大多數項目都使用 NoSQL 而不是 RDBMS。學習一種或多種 NoSql 數據庫,如 MongoDB、Couchbase DB 等。
NoSql 數據庫中流行的還有 Redis,博主這里補一句。
4. 框架和庫
根據您選擇的語言學習流行的框架。Java 最流行的框架是 Spring 框架。有一些流行的庫可用于執行最常見的操作和實用程序。例如,base64 編碼、驗證、字符串實用程序等。不要重新發明輪子。庫可幫助您避免使用大量樣板代碼,并讓您只專注于使用較少代碼的業務邏輯。
5. 容器化
容器化就是將您的軟件代碼與運行代碼所需的操作系統庫和依賴項打包在一起,以創建一個稱為容器的單一輕量級可執行文件,該容器可在任何基礎架構上一致運行。學習 Docker 和 Kubernetes。它們是用于容器化應用程序的最流行的工具。
容器化已經成為了應用程序發布部署的新技術。多學習容器相關的知識才能適應當前技術發展趨勢。
6. 開發運營
DevOps 是當今必備的一項技能。DevOps 就是創建基礎設施,例如計算機、基礎設施、網絡、服務器和數據庫,將它們連接在一起并在基礎設施中運行您的應用程序。
以下是百度對于 DevOps 的說明:
DevOps(Development 和 Operations 的組合詞)是一組過程、方法與系統的統稱,用于促進開發(應用程序 / 軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。
它是一種重視“軟件開發人員(Dev)”和“IT 運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟件交付”和“架構變更”的流程,來使得構建、測試、發布軟件能夠更加地快捷、頻繁和可靠。
它的出現是由于軟件行業日益清晰地認識到:為了按時交付軟件產品和服務,開發和運維工作必須緊密合作。
簡答來說 DevOps 幫助軟件開發部署更加自動化,提升交付效率。
7. 網絡
對網絡的了解使您可以創建有效且安全的通信渠道來在系統之間傳輸數據。學習 Web 服務器、TCP 與 UDP、HTTP 協議、WebSockets、gRPC、TLS、NAT、代理和反向代理以及負載平衡器。
網絡編程相比系統編程而言,博主覺得是更有意思的。在分布式系統中,如果了解網絡編程相關知識,那么對于分布式系統之間如何進行協調通信、實現原理也就更加容易理解。
8. 異步處理
有時用戶不需要立即對輸入數據執行操作。我們可以將輸入排隊等待稍后處理,并在準備就緒后將結果通知給用戶。這種處理稱為異步處理。了解基本的發布者 - 訂閱者模型、隊列和主題、apache active-MQ、Kafka 等。
隊列除了異步處理的作用,還有流量削峰峰、代碼解耦的作用。
9. 安全和加密
隨著網絡攻擊和惡意軟件風險的增加,安全編碼實踐是開發人員必須了解的關鍵。學習和了解最常見的安全風險,例如 SQL 注入、中間人攻擊、身份驗證失敗等。此外,了解如何通過清理輸入數據、傳輸時加密數據和強身份驗證來保護您的應用程序來緩解這些風險和授權。
10. GitHub 上的個人項目
使用您學到的技能創建個人項目將幫助您更深入地了解它。學習框架 / 技術堆棧不同于通過組合所有技術堆棧來構建實際應用程序。您可能會遇到錯誤,并有機會了解并修復此類錯誤。它還將使您隨時了解最新技術。