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