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