<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>职场 on roseduan</title><link>https://blog.roseduan.cn/tags/%E8%81%8C%E5%9C%BA/</link><description>Recent content in 职场 on roseduan</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 02 Apr 2024 10:51:56 +0800</lastBuildDate><atom:link href="https://blog.roseduan.cn/tags/%E8%81%8C%E5%9C%BA/index.xml" rel="self" type="application/rss+xml"/><item><title>后端开发和数据库内核开发最全总结，详细对比！</title><link>https://blog.roseduan.cn/p/%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91%E5%92%8C%E6%95%B0%E6%8D%AE%E5%BA%93%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91%E6%9C%80%E5%85%A8%E6%80%BB%E7%BB%93%E8%AF%A6%E7%BB%86%E5%AF%B9%E6%AF%94/</link><pubDate>Tue, 02 Apr 2024 10:51:56 +0800</pubDate><guid>https://blog.roseduan.cn/p/%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91%E5%92%8C%E6%95%B0%E6%8D%AE%E5%BA%93%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91%E6%9C%80%E5%85%A8%E6%80%BB%E7%BB%93%E8%AF%A6%E7%BB%86%E5%AF%B9%E6%AF%94/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文在 B 站有对应的视频，视频中有更详细的讲解，求个三连~
&lt;a class="link" href="https://www.bilibili.com/video/BV13J4m157K5" target="_blank" rel="noopener"
&gt;https://www.bilibili.com/video/BV13J4m157K5&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我自己在毕业的前 2 年，其实都是做的后端业务开发，后来才转到了数据库内核开发，结合我自己的实际经历，跟大家聊一聊这两种不同类型的岗位都有什么区别。
我会分别从编程语言、难易程度、工作流程、市场就业、薪资情况、稳定性方面进行全方位对比，最后也会对两种方向的选择给出自己的建议。&lt;/p&gt;
&lt;h2 id="编程语言"&gt;编程语言
&lt;/h2&gt;&lt;p&gt;我们常说的后端开发，主要是实现服务端的业务流程，并且对前端的增删改查请求进行正确的响应，当然也需要保证后端服务的高可用、高并发等特性。&lt;/p&gt;
&lt;p&gt;后端开发也比较注重开发效率，因为产品经理的需求有可能是快速变化的，需要后端开发人员进行快速响应，协助快速上线产品，不断试错迭代。&lt;/p&gt;
&lt;p&gt;后端开发常用的语言一般都是带 GC 的自动内存管理的语言，这类语言将程序员从繁琐的内存管理中释放出来，让其更加专注于实现业务逻辑，常用的有 PHP、Java、Go、Python、Ruby 等等。&lt;/p&gt;
&lt;p&gt;当然这些语言其实也有对应的框架，帮助快速去构建业务流程，比如 Java 的 Spring 系列、PHP 的 Laravel、Python 的 Django 等等。&lt;/p&gt;
&lt;p&gt;数据库内核开发，注重的是性能、数据安全、分布式、可扩展等等，数据库性能问题是一个经久不衰的话题，有各种各样的性能评测榜单，比如 TPCH、TPCC、TPCDS、ClickBench 等等。&lt;/p&gt;
&lt;p&gt;所以在编程语言的选择上，以不带 GC 的编程语言居多，C、C++ 占了大多数，因为这类编程语言性能高，没有自动垃圾回收带来的性能抖动。目前国内的数据库内核，基本上分为了两个系列，一个是魔改 Mysql，Mysql 是 C++ 写的，另一个是魔改 Postgres，而 pg 则是 C 语言写的。&lt;/p&gt;
&lt;p&gt;当然近些年来 Rust 的发展非常迅猛，在系统级编程领域也有了很多的应用，很多新兴的数据库都陆续采用了 Rust。&lt;/p&gt;
&lt;h2 id="难易程度"&gt;难易程度
&lt;/h2&gt;&lt;p&gt;后端开发的难度，一是主要体现在对业务逻辑本身的理解上，因为有的业务流程冗长，繁琐，理解起来其实并不是特别的容易；二是体现在对系统本身的高可用、高并发等方面，需要有一定的系统设计能力。&lt;/p&gt;
&lt;p&gt;数据库内核开发的难度，主要体现在对数据库内核本身的学习和理解之上，因为数据库是一个非常复杂的系统，涉及到非常多的组件，比如解析器、执行器、事务、存储引擎、缓存、分布式等等。&lt;/p&gt;
&lt;p&gt;比如常见的 Postgres，发展了接近 30 年，是成百上千位世界上最顶级的程序员精心维护的项目，目前的代码量在 100w 行左右，注释都有 30w 行，所以不太可能在短时间内完全理解，有时候甚至花个两三年的时间，也只是刚刚入门。&lt;/p&gt;
&lt;p&gt;想要学习一个现有的数据库系统就已经非常复杂了，如果还要在其之上去做一些功能开发、性能优化，则难度会继续提升。&lt;/p&gt;
&lt;p&gt;所以后端开发和数据库内核开发各有各的难度，总体来说的话应该是数据库内核开发更难一点，学习上手的周期也会更长。&lt;/p&gt;
&lt;h2 id="工作流程"&gt;工作流程
&lt;/h2&gt;&lt;p&gt;后端开发的工作流程，基本上是产品经理提出需求，然后后端开发人员进行开发之前的需求对齐、调研、接口设计，然后是编码、文档撰写、和前端联调对接，然后是到测试环节，有专门的测试人员对需求进行功能性测试，如果发现 bug 则需要修复，然后是需求完成并上线。&lt;/p&gt;
&lt;p&gt;后端开发的流程有时候会比较繁琐，因为涉及到的上下游比较多，比如产品经理、测试、其他业务部门、甚至运营等等，可能会花费很多的时间在开会上，特别是在大厂这种情况更为突出。&lt;/p&gt;
&lt;p&gt;而数据库内核开发，虽然上下游的需求方并没有那么多，但是开发的流程可能会非常长，如果一个需求比较大的话，则更是由一个团队来持续推进开发。数据库内核的需求一般来自使用者、业务场景、或者是老板的想法等等，产品经理在其中起到的作用比较小，像一些初创公司，甚至没有专门的产品经理。&lt;/p&gt;
&lt;p&gt;内核开发其实是花了更多的时间聚焦在功能开发本身，并且开发完成后，测试的工作也会非常漫长，往往需要自己编写单元测试，通过回归测试，混沌测试等一系列流程，最终才能够上线。&lt;/p&gt;
&lt;h2 id="市场就业"&gt;市场就业
&lt;/h2&gt;&lt;p&gt;在工作机会方面，应该是后端开发要多于数据库内核开发岗位的，这其实比较明显，目前国内搞数据库的公司大大小小有两三百家，但有招聘需求的估计并不是很多，当然一些大厂有内部的自研数据库服务，所有也会有一些相关的招聘需求 ，比如字节、阿里、华为、腾讯等等。&lt;/p&gt;
&lt;p&gt;后端开发的岗位相对来说是更多的，但是人也更多，因为其门槛更低，竞争也比较激烈。目前的就业环境总体来说也比不上前几年，僧多粥少，面试的难度较大，找不到工作的人还是挺多的。&lt;/p&gt;
&lt;h2 id="薪资情况"&gt;薪资情况
&lt;/h2&gt;&lt;p&gt;薪资情况其实并不太好说，受各方面的影响因素其实是比较大的，这里只能给出一个预估给大家参考。&lt;/p&gt;
&lt;p&gt;我们就以校招的薪资来作为一个基准，对于后端开发来说，大厂的薪资应该是比较有代表性了，目前大厂后端开发，校招的薪资区间大概在 20k-25k 左右，可能会受到学历、实习经历、具体部门等诸多因素的影响，但大致是这个区间。&lt;/p&gt;
&lt;p&gt;数据库内核开发，在 2023 年，本科毕业的薪资大概是 25k-30k 左右，如果是硕士学历，则有可能更高。&lt;/p&gt;
&lt;h2 id="稳定性"&gt;稳定性
&lt;/h2&gt;&lt;p&gt;两种类型的岗位其实都有各自的不稳定因素。&lt;/p&gt;
&lt;p&gt;后端开发可能是需要面临如何应对年轻人的冲击，如何应对大家常说的 35 岁危机，并且面临日益严峻的就业环境，其实压力是非常大的，一方面不得不学习新的技术，拼了命去卷算法、八股文，但是在日常工作中可能又根本用不上，陷入面试造火箭工作拧螺丝的窘境。&lt;/p&gt;
&lt;p&gt;数据库内核开发，主要是就业面很窄，能够选择的跳槽的机会是有限的，学习的周期又很长，非常容易中途被一些其他的因素打断，导致半途而废。
但是只要在数据库内核方面积累了足够的经验，那么你的技术护城河其实就打造出来了，不那么容易被替代，像我们公司，30 多岁不仅不会担心被裁员，甚至是团队不可或缺的中坚力量。&lt;/p&gt;
&lt;p&gt;并且，从数据库内核想要转到其他的方向，比如分布式存储，甚至后端开发，应该比后端开发转到数据库内核要容易得多。&lt;/p&gt;
&lt;h2 id="如何选择"&gt;如何选择
&lt;/h2&gt;&lt;p&gt;结合前面我说的一些对比，其实大家对于如何选择应该也有自己的打算了，我觉得还是需要结合自己的兴趣，以及技术能力等情况做出自己的选择。&lt;/p&gt;
&lt;p&gt;对技术有一定追求的，并且想要一直在技术这个领域深耕的，我觉得数据库内核开发是一个不错的方向。如果想要求稳，只是为了能够有一份工作，然后持续的在互联网行业赚点钱糊口，那么可以选择后端开发。&lt;/p&gt;
&lt;p&gt;还有的同学是目前是后端开发，但是想要转入到数据库内核的，这种其实也没有什么问题，多尝试自己感兴趣的方向总是好的。不至于温水煮青蛙，一直待在自己的舒适圈里，不寻求任何变化，可能就不会有什么进步。&lt;/p&gt;</description></item></channel></rss>