怎样成为优秀的后端工程师
本文翻译自国外论坛 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:
waynboot-mall:一套全部开源的微商城项目,包含商城前台、运营后台以及后端接口。
源码地址:https://github.com/wayn111/waynboot-mall
newbee-mall-pro:该项目是 newbee-mall 商城的 pro 版本实现了推荐系统、生产可用的秒杀、优惠卷专区,滑块验证码,支付宝支付,中文分词检索等高级功能。
源码地址:https://github.com/wayn111/newbee-mall-pro
crowd-admin:一个基于 Spring Boot、Shiro、Redis/ehcache、Mybatis 的通用后台权限管理系统。
源码地址:https://github.com/wayn111/crowd-admin
最后感谢大家阅读,希望这篇文章能为你提供价值。公众号【waynblog】每周分享技术干货、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力😘。
版权声明: 本文为 InfoQ 作者【越长大越悲伤】的原创文章。
原文链接:【http://xie.infoq.cn/article/8b140d5151ee342f80c9874a9】。文章转载请联系作者。
评论