V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wayn111
V2EX  ›  分享发现

怎样成为优秀的后端工程师

  •  
  •   wayn111 · 354 天前 · 1712 次点击
    这是一个创建于 354 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本文翻译自国外论坛 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 上的个人项目

    使用您学到的技能创建个人项目将帮助您更深入地了解它。学习框架 /技术堆栈不同于通过组合所有技术堆栈来构建实际应用程序。您可能会遇到错误,并有机会了解并修复此类错误。它还将使您随时了解最新技术。继续开发个人项目并在您的 LinkedIn 个人资料和简历中提及它们,这有助于招聘经理了解您的编码标准和技术技能。

    说到 GitHub 博主就有话要说了,作为开源时代的参与者,个人项目能提升自我价值,深度参与开源世界,也有助于他人了解自己。这里推荐一波博主的开源项目😁,感兴趣的朋友关注博主,点个 Star:

    第 1 条附言  ·  353 天前
    有兴趣的可以关注博主公众号 [waynblog] 每周分享技术干货、开源项目、实战经验、高效开发工具等,加博主微信一起讨论。
    2 条回复    2023-05-11 14:24:51 +08:00
    wayn111
        1
    wayn111  
    OP
       353 天前
    有兴趣的可以关注博主公众号 [waynblog] 每周分享技术干货、开源项目、实战经验、高效开发工具等,加博主微信一起讨论。
    sencat31
        2
    sencat31  
       352 天前
    使用山药或者幻龙
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1098 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:19 · PVG 07:19 · LAX 16:19 · JFK 19:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.