后端開(kāi)發(fā)和數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā)最全總結(jié),詳細(xì)對(duì)比!
我自己在畢業(yè)的前 2 年,其實(shí)都是做的后端業(yè)務(wù)開(kāi)發(fā),后來(lái)才轉(zhuǎn)到了數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā),結(jié)合我自己的實(shí)際經(jīng)歷,跟大家聊一聊這兩種不同類型的崗位都有什么區(qū)別。我會(huì)分別從編程語(yǔ)言、難易程度、工作流程、市場(chǎng)就業(yè)、薪資情況、穩(wěn)定性方面進(jìn)行全方位對(duì)比,最后也會(huì)對(duì)兩種方向的選擇給出自己的建議。
編程語(yǔ)言
我們常說(shuō)的后端開(kāi)發(fā),主要是實(shí)現(xiàn)服務(wù)端的業(yè)務(wù)流程,并且對(duì)前端的增刪改查請(qǐng)求進(jìn)行正確的響應(yīng),當(dāng)然也需要保證后端服務(wù)的高可用、高并發(fā)等特性。
后端開(kāi)發(fā)也比較注重開(kāi)發(fā)效率,因?yàn)楫a(chǎn)品經(jīng)理的需求有可能是快速變化的,需要后端開(kāi)發(fā)人員進(jìn)行快速響應(yīng),協(xié)助快速上線產(chǎn)品,不斷試錯(cuò)迭代。
后端開(kāi)發(fā)常用的語(yǔ)言一般都是帶 GC 的自動(dòng)內(nèi)存管理的語(yǔ)言,這類語(yǔ)言將程序員從繁瑣的內(nèi)存管理中釋放出來(lái),讓其更加專注于實(shí)現(xiàn)業(yè)務(wù)邏輯,常用的有 PHP、Java、Go、Python、Ruby 等等。
當(dāng)然這些語(yǔ)言其實(shí)也有對(duì)應(yīng)的框架,幫助快速去構(gòu)建業(yè)務(wù)流程,比如 Java 的 Spring 系列、PHP 的 Laravel、Python 的 Django 等等。
數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā),注重的是性能、數(shù)據(jù)安全、分布式、可擴(kuò)展等等,數(shù)據(jù)庫(kù)性能問(wèn)題是一個(gè)經(jīng)久不衰的話題,有各種各樣的性能評(píng)測(cè)榜單,比如 TPCH、TPCC、TPCDS、ClickBench 等等。
所以在編程語(yǔ)言的選擇上,以不帶 GC 的編程語(yǔ)言居多,C、C++ 占了大多數(shù),因?yàn)檫@類編程語(yǔ)言性能高,沒(méi)有自動(dòng)垃圾回收帶來(lái)的性能抖動(dòng)。目前國(guó)內(nèi)的數(shù)據(jù)庫(kù)內(nèi)核,基本上分為了兩個(gè)系列,一個(gè)是魔改 Mysql,Mysql 是 C++ 寫(xiě)的,另一個(gè)是魔改 Postgres,而 pg 則是 C 語(yǔ)言寫(xiě)的。
當(dāng)然近些年來(lái) Rust 的發(fā)展非常迅猛,在系統(tǒng)級(jí)編程領(lǐng)域也有了很多的應(yīng)用,很多新興的數(shù)據(jù)庫(kù)都陸續(xù)采用了 Rust。
難易程度
后端開(kāi)發(fā)的難度,一是主要體現(xiàn)在對(duì)業(yè)務(wù)邏輯本身的理解上,因?yàn)橛械臉I(yè)務(wù)流程冗長(zhǎng),繁瑣,理解起來(lái)其實(shí)并不是特別的容易;二是體現(xiàn)在對(duì)系統(tǒng)本身的高可用、高并發(fā)等方面,需要有一定的系統(tǒng)設(shè)計(jì)能力。
數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā)的難度,主要體現(xiàn)在對(duì)數(shù)據(jù)庫(kù)內(nèi)核本身的學(xué)習(xí)和理解之上,因?yàn)閿?shù)據(jù)庫(kù)是一個(gè)非常復(fù)雜的系統(tǒng),涉及到非常多的組件,比如解析器、執(zhí)行器、事務(wù)、存儲(chǔ)引擎、緩存、分布式等等。
比如常見(jiàn)的 Postgres,發(fā)展了接近 30 年,是成百上千位世界上最頂級(jí)的程序員精心維護(hù)的項(xiàng)目,目前的代碼量在 100w 行左右,注釋都有 30w 行,所以不太可能在短時(shí)間內(nèi)完全理解,有時(shí)候甚至花個(gè)兩三年的時(shí)間,也只是剛剛?cè)腴T(mén)。
想要學(xué)習(xí)一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)系統(tǒng)就已經(jīng)非常復(fù)雜了,如果還要在其之上去做一些功能開(kāi)發(fā)、性能優(yōu)化,則難度會(huì)繼續(xù)提升。
所以后端開(kāi)發(fā)和數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā)各有各的難度,總體來(lái)說(shuō)的話應(yīng)該是數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā)更難一點(diǎn),學(xué)習(xí)上手的周期也會(huì)更長(zhǎng)。
工作流程
后端開(kāi)發(fā)的工作流程,基本上是產(chǎn)品經(jīng)理提出需求,然后后端開(kāi)發(fā)人員進(jìn)行開(kāi)發(fā)之前的需求對(duì)齊、調(diào)研、接口設(shè)計(jì),然后是編碼、文檔撰寫(xiě)、和前端聯(lián)調(diào)對(duì)接,然后是到測(cè)試環(huán)節(jié),有專門(mén)的測(cè)試人員對(duì)需求進(jìn)行功能性測(cè)試,如果發(fā)現(xiàn) bug 則需要修復(fù),然后是需求完成并上線。
后端開(kāi)發(fā)的流程有時(shí)候會(huì)比較繁瑣,因?yàn)樯婕暗降纳舷掠伪容^多,比如產(chǎn)品經(jīng)理、測(cè)試、其他業(yè)務(wù)部門(mén)、甚至運(yùn)營(yíng)等等,可能會(huì)花費(fèi)很多的時(shí)間在開(kāi)會(huì)上,特別是在大廠這種情況更為突出。
而數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā),雖然上下游的需求方并沒(méi)有那么多,但是開(kāi)發(fā)的流程可能會(huì)非常長(zhǎng),如果一個(gè)需求比較大的話,則更是由一個(gè)團(tuán)隊(duì)來(lái)持續(xù)推進(jìn)開(kāi)發(fā)。數(shù)據(jù)庫(kù)內(nèi)核的需求一般來(lái)自使用者、業(yè)務(wù)場(chǎng)景、或者是老板的想法等等,產(chǎn)品經(jīng)理在其中起到的作用比較小,像一些初創(chuàng)公司,甚至沒(méi)有專門(mén)的產(chǎn)品經(jīng)理。
內(nèi)核開(kāi)發(fā)其實(shí)是花了更多的時(shí)間聚焦在功能開(kāi)發(fā)本身,并且開(kāi)發(fā)完成后,測(cè)試的工作也會(huì)非常漫長(zhǎng),往往需要自己編寫(xiě)單元測(cè)試,通過(guò)回歸測(cè)試,混沌測(cè)試等一系列流程,最終才能夠上線。
市場(chǎng)就業(yè)
在工作機(jī)會(huì)方面,應(yīng)該是后端開(kāi)發(fā)要多于數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā)崗位的,這其實(shí)比較明顯,目前國(guó)內(nèi)搞數(shù)據(jù)庫(kù)的公司大大小小有兩三百家,但有招聘需求的估計(jì)并不是很多,當(dāng)然一些大廠有內(nèi)部的自研數(shù)據(jù)庫(kù)服務(wù),所有也會(huì)有一些相關(guān)的招聘需求 ,比如字節(jié)、阿里、華為、騰訊等等。
后端開(kāi)發(fā)的崗位相對(duì)來(lái)說(shuō)是更多的,但是人也更多,因?yàn)槠溟T(mén)檻更低,競(jìng)爭(zhēng)也比較激烈。目前的就業(yè)環(huán)境總體來(lái)說(shuō)也比不上前幾年,僧多粥少,面試的難度較大,找不到工作的人還是挺多的。
薪資情況
薪資情況其實(shí)并不太好說(shuō),受各方面的影響因素其實(shí)是比較大的,這里只能給出一個(gè)預(yù)估給大家參考。
我們就以校招的薪資來(lái)作為一個(gè)基準(zhǔn),對(duì)于后端開(kāi)發(fā)來(lái)說(shuō),大廠的薪資應(yīng)該是比較有代表性了,目前大廠后端開(kāi)發(fā),校招的薪資區(qū)間大概在 20k-25k 左右,可能會(huì)受到學(xué)歷、實(shí)習(xí)經(jīng)歷、具體部門(mén)等諸多因素的影響,但大致是這個(gè)區(qū)間。
數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā),在 2023 年,本科畢業(yè)的薪資大概是 25k-30k 左右,如果是碩士學(xué)歷,則有可能更高。
穩(wěn)定性
兩種類型的崗位其實(shí)都有各自的不穩(wěn)定因素。
后端開(kāi)發(fā)可能是需要面臨如何應(yīng)對(duì)年輕人的沖擊,如何應(yīng)對(duì)大家常說(shuō)的 35 歲危機(jī),并且面臨日益嚴(yán)峻的就業(yè)環(huán)境,其實(shí)壓力是非常大的,一方面不得不學(xué)習(xí)新的技術(shù),拼了命去卷算法、八股文,但是在日常工作中可能又根本用不上,陷入面試造火箭工作擰螺絲的窘境。
數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā),主要是就業(yè)面很窄,能夠選擇的跳槽的機(jī)會(huì)是有限的,學(xué)習(xí)的周期又很長(zhǎng),非常容易中途被一些其他的因素打斷,導(dǎo)致半途而廢。但是只要在數(shù)據(jù)庫(kù)內(nèi)核方面積累了足夠的經(jīng)驗(yàn),那么你的技術(shù)護(hù)城河其實(shí)就打造出來(lái)了,不那么容易被替代,像我們公司,30 多歲不僅不會(huì)擔(dān)心被裁員,甚至是團(tuán)隊(duì)不可或缺的中堅(jiān)力量。
并且,從數(shù)據(jù)庫(kù)內(nèi)核想要轉(zhuǎn)到其他的方向,比如分布式存儲(chǔ),甚至后端開(kāi)發(fā),應(yīng)該比后端開(kāi)發(fā)轉(zhuǎn)到數(shù)據(jù)庫(kù)內(nèi)核要容易得多。
如何選擇
結(jié)合前面我說(shuō)的一些對(duì)比,其實(shí)大家對(duì)于如何選擇應(yīng)該也有自己的打算了,我覺(jué)得還是需要結(jié)合自己的興趣,以及技術(shù)能力等情況做出自己的選擇。
對(duì)技術(shù)有一定追求的,并且想要一直在技術(shù)這個(gè)領(lǐng)域深耕的,我覺(jué)得數(shù)據(jù)庫(kù)內(nèi)核開(kāi)發(fā)是一個(gè)不錯(cuò)的方向。如果想要求穩(wěn),只是為了能夠有一份工作,然后持續(xù)的在互聯(lián)網(wǎng)行業(yè)賺點(diǎn)錢(qián)糊口,那么可以選擇后端開(kāi)發(fā)。
還有的同學(xué)是目前是后端開(kāi)發(fā),但是想要轉(zhuǎn)入到數(shù)據(jù)庫(kù)內(nèi)核的,這種其實(shí)也沒(méi)有什么問(wèn)題,多嘗試自己感興趣的方向總是好的。不至于溫水煮青蛙,一直待在自己的舒適圈里,不尋求任何變化,可能就不會(huì)有什么進(jìn)步。