六星教育:程序員出現(xiàn)35歲危機的核心實質(zhì)是什么?

程序員出現(xiàn)35歲危機的核心實質(zhì)是什么?分享一個六星教育認為比較核心的原因:
技術(shù)的發(fā)展速度超過了程序員的學習速度。

用幾個例子支撐該觀點。
例如,在過去一段時間里,高并發(fā)的后臺服務離不開對數(shù)據(jù)庫做分庫分表。原因很簡單:單個數(shù)據(jù)庫節(jié)點難以承受高 QPS。
分庫分表時,后端程序員需制定合適的哈希策略,防止數(shù)據(jù)傾斜;實現(xiàn)分布式事務框架,確??缥锢韼斓膶懖僮骶邆湓有?;制定平滑遷移策略,以確保擴容數(shù)據(jù)庫節(jié)點時數(shù)據(jù)遷移不影響在線業(yè)務。
分庫分表是不是聽起來就很復雜?
總之,后端程序員需要具備一定的工程經(jīng)驗,才能正確實施分庫分表。
結(jié)果,分布式數(shù)據(jù)庫直接消除了分庫分表的需求,自動解決上述問題。
這也帶來了一個尷尬的問題:當一個擅長分庫分表的程序員帶著經(jīng)驗加入一個使用了分布式數(shù)據(jù)庫的新項目時,他會發(fā)現(xiàn)這個經(jīng)驗難以發(fā)揮作用。
究其原因,是技術(shù)的迭代速度超過了程序員的學習速度。程序員容易學著學著發(fā)現(xiàn),所學的技術(shù)已經(jīng)過時了。
再例如,在過去一段時間里,寫網(wǎng)頁意味著用 php(或其他模版方案) + jquery。但現(xiàn)在,nodejs + wepback 給前端開發(fā)的工作模式帶來了巨大的改變?,F(xiàn)在,開發(fā)前端意味著學習:webpack / rollup、typescript、vue / react、 scss 等等。當前端涉及 ssr 或 bff 等更高階的架構(gòu)時,開發(fā)還需要學習 nodejs 以及后臺知識。
這也帶來一個尷尬的問題:當一個熟悉過去模式的前端開發(fā)者加入到新的團隊時,他很可能無法適應。
這不是一個架空的問題,而是真實發(fā)生的問題。一些 5 年以上的老項目至今都在使用模版渲染 + jquery 構(gòu)建前端。而維護這些老項目的程序員多半是主職后端,半兼職前端。他們熟悉了模版 + jquery 的模式。他們學習新的前端開發(fā)模式是有一定成本的:原來只是做一個 html 靜態(tài)資源渲染 + 后臺轉(zhuǎn)發(fā),現(xiàn)在要學一大堆前端編譯構(gòu)建 + 獨立部署。
這也是因為技術(shù)的發(fā)展速度超過了程序員的學習速度。程序員可能學著學著,發(fā)現(xiàn)原來的知識體系已經(jīng)不適用了。
當下,技術(shù)仍在持續(xù)發(fā)展。最近 AI 輔助編程(Copilot),甚至 AI 自動編程(HuggingGPT 項目)取得了階段性成果,且仍在持續(xù)發(fā)展。在三五年以后,程序員所需要的技能仍會改變。
技術(shù)是一直在變化進步的,且進步的速度很快,超過了程序員學習的速度。有時候,程序員會拘泥于具體的工程實現(xiàn)技術(shù)棧,「吹捧」一兩項技術(shù)多么強大。結(jié)果是,這些使用具體技術(shù)棧的經(jīng)驗,會因技術(shù)發(fā)展而被慢慢淘汰。
比如,我記得前幾年后端面試流行考「百萬并發(fā)架構(gòu)」:Kafka + Redis + MySQL 分庫分表,還喜歡考有關中間件的底層原理。但隨著云技術(shù)越來越成熟,現(xiàn)在彈性伸縮 + 緩存 + 分布式數(shù)據(jù)庫的架構(gòu)已經(jīng)能應對很多并發(fā)場景。一些中間件的設計也從之前多個有狀態(tài)的計算節(jié)點架構(gòu),演變成了更清晰的存算分離架構(gòu)。
扯了這么多,我不是想說明程序員不該學習技術(shù),也不是想說明新的技術(shù)就一定比老的技術(shù)好,而是想說明:在考慮職業(yè)生涯發(fā)展時,程序員不能只拘泥于某幾個具體的技術(shù)棧。因為技術(shù)一直在發(fā)展,若程序員拘泥于某幾個技術(shù)棧,那他容易被淘汰。
在考慮職業(yè)生涯規(guī)劃,以應對 35 歲危機時,程序員應該意識到:自己必須鍛煉特定技術(shù)棧以外的能力。
比如,程序員可以鍛煉需求理解、系統(tǒng)設計的能力。隨著時代發(fā)展,雖然某些技術(shù)棧會改變,甚至被淘汰,但是理解需求并應用技術(shù)解決需求的能力,是持續(xù)被程序員需要的。
比如,程序員可以鍛煉項目管理的能力。對于一些中大型項目,項目管理的能力和技術(shù)能力同樣重要。一些糟糕的存量系統(tǒng),正是因人力不匹配、優(yōu)先級不盡合理、排期不合理導致的。程序員在平日里吐槽項目決策時,可以順手想想:換作是我,我該如何管好這個項目?
比如,程序員可以鍛煉良好的技術(shù)感知。應對不斷發(fā)展的新技術(shù),程序員無需掌握其所有細節(jié)。程序員只要結(jié)合工程經(jīng)驗,客觀調(diào)研并回答一些關鍵問題:該技術(shù)解決了什么問題?怎么解決的?可以解決么?就可以對某項新技術(shù)有很好的判斷。良好的技術(shù)感知,可以輔助程序員做出更好的架構(gòu)決策。
甚至,不當程序員了!很多人加入程序員行業(yè)僅僅是看上了薪資,并不對技術(shù)感興趣??膳d趣才是支撐一個人發(fā)展職業(yè)的最好動力。若知道技術(shù)并非自己的興趣,那工作之余完全應該發(fā)展自己的興趣愛好。況且,計算機技術(shù)是非常實用的,做程序員也不算蹉跎歲月。當程序員的經(jīng)驗,也許會在意想不到的時候,發(fā)揮作用。
總之,除了掌握具體的技術(shù)棧,程序員也需要注重鍛煉技術(shù)以外的能力。積跬步以至千里,從當下開始點滴積累,程序員才能更充分地應對「35 歲危機」。
各位技術(shù)人,共勉!
以上就是本次分享的全部內(nèi)容,想學習更多編程技巧,歡迎持續(xù)關注六星教育!