⑥ - 后端工程师通识指南

  • 📖 该文隶属 程序员:职场关键角色通识宝典

  • ✍️ 作者:哈哥撩编程(视频号同名)
    • 博客专家·全国博客之星第四名
    • 超级个体·COC上海社区主理人
    • 特约讲师·谷歌亚马逊演讲嘉宾
    • 科技博主·极星会首批签约作者

  • 🏆 推荐专栏:
    • 🏅 程序员:职场关键角色通识宝典
    • 🏅 程序员:职场效能必修宝典
    • 🏅 程序员:文心一言指令词宝典
    • 🏅 Python全栈白宝书
    • 🏅 ChatGPT实践指南白宝书
    • 🏅 产品思维训练白宝书
    • 🏅 全域运营实战白宝书
    • 🏅 大前端全栈架构白宝书

文章目录

  • ⭐ 后端工程师的诞生
  • ⭐ 后端工程师做什么
  • ⭐ 后端工程师的工作职责
  • ⭐ 后端工程师的核心技术
  • ⭐ 后端的职业发展与路径

就像是在上一章节介绍的那样,在互联网早期是没有前后端的说法的。技术相对简单,前端和后端的界限并不明显。但随着Web技术的不断发展和用户需求的日益复杂化,前后端分离的架构逐渐成为主流。这种架构将前端负责的用户界面和后端负责的数据处理与逻辑运算分开,使得两者能够更专注于自己的领域,并提高了开发效率。

⭐ 后端工程师的诞生

也是在这样的背景下,后端开发工程师的角色逐渐凸显出来。他们主要负责处理服务器端的逻辑运算、数据处理以及与数据库的交互等工作。随着技术的不断进步和应用场景的不断拓展,后端开发所涉及的技术栈也逐渐丰富和复杂化,包括后端语言、数据库、Web服务器、缓存系统、消息队列等等。

当然了,随着现在的云计算、大数据、人工智能等技术的一个兴起,后端开发工程师所需要承担的责任也就越来越大,一名合格的后端开发工程师的学习成本也是越来越重的,需要不断学习和掌握新的技术,以适应不断变化的市场需求和技术趋势。

⭐ 后端工程师做什么

“后端” 的说法其实就是相对于 “前端” 而言的,正式的称呼应该是 “软件开发” 或者是 “软件研发” 工程师,承担着软件后端开发的工作。如果说 “前端” 处理的是与用户交互的工作,那么 “后端” 处理的就是那些用户无法感知到的服务器端的逻辑运算、数据处理以及与数据库的交互等工作。

除此之外,后端开发工程师还需要负责 后端系统架构设计接口的设计需求功能的实现数据库设计与维护故障排查与系统调试 等等。

  • 后端系统架构设计:搭建后端所需要的支撑服务,以确保这些设计符合业务需求和性能要求。比如说系统的整体结构、模块划分、接口定义等等。
  • 接口的设计:针对不同的业务需求进行相应功能接口的设计,比如接口的协议定义、数据传输格式、正确的响应或者错误的返回状态等等。
  • 功能的实现:就是通过编写高质量的代码,完成具体的业务功能逻辑的实现。

目前在国内排名靠前的编程语言包含有 JavaC语言PythonGO语言PHP 等等。得益于当年阿里对 Java 的推崇,Java 的占比与需求在国内市场一直都是最大的;再比如Golang,出了背靠谷歌这种世界级的互联网大厂之外,字节与米哈游的异军突起也带起了国内对于 Go开发工程师 的市场需求;Python 就更不用说了,人工智能与大模型的飞速发展,更是让 Python 这种脚本性质的胶水语言一度占据编程语言排行榜第一的宝座。

所以,利用这些编程语言去完成对应软件程序的研发任务,就是后端开发工程师们的首要工作。

⭐ 后端工程师的工作职责

知道 “后端开发” 做什么,那么工作职责就清晰了。既然是做开发,就肯定会与产品经理打交道,就必然会参与到 “项目的需求分析与设计” 中去,再前置的话,可能也会参与到 “头脑风暴” 当中去,与产品经理产生第一次思维上的碰撞。

在需求确定之后,后端开发就会展开系统的设计与研发工作,制定产品交付的标准。在研发的过程中,最核心的其实就是研发了,这个过程需要进行代码的研发、单元测试等工作,以保证项目开发的进度和质量,在这一过程中,与后端开发打交道最多的,应该就是测试工程师了,一个与研发工程师相爱相杀的职业角色。

除了写代码之外,后端开发还负责相关的技术文档的撰写。在完成了测试工程师对项目的测试之后,配合产品经理一起完成上线与验收的工作。

需要注意的是,并不是说产品一上线就万事大吉了。也会针对线上出现的一些偶发性生产问题进行及时的响应,以保障系统的稳定运行。这些就是后端研发工程师的主要职责~

⭐ 后端工程师的核心技术

其实单单从 “后端工程师的核心技术” 来拆解的话,其实不是特别的严谨。因为光是主流的编程语言都不下十余种,比如 JavaC语言C++C#PythonGolangPHP.netRuby 等等。

这么多编程语言,都要学习么?并不是,一般情况下,那些掌握了三门以上编程语言的程序员,我们都会认为这是一个大佬。其实这是一个伪命题,如果与这些大佬接触的足够的深、足够的久,就会发现这些大佬掌握多种编程语言背后的逻辑其实就是他们掌握了计算机最根本的知识,也就是 操作系统数据结构计算机网络算法,还有一些 协议 ,这才是最根本的。

编程语言只是一个工具,在什么样的场景下,什么语言最合适就选择什么样的编程语言。如果一个程序员需要保持自己能够快速的接收新的知识,能够不被那么多纷繁复杂的技术所困扰,还是要回归到技术的本质上去,也就是计算机原理。如果基础知识足够的扎实,就可以很快的做出判断。一个优秀的程序员,基础最重要,因为基础不牢,地动山摇。当一个新的技术出现的时候,不要被那个新名词所迷惑,因为这种纷繁复杂的技术名词的背后,都存在着商业诉求在里面。

这些是从编程语言的角度所阐述的一个观点,在实际的开发工作中,也往往需要后端工程师掌握着多种编程框架。比如说使用 Java 的工程师就需要掌握 Spring全家桶Python 的后端开发就需要掌握 DjangoFlask 这两种分别适合大型、小型的 WEB开发框架,即使是作为新人的 Golang也有着自己的框架,GinBeegoEcho等等。其实大家也能看出来昂,每种语言都有自己所对应的必学必会的一些框架。

除了框架之外,还需要熟练使用多种数据库软件。像关系型数据库的 MySQLOracleSQLServerPostgreSQL ,非关系型的 MongoDBRedis ,如果是大数据方向的后端工程师,还需要掌握 HbaseNeo4J这种列存储数据库与图型数据库。

如果是开发的大型项目,随着系统的复杂度上升,为了提高系统的响应速度还需要引入ES、Redis做缓存,消息队列、MQ等中间件确保实现异步通信的可靠消息传输。常见的消息队列包括 RabbitMQKafkaActiveMQRocketMQ,课以满足不同场景下的需求。

在项目开发完成后,版本更新与迭代的过程中,还需要完成 持续集成和持续交付的动作,也就是 CICD。现在不懂没关系,以后学到了就懂了。在持续的版本更和迭代的情况下,持续交付和持续集成也是必须掌握的知识点。比较常用的有 Jenkins、Docker、K8S(Kubernetes)等容器技术,帮助我们进行发布与部署。

项目上线后,随着访问量的日益增加,原有的架构可能无法满足流量增加后的负载。这时候还需要引入分布式系统,所以这就要求后端工程师掌握一些分布式的系统设计、微服务等知识。

同时,为了保证我们系统的稳定,以及对生产环境的故障定位,也需要引入一些追踪的功能。比如说 Prometheus全家桶,除了这些核心组件外,通常也会将 Prometheus 与一些可视化工具(如Grafana)结合使用,可以通过更直观的数据展示和警报通知快速的定位故障。

以上这些就是 后端开发工程师 所涉及到的一些核心的技术,无论是深度还是广度,都是需要花费较多的时间进行技术的打磨的。

⭐ 后端的职业发展与路径

后端开发的职业发展路径是非常具有代表性的,大部分的技术大佬、CTO、技术合伙人几乎都是这么过来的。据不完全统计,大多数互联网的技术侧的高管,都是后端开发出身。从初级、中级到高级,再到资深这个级别的分水岭,选择走管理路线是多数后端工程师的不二选择。

随着这几年一些不好的声音被无限的放大,相信众多小伙伴最关心的就是后端工程师的收入是怎么样的,还有没有必要继续学习后端。

以上海工作3-5年的java开发为例,java的下位和上位差距更大。有的人工作个三年,年薪刚刚突破十万,而有的人已经超过三十万了,高位的差距足足超过了前端研发十万,年薪超过二十万的占比更是有43%。所以,看到这里,大家还会质疑后端开发的前景吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/581742.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows下git提交修改文件名大小写提交无效问题

windows系统不区分大小写,以及git提交忽略大小写,git仓库已存在文件A.js,本地修改a.js一般是没有提交记录的,需要手动copy一份出来A.js,再删除A.js文件提交仓库删除后,再提交修改后的a.js文件。 windows决…

岚图汽车与东软睿驰签署战略合作协议

4月26日,东软睿驰与岚图汽车正式签署战略合作协议,双方将结合在各自领域拥有的产业资源、技术研发和资本运作等优势,聚焦智能化产品和应用,建立长期共赢的战略合作伙伴关系,通过不断探索未来新技术、新产业、新业态和新模式,围绕用户需求共同打造极致的智能出行体验。 图为岚图…

【AIGC调研系列】llama3微调具体案例

Llama3的微调可以通过多种方式进行,具体案例包括: 使用XTuner进行微调,尝试让Llama3具有"它是SmartFlowAI打造的人工智能助手"的自我认知。这涉及到准备自我认知训练数据集,并通过脚本生成数据[2][8]。利用Unsloth和Go…

GD32E103C8T6 封装LQFP-48 GigaDevice(兆易创新) 单片机

GD32E103C8T6 是由GigaDevice(兆易创新)公司生产的一款基于ARM Cortex-M4内核的32位MCU(微控制器)。以下是GD32E103C8T6的一些主要功能和参数介绍: 主要功能: 高性能ARM Cortex-M4内核: 采用120MHz的ARM …

求解素数环问题

注:这里我的代码是以第一位为最大数n为首元素不动的 思路: 首先我们分析问题要以较小规模的样例进行分析,例如n3时 第一步:深入搜索 我们先不管后面怎么样,当前的首要目标是先确定第一个元素的值,可知有…

paddlehub的简单应用

1、下载安装 pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple 报错&#xff1a; Collecting onnx<1.9.0 (from paddle2onnx>0.5.1->paddlehub)Using cached https://pypi.tuna.tsinghua.edu.cn/packages/73/e9/5b953497c0e36df589fc60cc6c6b35…

Java中集合概述(补充ing)

一、集合分类 Java中的集合框架提供了多种类型的集合&#xff0c;主要分为两大类&#xff1a;单列集合&#xff08;只保存单一类型的对象&#xff09;和双列集合&#xff08;保存具有键值对关系的对象&#xff09;。下面对这些集合进行分类介绍&#xff0c;但由于源码分析会涉…

开源相机管理库Aravis例程学习(五)——camera-api

开源相机管理库Aravis例程学习&#xff08;五&#xff09;——camera-api 简介例程代码函数说明arv_camera_get_regionarv_camera_get_pixel_format_as_stringarv_camera_get_pixel_formatARV_PIXEL_FORMAT_BIT_PER_PIXEL 简介 本文针对官方例程中的&#xff1a;03-camera-api…

沉浸式翻译 chrome 插件 Immersive Translate - Translate Website PDF

免费翻译网站&#xff0c;翻译PDF和Epub电子书&#xff0c;双语翻译视频字幕 &#x1f4e3; 网络上口碑爆炸的网站翻译扩展工具【沉浸式翻译】⭐⭐⭐⭐⭐ &#x1f4bb; 功能特点如下&#xff1a; &#x1f4f0; 网站翻译 &#x1f680; 提供双语网站翻译&#xff0c;智能识…

618科技嘉年华!五款极致科技产品,开启智能生活新篇章!

准备好迎接一年一度的618了吗&#xff1f;这不仅仅是一场购物的狂欢&#xff0c;更是一次科技的盛宴&#xff0c;一次智能生活的全新启航。今年&#xff0c;我们将带来五款令人瞩目的极致科技产品&#xff0c;它们将彻底颠覆你对智能生活的认知。从娱乐到工作&#xff0c;这些产…

【Node.js工程师养成计划】之原生node开发web服务器

一、使用node创建http服务器 var http require(http);// 获取到服务器实例对象 var server http.createServer() server.listen(8080, function() {console.log(http://127.0.0.1:8080); })server.on(request, function(req, res){console.log(request);res.write(6666666688…

《微服务设计》读书笔记

此为阅读纽曼《微服务设计》一书后总结的读书笔记&#xff0c;点此处下载PDF文档。 一、微服务的概念 微服务&#xff08;或称微服务架构&#xff09;是一种云原生架构方法&#xff0c;其核心思想在于将单个应用拆分为众多 小型、松散耦合的服务&#xff0c;服务之间均通过网…

百度语音识别的springboot应用

1、pom依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk</artifactId> <version>4.16.18</version> </dependency> 2、测试的demo 创建语音识别应用 百度智能云-管理中心 (baidu.com) 代码中要…

十大USDT交易平台大全XEX交易所

USDT是一种基于比特币区块链网络的加密代币&#xff0c;主要运用于数字货币交易平台&#xff0c;以稳定币为主。USDT的核心价值在于其与真实货币的固定兑换比率1:1&#xff0c;所以被称为Tether。随着加密货币市场的不断壮大&#xff0c;越来越多的交易平台开始支持USDT&#x…

Android 设置头像 - 裁剪及圆形头像

书接上文 Android 设置头像 - 相册拍照&#xff0c;通过相册和照片的设置就可以获取到需要的头像信息&#xff0c;但是在通常情况下&#xff0c;我们还想要实现针对头像的裁剪功能和圆形头像功能。 先上截图&#xff1a; 图像裁剪 通常裁剪可以分为程序自动裁剪和用户选择裁剪…

上位机图像处理和嵌入式模块部署(树莓派4b设置ftp下载)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 作为一个开发板&#xff0c;最好支持ftp下载&#xff0c;这样文件的上传和下载都会比较方便。虽然目前为止&#xff0c;利用mobaxterm和ssh也能实现…

8.11 分析工具 8.14 设计工具

一、分析工具 &#xff08;一&#xff09;结构化分析 1、数据流图&#xff08;DFD&#xff09; &#xff08;1&#xff09;数据流图 从数据传递、加工的角度&#xff0c;以图形刻画系统内的数据运动情况。全面描述系统逻辑模型的工具。通过符号&#xff0c;表示出数据流动、…

C++中的数据结构与算法

随处可见的红黑树 一般会用到[key,value]。 例如github中这个例子&#xff0c;第一个是访问网站&#xff0c;第二个是访问次数&#xff0c;但是这个不是静态的&#xff0c;这有个动态排序&#xff0c;并且当我们需要让相应的访问次数加1的时候&#xff0c;我们用红黑树查找的时…

VS2022 嘿嘿

还是大二的时候就开始用这个&#xff0c;但居然是为了用PB&#xff0c;-_-|| 用了段时间换成了C#&#xff0c;依稀还记得大佬们纠正我的读法&#xff0c;别读C井&#xff0c;应该读C夏普。。。 安装过程其实也没啥&#xff0c;就是关键Key得花时间找&#xff0c;我好不容易搞…

【论文阅读】互连网络的负载平衡路由算法 (GAL, Globally Adaptive Load-balancing 全局自适应负载平衡)

Globally Adaptive Load-balancing 全局自适应负载平衡 GAL: Globally Adaptive Load-balanced routing 全局自适应负载平衡路由 1. GAL on a ring2. GAL on higher dimensional torus3. 实验性能4. 算法稳定性 Stability总结 References Globally Adaptive Load-balancing 全…